00001 // Emacs -*- C++ -*- 00002 #ifndef ANAPHE_AIDA_TUPLEHEADER 00003 #define ANAPHE_AIDA_TUPLEHEADER 1 00004 00005 #include "AIDA_Dev/ITupleHeader.h" 00006 #include <map> 00007 #include <vector> 00008 00009 namespace Anaphe { 00010 namespace AIDA_Tuple_native { 00011 00012 class AIDA_TupleHeader : virtual public AIDA::Dev::ITupleHeader { 00013 public: 00014 AIDA_TupleHeader(); 00015 ~AIDA_TupleHeader(); 00016 00018 AIDA::IAnnotation& annotation(); 00019 const AIDA::IAnnotation& annotation() const; 00020 bool setVariableDescription( AIDA::Dev::ITupleVariableDescription* description, 00021 bool passOwnership ); 00022 const AIDA::Dev::ITupleVariableDescription* variableDescription( int index ) const; 00023 AIDA::Dev::ITupleVariableDescription* variableDescription( int index ); 00024 int variableIndex( const std::string& variableName ) const; 00025 int numberOfVariables() const; 00026 bool setPathInStore( const std::string& path ); 00027 const std::string& pathInStore() const; 00028 bool setNumberOfRows( int rows ); 00029 int numberOfRows() const; 00030 bool setCurrentRowNumber( int rowNumber ); 00031 int currentRowNumber() const; 00032 bool setOptions( const std::string& options ); 00033 const std::string& options() const; 00034 00035 private: 00036 AIDA::IAnnotation* m_annotation; 00037 int m_numberOfRows; 00038 int m_currentRowNumber; 00039 std::string m_pathInStore; 00040 std::vector< std::pair<AIDA::Dev::ITupleVariableDescription*, bool> > m_variableDescriptions; 00041 std::map< std::string, int > m_variableIndices; 00042 std::string m_options; 00043 00044 // private methods 00045 AIDA::IAnnotation* createAnnotation(); 00046 00047 // No copy constructor or assignment operator 00048 AIDA_TupleHeader( const AIDA_TupleHeader& ); 00049 AIDA_TupleHeader& operator=( const AIDA_TupleHeader& ); 00050 00051 }; 00052 00053 } 00054 } 00055 00056 #include "AIDA_TupleHeader.inl" 00057 00058 #endif /* ifndef ANAPHE_AIDA_TUPLEHEADER */