00001 #ifndef ANAPHE_AIDA_OBJYSTORE_OBJYTUPLE_H 00002 #define ANAPHE_AIDA_OBJYSTORE_OBJYTUPLE_H 00003 00004 #include <map> 00005 #include <vector> 00006 #include <string> 00007 00008 class HepExplorable; 00009 class HepExplorableGenericTags; 00010 template< class T > class HepExplorableAttribute; 00011 00012 namespace AIDA { 00013 namespace Dev { 00014 class ITupleHeader; 00015 class IDevTupleFactory; 00016 } 00017 } 00018 00019 namespace Anaphe { 00020 namespace AIDA_ObjectivityStore { 00021 00022 class ObjyTuple 00023 { 00024 public: 00025 ObjyTuple( HepExplorable& explorable ); 00026 ~ObjyTuple(); 00027 00028 bool writeDescription( const AIDA::Dev::ITupleHeader& header ); 00029 bool readDescription( AIDA::Dev::ITupleHeader& header, 00030 AIDA::Dev::IDevTupleFactory& factory ); 00031 00032 bool bindVariable( int variableIndex ); 00033 bool clearBindings(); 00034 bool writeTupleRow( int rowNumber ); 00035 bool readTupleRow( int rowNumber ); 00036 bool reset(); 00037 void* variableAddress( int variableIndex ); 00038 const void* variableAddress( int variableIndex ) const; 00039 00040 private: 00041 HepExplorable& m_explorable; 00042 HepExplorableGenericTags* m_tagCollection; 00043 int m_currentRowNumber; 00044 std::vector<void*> m_variableAddresses; 00045 std::vector<std::string> m_variableNames; 00046 std::map<unsigned int, HepExplorableAttribute<double>* > m_doubleVariables; 00047 std::map<unsigned int, HepExplorableAttribute<float>* > m_floatVariables; 00048 std::map<unsigned int, HepExplorableAttribute<long>* > m_longVariables; 00049 std::map<unsigned int, HepExplorableAttribute<short>* > m_shortVariables; 00050 std::map<unsigned int, HepExplorableAttribute<char>* > m_charVariables; 00051 }; 00052 00053 } 00054 } 00055 00056 #endif 00057