/* ----------------------------------------------------------------------- *//** * * @file dbal.hpp * * @brief Header file for database abstraction layer * @author Florian Schoppmann * *//* ----------------------------------------------------------------------- */ #ifndef MADLIB_DBAL_HPP #define MADLIB_DBAL_HPP #define MADLIB_DEFAULT_EXCEPTION std::runtime_error("Internal error") #define madlib_assert(_cond, _exception) \ do { \ if(!(_cond)) \ throw _exception; \ } while(false) namespace madlib { /** * @brief Database-independent abstractions */ namespace dbal { enum TypeClass { SimpleType, ArrayType, CompositeType }; enum Mutability { Immutable = 0, Mutable }; /** * @brief Memory context to use for allocation (hint only) * * This is only meant to be a hint to the platform-specific parts of the AL. * An implementation may choose to perform an allocation in a specific aggregate * context if the memory needs to live longer than the current function call. * It should be used, e.g., when allocating transition states. */ enum MemoryContext { FunctionContext, AggregateContext }; enum ZeroMemory { DoZero, DoNotZero }; enum OnMemoryAllocationFailure { ReturnNULL, ThrowBadAlloc }; } // namespace dbal } // namespace madlib // Boost integration is non-optional #include "BoostIntegration/BoostIntegration.hpp" // #include "EigenIntegration/EigenIntegration.hpp" #include "Exceptions/NoSolutionFoundException_proto.hpp" #include "ByteStream_proto.hpp" #include "ByteStreamHandleBuf_proto.hpp" #include "DynamicStruct_proto.hpp" #include "OutputStreamBufferBase_proto.hpp" #include "Reference_proto.hpp" #endif // defined(MADLIB_DBAL_HPP)