00001
00016 #include "OSiLReader.h"
00017
00018
00019
00020 void yygetOSInstance(const char *osil, OSInstance* osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData) throw(ErrorClass);
00021
00022 int osillex_init(void** ptr_yy_globals);
00023 int osillex_destroy (void* scanner );
00024 void osilset_extra (OSiLParserData* parserData , void* yyscanner );
00025
00026
00027 OSiLReader::OSiLReader( )
00028 {
00029 m_osinstance = new OSInstance();
00030 m_parserData = new OSiLParserData();
00031 m_osglData = new OSgLParserData();
00032 m_osnlData = new OSnLParserData();
00033
00034
00035 osillex_init( &(m_parserData->scanner) );
00036 osilset_extra (m_parserData , m_parserData->scanner);
00037 }
00038
00039 OSiLReader::~OSiLReader()
00040 {
00041 if(m_osinstance != NULL) delete m_osinstance;
00042 m_osinstance = NULL;
00043
00044 osillex_destroy(m_parserData->scanner );
00045 if( m_parserData != NULL) delete m_parserData;
00046 m_parserData = NULL;
00047 if( m_osglData != NULL) delete m_osglData;
00048 m_osglData = NULL;
00049 if( m_osnlData != NULL) delete m_osnlData;
00050 m_osnlData = NULL;
00051 }
00052
00053 OSInstance* OSiLReader::readOSiL(const std::string& posil) throw(ErrorClass)
00054 {
00055 try
00056 {
00057 const char *ch = posil.c_str();
00058 yygetOSInstance( ch, m_osinstance, m_parserData, m_osglData, m_osnlData);
00059 return m_osinstance;
00060 }
00061 catch(const ErrorClass& eclass)
00062 {
00063 throw ErrorClass( eclass.errormsg);
00064 }
00065 }
00066
00067
00068
00069