00001 // Emacs -*- C++ -*- 00002 #ifndef ANAPHE_AIDA_TUPLEVARIABLEDESCRIPTION 00003 #define ANAPHE_AIDA_TUPLEVARIABLEDESCRIPTION 1 00004 00005 #include "AIDA_Dev/ITupleVariableDescription.h" 00006 #include <map> 00007 #include <vector> 00008 00009 namespace Anaphe { 00010 namespace AIDA_Tuple_native { 00011 00012 class AIDA_TupleVariableDescription : virtual public AIDA::Dev::ITupleVariableDescription { 00013 00014 public: 00016 AIDA_TupleVariableDescription(); 00018 ~AIDA_TupleVariableDescription(); 00019 00021 const std::string& variableName() const; 00022 bool setVariableName( const std::string& name ); 00023 const std::string& variableType() const; 00024 bool setVariableType( const std::string& type ); 00025 const AIDA::Dev::ITupleVariableStatistics& statistics() const; 00026 AIDA::Dev::ITupleVariableStatistics& statistics(); 00027 bool resetStatistics(); 00028 00029 int numberOfVariables() const; 00030 bool setVariableDescription( AIDA::Dev::ITupleVariableDescription* description, 00031 bool passOwnership ); 00032 AIDA::Dev::ITupleVariableDescription* variableDescription( int subVariableIndex ); 00033 const AIDA::Dev::ITupleVariableDescription* variableDescription( int subVariableIndex ) const; 00034 int variableIndex( const std::string& variableName ) const; 00035 00036 private: 00037 std::string m_name; 00038 std::string m_type; 00039 std::vector< std::pair<AIDA::Dev::ITupleVariableDescription*, bool> > m_variableDescriptions; 00040 std::map< std::string, int > m_variableIndices; 00041 AIDA::Dev::ITupleVariableStatistics* m_statistics; 00042 00043 // no copy constructor or assignment operator 00044 AIDA_TupleVariableDescription( const AIDA_TupleVariableDescription& ); 00045 AIDA_TupleVariableDescription& operator=( const AIDA_TupleVariableDescription& ); 00046 }; 00047 00048 } 00049 } 00050 00051 #include "AIDA_TupleVariableDescription.inl" 00052 00053 #endif /* ifndef ANAPHE_AIDA_TUPLEVARIABLEDESCRIPTION */