00001
00017 #include "OSrLReader.h"
00018 #include "OSOutput.h"
00019
00020
00021
00022
00023 void yygetOSResult( const char *ch, OSResult* m_osresult, OSrLParserData *m_parserData, OSgLParserData *osglData, OSnLParserData *osnlData) throw(ErrorClass);
00024 int osrllex_init(void** ptr_yy_globals);
00025 int osrllex_destroy (void* scanner );
00026 void osrlset_extra (OSrLParserData* parserData , void* yyscanner );
00027
00028
00029 OSrLReader::OSrLReader( )
00030 {
00031 #ifndef NDEBUG
00032 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "new OSrLParserData()");
00033 #endif
00034 m_parserData = new OSrLParserData();
00035 #ifndef NDEBUG
00036 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "new OSgLParserData()");
00037 #endif
00038 m_osglData = new OSgLParserData();
00039 #ifndef NDEBUG
00040 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "new OSnLParserData()");
00041 #endif
00042 m_osnlData = new OSnLParserData();
00043 #ifndef NDEBUG
00044 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "new OSResult()");
00045 #endif
00046 m_osresult = new OSResult();
00047
00048 #ifndef NDEBUG
00049 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "initialize the lexer");
00050 #endif
00051 osrllex_init( &(m_parserData->scanner) );
00052 osrlset_extra (m_parserData , m_parserData->scanner);
00053 #ifndef NDEBUG
00054 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "done");
00055 #endif
00056 }
00057
00058 OSrLReader::~OSrLReader()
00059 {
00060
00061 #ifndef NDEBUG
00062 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "delete m_osresult");
00063 #endif
00064 if(m_osresult != NULL) delete m_osresult;
00065 m_osresult = NULL;
00066
00067
00068 #ifndef NDEBUG
00069 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "delete scanner");
00070 #endif
00071 osrllex_destroy(m_parserData->scanner );
00072
00073
00074 #ifndef NDEBUG
00075 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "delete parser data");
00076 #endif
00077 if( m_parserData != NULL) delete m_parserData;
00078 m_parserData = NULL;
00079
00080 #ifndef NDEBUG
00081 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "delete osglData");
00082 #endif
00083 if( m_osglData != NULL) delete m_osglData;
00084 m_osglData = NULL;
00085
00086 #ifndef NDEBUG
00087 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "delete osnlData");
00088 #endif
00089 if( m_osnlData != NULL) delete m_osnlData;
00090 m_osnlData = NULL;
00091
00092 #ifndef NDEBUG
00093 osoutput->OSPrint(ENUM_OUTPUT_AREA_OSrL_parser, ENUM_OUTPUT_LEVEL_trace, "success!");
00094 #endif
00095 }
00096
00097 OSResult* OSrLReader::readOSrL(const std::string& posrl) throw(ErrorClass)
00098 {
00099 if (posrl.length() > 0)
00100 {
00101 const char *ch = posrl.c_str();
00102 yygetOSResult( ch, m_osresult, m_parserData, m_osglData, m_osnlData);
00103 }
00104 return m_osresult;
00105 }