00001 #ifndef MEMORY_PERSISTENT_TUPLE 00002 #define MEMORY_PERSISTENT_TUPLE 00003 00004 #include <string> 00005 #include <vector> 00006 #include "IMemoryPersistentTuple.h" 00007 00008 namespace AIDA { 00009 namespace Dev { 00010 class IDevTupleFactory; 00011 } 00012 } 00013 00014 namespace Anaphe { 00015 namespace AIDA_MemoryStore { 00016 00017 class MemoryTupleData; 00018 class IMemoryBackingStore; 00019 00020 class MemoryPersistentTuple : virtual public IMemoryPersistentTuple 00021 { 00022 public: 00023 MemoryPersistentTuple( IMemoryBackingStore* store, 00024 AIDA::Dev::IDevTupleFactory& factory, 00025 MemoryTupleData* data, 00026 const std::string& pathInStore ); 00027 ~MemoryPersistentTuple(); 00028 bool setTupleData( MemoryTupleData* data ); 00029 MemoryTupleData* tupleData() const; 00030 bool bindVariable( int variableIndex ); 00031 bool clearBindings(); 00032 bool writeTupleRow( int rowNumber ); 00033 bool readTupleRow( int rowNumber ); 00034 void* variableAddress( int variableIndex ); 00035 const void* variableAddress( int variableIndex ) const; 00036 00037 private: 00038 IMemoryBackingStore* m_store; 00039 AIDA::Dev::IDevTupleFactory& m_factory; 00040 MemoryTupleData* m_tupleData; 00041 std::string m_pathInStore; 00042 int m_currentRow; 00043 std::vector< void* > m_cache; 00044 }; 00045 00046 } 00047 } 00048 #endif