// file : odb/details/buffer.hxx // author : Boris Kolpackov // copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC // license : GNU GPL v2; see accompanying LICENSE file #ifndef ODB_BUFFER_DETAILS_HXX #define ODB_BUFFER_DETAILS_HXX #include #include #include // std::size_t #include namespace odb { namespace details { class LIBODB_EXPORT basic_buffer_base { public: ~basic_buffer_base () { if (data_) operator delete (data_); } basic_buffer_base () : capacity_ (512) { data_ = operator new (capacity_); } std::size_t capacity () const { return capacity_; } void capacity (std::size_t, std::size_t data_size = 0); protected: void* data_; std::size_t capacity_; }; template class basic_buffer: public basic_buffer_base { public: T* data () { return static_cast (data_); } const T* data () const { return static_cast (data_); } }; typedef basic_buffer buffer; typedef basic_buffer ubuffer; } } #include #endif // ODB_BUFFER_DETAILS_HXX