00001 #include "AIDA_TupleVariableDescription.h" 00002 #include "AIDA_TupleVariableStatistics.h" 00003 00004 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::AIDA_TupleVariableDescription(): 00005 m_name(""), 00006 m_type(""), 00007 m_variableDescriptions(), 00008 m_variableIndices(), 00009 m_statistics( 0 ) 00010 { 00011 m_statistics = new Anaphe::AIDA_Tuple_native::AIDA_TupleVariableStatistics; 00012 } 00013 00014 00015 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::~AIDA_TupleVariableDescription() 00016 { 00017 for ( unsigned int i = 0; i < m_variableDescriptions.size(); ++i ) { 00018 if ( m_variableDescriptions[i].second ) delete m_variableDescriptions[i].first; 00019 } 00020 00021 if ( m_statistics ) delete m_statistics; 00022 } 00023 00024 00025 bool 00026 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::setVariableDescription( AIDA::Dev::ITupleVariableDescription* description, 00027 bool passOwnership ) 00028 { 00029 std::map< std::string, int >::iterator iVariable = m_variableIndices.find( description->variableName() ); 00030 if ( iVariable != m_variableIndices.end() ) { 00031 if ( m_variableDescriptions[ iVariable->second ].second ) delete m_variableDescriptions[ iVariable->second ].first; 00032 m_variableDescriptions[ iVariable->second ].first = description; 00033 m_variableDescriptions[ iVariable->second ].second = passOwnership; 00034 } 00035 else { 00036 m_variableIndices.insert( std::make_pair( description->variableName(), static_cast<int>(m_variableDescriptions.size()) ) ); 00037 m_variableDescriptions.push_back( std::make_pair( description, passOwnership ) ); 00038 } 00039 return true; 00040 } 00041 00042 00043 AIDA::Dev::ITupleVariableDescription* 00044 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::variableDescription( int subVariableIndex ) 00045 { 00046 if ( subVariableIndex < 0 || subVariableIndex >= static_cast<int>(m_variableDescriptions.size()) ) return 0; 00047 return m_variableDescriptions[subVariableIndex].first; 00048 } 00049 00050 00051 const AIDA::Dev::ITupleVariableDescription* 00052 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::variableDescription( int subVariableIndex ) const 00053 { 00054 if ( subVariableIndex < 0 || subVariableIndex >= static_cast<int>(m_variableDescriptions.size()) ) return 0; 00055 return m_variableDescriptions[subVariableIndex].first; 00056 } 00057 00058 00059 int 00060 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::variableIndex( const std::string& variableName ) const 00061 { 00062 std::map< std::string, int >::const_iterator i = m_variableIndices.find( variableName ); 00063 if ( i == m_variableIndices.end() ) return -1; 00064 else return i->second; 00065 } 00066 00067 00068 const AIDA::Dev::ITupleVariableStatistics& 00069 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::statistics() const 00070 { 00071 return *m_statistics; 00072 } 00073 00074 00075 AIDA::Dev::ITupleVariableStatistics& 00076 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::statistics() 00077 { 00078 return *m_statistics; 00079 } 00080 00081 00082 bool 00083 Anaphe::AIDA_Tuple_native::AIDA_TupleVariableDescription::resetStatistics() 00084 { 00085 return m_statistics->reset(); 00086 }