/home/coin/SVN-release/OS-2.3.2/OS/src/OSCommonInterfaces/OSrLReader.cpp

Go to the documentation of this file.
00001 /* $Id: OSrLReader.cpp 3815 2010-11-03 23:46:16Z Gassmann $ */
00017 //#define OSRLREADER_DEBUG
00018 
00019 #include "OSrLReader.h"
00020 
00021 
00022 
00023 
00024 void yygetOSResult( const char *ch, OSResult* m_osresult, OSrLParserData *m_parserData, OSgLParserData *osglData) throw(ErrorClass);
00025 int osrllex_init(void** ptr_yy_globals);
00026 int osrllex_destroy (void* scanner );
00027 void osrlset_extra (OSrLParserData* parserData , void* yyscanner );
00028 
00029 
00030 OSrLReader::OSrLReader( )  {    
00031 #ifdef OSRLREADER_DEBUG
00032         std::cout << "new OSrLParserData()" << std::endl;
00033 #endif
00034         m_parserData = new OSrLParserData();
00035 #ifdef OSRLREADER_DEBUG
00036         std::cout << "new OSgLParserData()" << std::endl;
00037 #endif
00038         m_osglData = new OSgLParserData();
00039 #ifdef OSRLREADER_DEBUG
00040         std::cout << "new OSResult()" << std::endl;
00041 #endif
00042         m_osresult = new OSResult(); 
00043         // initialize the lexer and set yyextra
00044 #ifdef OSRLREADER_DEBUG
00045         std::cout << "initialize the lexer" << std::endl;
00046 #endif
00047         osrllex_init( &(m_parserData->scanner) );
00048         osrlset_extra (m_parserData ,   m_parserData->scanner);                                         
00049 #ifdef OSRLREADER_DEBUG
00050         std::cout << "done" << std::endl;
00051 #endif
00052 }
00053 
00054 OSrLReader::~OSrLReader(){
00055         // delete the osresult object
00056 #ifdef OSRLREADER_DEBUG
00057         std::cout << "delete m_osresult" << std::endl;
00058 #endif
00059         if(m_osresult != NULL) delete m_osresult;
00060         m_osresult = NULL;
00061 
00062         // now delete the scanner that was initialized
00063 #ifdef OSRLREADER_DEBUG
00064         std::cout << "delete scanner" << std::endl;
00065 #endif
00066         osrllex_destroy(m_parserData->scanner );
00067 
00068         // findally delete parser data
00069 #ifdef OSRLREADER_DEBUG
00070         std::cout << "delete parser data" << std::endl;
00071 #endif
00072         if( m_parserData != NULL) delete m_parserData;
00073         m_parserData = NULL;
00074         
00075 #ifdef OSRLREADER_DEBUG
00076         std::cout << "delete osglData" << std::endl;
00077 #endif
00078         if( m_osglData != NULL) delete m_osglData;
00079         m_osglData = NULL;
00080 
00081 #ifdef OSRLREADER_DEBUG
00082         std::cout << "success!" << std::endl;
00083 #endif
00084 } 
00085 
00086 OSResult* OSrLReader::readOSrL(const std::string& posrl) throw(ErrorClass){     
00087         try{
00088                 const char *ch = posrl.c_str();
00089                 yygetOSResult( ch, m_osresult, m_parserData, m_osglData);
00090                 return m_osresult;
00091         }
00092                 catch(const ErrorClass& eclass){
00093                 throw ErrorClass( eclass.errormsg); 
00094         }
00095 }

Generated on Fri Jan 7 03:24:40 2011 by  doxygen 1.4.7