/Users/kmartin/Documents/files/code/cpp/OScpp/COIN-OS/OS/src/OSCommonInterfaces/OSiLReader.cpp

Go to the documentation of this file.
00001 
00017 #include "OSiLReader.h"
00018 
00019 
00020 //bison function
00021 void yygetOSInstance(const char *osil, OSInstance* osinstance, OSiLParserData *parserData) throw(ErrorClass);
00022 //lex functions
00023 int osillex_init(void** ptr_yy_globals);
00024 int osillex_destroy (void* scanner );
00025 void osilset_extra (OSiLParserData* parserData , void* yyscanner );
00026 
00027 
00028 OSiLReader::OSiLReader( ) {
00029         m_osinstance = new OSInstance();
00030         m_parserData = new OSiLParserData();
00031         // initialize the lexer and set yyextra
00032         osillex_init( &(m_parserData->scanner) );
00033         osilset_extra (m_parserData ,   m_parserData->scanner);
00034 }
00035 
00036 OSiLReader::~OSiLReader(){
00037         if(m_osinstance != NULL) delete m_osinstance;
00038         m_osinstance = NULL;
00039         // now delete the flex scanner that was initialized
00040         osillex_destroy(m_parserData->scanner );
00041         if( m_parserData != NULL) delete m_parserData;
00042         m_parserData = NULL;
00043 } 
00044 
00045 OSInstance* OSiLReader::readOSiL(const std::string& posil) throw(ErrorClass){   
00046         try{
00047                 const char *ch = posil.c_str();
00048                 yygetOSInstance( ch, m_osinstance, m_parserData);
00049                 return m_osinstance;
00050         }
00051                 catch(const ErrorClass& eclass){
00052                 throw ErrorClass( eclass.errormsg);
00053         }
00054 }//end readOSiL
00055 
00056 
00057 
00058 

Generated on Sat Mar 29 22:38:01 2008 by  doxygen 1.5.3