Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

AIDA_TupleHeader.cpp

Go to the documentation of this file.
00001 #include "AIDA_TupleHeader.h"
00002 #include "AIDA_Dev/ITupleVariableDescription.h"
00003 #include "AIDA/IAnnotation.h"
00004 
00005 static const std::string emptyString = "";
00006 
00007 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::AIDA_TupleHeader():
00008   m_annotation( createAnnotation() ),
00009   m_numberOfRows( 0 ),
00010   m_currentRowNumber( -1 ),
00011   m_pathInStore(emptyString),
00012   m_variableDescriptions(),
00013   m_variableIndices(),
00014   m_options( emptyString )
00015 {}
00016 
00017 
00018 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::~AIDA_TupleHeader()
00019 {
00020   if ( m_annotation ) delete m_annotation;
00021   for ( unsigned int i = 0; i < m_variableDescriptions.size(); ++i ) {
00022     if ( m_variableDescriptions[i].second ) delete m_variableDescriptions[i].first;
00023   }
00024 
00025 }
00026 
00027 
00028 AIDA::IAnnotation&
00029 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::annotation()
00030 {
00031   return *m_annotation;
00032 }
00033 
00034 
00035 const AIDA::IAnnotation&
00036 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::annotation() const
00037 {
00038   return *m_annotation;
00039 }
00040 
00041 
00042 bool
00043 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::setVariableDescription( AIDA::Dev::ITupleVariableDescription* description,
00044                                                                      bool passOwnership )
00045 {
00046   std::map< std::string, int >::iterator iVariable = m_variableIndices.find( description->variableName() );
00047   if ( iVariable != m_variableIndices.end() ) {
00048     return false;
00049   }
00050   else {
00051     m_variableIndices.insert( std::make_pair( description->variableName(), static_cast<int>( m_variableDescriptions.size() ) ) );
00052     m_variableDescriptions.push_back( std::make_pair( description, passOwnership ) );
00053   }
00054   return true;
00055 }
00056 
00057 
00058 AIDA::Dev::ITupleVariableDescription*
00059 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::variableDescription( int subVariableIndex )
00060 {
00061   if ( subVariableIndex < 0 || subVariableIndex >= static_cast<int>(m_variableDescriptions.size()) ) return 0;
00062   return m_variableDescriptions[subVariableIndex].first;
00063 }
00064 
00065 
00066 const AIDA::Dev::ITupleVariableDescription*
00067 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::variableDescription( int subVariableIndex ) const
00068 {
00069   if ( subVariableIndex < 0 || subVariableIndex >= static_cast<int>(m_variableDescriptions.size()) ) return 0;
00070   return m_variableDescriptions[subVariableIndex].first;
00071 }
00072 
00073 
00074 int
00075 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::variableIndex( const std::string& variableName ) const
00076 {
00077   std::map< std::string, int >::const_iterator i = m_variableIndices.find( variableName );
00078   if ( i == m_variableIndices.end() ) return -1;
00079   else return i->second;
00080 }
00081 
00082 
00083 #include <memory>
00084 #include <stdexcept>
00085 #include "AIDA_Dev/IDevAnalysisFactory.h"
00086 #include "AIDA_Dev/IAnnotationFactory.h"
00087 
00088 AIDA::IAnnotation*
00089 Anaphe::AIDA_Tuple_native::AIDA_TupleHeader::createAnnotation()
00090 {
00091   std::auto_ptr<AIDA::Dev::IDevAnalysisFactory> af(dynamic_cast<AIDA::Dev::IDevAnalysisFactory*>(AIDA_createAnalysisFactory() ));
00092   if ( ! af.get() ) throw std::runtime_error( "Could not create an analysis factory" );
00093   AIDA::Dev::IAnnotationFactory* anf = af->annotationFactory();
00094   if ( ! anf ) throw std::runtime_error( "Could not find an annotation factory" );
00095   return anf->createAnnotation();
00096 }

Generated on Tue Feb 18 17:51:19 2003 for AIDA_Tuple_native by doxygen1.2.16