// Author: Eray Ozkural (exa) , (c) 2002 // // Copyright: GNU LGPL: http://www.gnu.org/licenses/lgpl.html #ifndef KDbt_Interface #define KDbt_Interface #include #include #include #include "kbuffer.h" /**A generic wrapper for "database thang" class that abstracts binary streaming operations. *@author Eray Ozkural (exa) */ template class KDbt : public Dbt { public: /* assume streaming operators on TQDataStream TQDataStream & operator>> ( TQDataStream& >>, T &); TQDataStream & operator<< ( TQDataStream& >>, T &); */ KDbt() { } /** construct a Dbt from obj */ KDbt(const T& obj) { set(obj); } // operator Dbt() { // return Dbt(thang.data(), thang.size()); // } /** set "thang" to the contents of obj */ void set(const T& obj) { // TDEBuffer buffer(thang); TQDataStream ds(&thang); ds << obj; // std::cerr << "thang size " << thang.size() << endl; // buffer.close(); // set_data(thang.data()); // set_size(buffer.size()); set_data(thang.data()); set_size(thang.size()); } void get(T& obj) { TQByteArray buffer; buffer.setRawData((char*)get_data(),get_size()); TQDataStream ds(buffer,IO_ReadWrite); ds >> obj; buffer.resetRawData((char*)get_data(),get_size()); } private: /** Internal data */ // TQByteArray thang; TDEBuffer thang; }; #endif