00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #include <stdlib.h>
00044 #include <stdio.h>
00045
00046 #include "OSGConfig.h"
00047
00048 #include <iostream>
00049
00050 #ifdef OSG_FLEX_USE_IOSTREAM_INPUT
00051 #include <fstream>
00052 #endif
00053
00054 #include "OSGScanParseSkel.h"
00055 #include "OSGBaseFunctions.h"
00056 #include "OSGLog.h"
00057 #include "OSGScanParseLexer.h"
00058
00059
00060 OSG_USING_NAMESPACE
00061
00062
00063
00064
00065 ScanParseSkel::ScanParseSkel(void) :
00066 _bMapTypeIds (false),
00067 _szReferenceHeader(NULL ),
00068 _pLexer (NULL )
00069 {
00070 }
00071
00072
00073
00074
00075 ScanParseSkel::~ScanParseSkel(void)
00076 {
00077 }
00078
00079
00080
00081
00082 extern int OSGScanParseSkel_parse(void *);
00083
00084 #ifdef OSG_FLEX_USE_IOSTREAM_INPUT
00085 void ScanParseSkel::scanStream(std::istream &is)
00086 {
00087 if(is.good())
00088 {
00089 delete _pLexer;
00090
00091 _pLexer = new OSGScanParseLexer(this, &is);
00092
00093 OSGScanParseSkel_parse(this);
00094 }
00095 }
00096 #endif
00097
00098 void ScanParseSkel::scanFile(const Char8 *szFilename)
00099 {
00100 if(szFilename == NULL)
00101 return;
00102
00103 #ifdef OSG_FLEX_USE_IOSTREAM_INPUT
00104 std::ifstream is(szFilename);
00105
00106 if(is.good())
00107 {
00108 PNOTICE << "Loading Stream: " << szFilename << std::endl;
00109
00110 scanStream(is);
00111
00112 is.close();
00113 }
00114 #else
00115 FILE *pInFile = fopen(szFilename, "r");
00116
00117 if(pInFile != NULL)
00118 {
00119 PNOTICE << "Loading File : " << szFilename << std::endl;
00120
00121 OSGScanParseSkel_in = pInFile;
00122
00123 OSGScanParseSkel_parse(this);
00124
00125 fclose(pInFile);
00126 }
00127 #endif
00128 }
00129
00130 Int32 ScanParseSkel::lex(void)
00131 {
00132 Int32 returnValue = -1;
00133
00134 if(_pLexer != NULL)
00135 returnValue = _pLexer->yylex();
00136
00137 return returnValue;
00138 }
00139
00140 const Char8 *ScanParseSkel::getText(void)
00141 {
00142 const Char8 *returnValue = NULL;
00143
00144 if(_pLexer != NULL)
00145 returnValue = _pLexer->YYText();
00146
00147 return returnValue;
00148 }
00149
00150 void ScanParseSkel::expectType(Int32 iNextType)
00151 {
00152 if(_pLexer != NULL)
00153 _pLexer->expectType(iNextType);
00154 }
00155
00156
00157 void ScanParseSkel::handleError(const Char8 *szErrorText)
00158 {
00159 FWARNING(("-----> %s in Line %d, read\n",
00160 szErrorText,
00161 _pLexer->lineno(),
00162 _pLexer->YYText()));
00163 }
00164
00165
00166
00167
00168 bool ScanParseSkel::verifyHeader(const Char8 *szHeader)
00169 {
00170 bool returnValue = true;
00171
00172 if(szHeader == NULL)
00173 {
00174 SLOG << "Error Null Header String Read" << std::endl;
00175 return false;
00176 }
00177
00178 if(_szReferenceHeader != NULL)
00179 {
00180 if(strncmp(szHeader,
00181 _szReferenceHeader,
00182 stringlen(_szReferenceHeader)) != 0)
00183 {
00184 SLOG << "Error : Header [" << szHeader << "] does not "
00185 << "match reference [" << _szReferenceHeader << "]"
00186 << std::endl;
00187
00188 returnValue = false;
00189 }
00190 }
00191 else
00192 {
00193 SLOG << "Error Null Reference Header, Check disabled " << std::endl;
00194 return true;
00195 }
00196
00197 return returnValue;
00198 }
00199
00200 void ScanParseSkel::beginProto(const Char8 *)
00201 {
00202 }
00203
00204 void ScanParseSkel::endProto(void)
00205 {
00206 }
00207
00208 void ScanParseSkel::beginExternProto(const Char8 *)
00209 {
00210 }
00211
00212 void ScanParseSkel::endExternProtoInterface(void)
00213 {
00214 }
00215
00216 void ScanParseSkel::endExternProto(void)
00217 {
00218 }
00219
00220 void ScanParseSkel::beginScript(const Char8 *)
00221 {
00222 }
00223
00224 void ScanParseSkel::endScript(void)
00225 {
00226 }
00227
00228 void ScanParseSkel::beginEventInDecl (const Char8 *,
00229 const UInt32 ,
00230 const Char8 *)
00231 {
00232 }
00233
00234 void ScanParseSkel::beginEventOutDecl(const Char8 *,
00235 const UInt32 ,
00236 const Char8 *)
00237 {
00238 }
00239
00240 void ScanParseSkel::endEventDecl(void)
00241 {
00242 }
00243
00244 void ScanParseSkel::beginFieldDecl(const Char8 *,
00245 const UInt32 ,
00246 const Char8 *)
00247 {
00248 }
00249
00250 void ScanParseSkel::endFieldDecl(void)
00251 {
00252 }
00253
00254 void ScanParseSkel::beginExposedFieldDecl(const Char8 *,
00255 const UInt32 ,
00256 const Char8 *)
00257 {
00258 }
00259
00260 void ScanParseSkel::endExposedFieldDecl(void)
00261 {
00262 }
00263
00264
00265 void ScanParseSkel::addExternEventInDecl (const Char8 *,
00266 const UInt32 ,
00267 const Char8 *)
00268 {
00269 }
00270
00271 void ScanParseSkel::addExternEventOutDecl(const Char8 *,
00272 const UInt32 ,
00273 const Char8 *)
00274 {
00275 }
00276
00277 void ScanParseSkel::addExternFieldDecl(const Char8 *,
00278 const UInt32 ,
00279 const Char8 *)
00280 {
00281 }
00282
00283 void ScanParseSkel::addExternExposedFieldDecl(const Char8 *,
00284 const UInt32 ,
00285 const Char8 *)
00286 {
00287 }
00288
00289
00290
00291
00292 void ScanParseSkel::beginField(const Char8 *,
00293 const UInt32)
00294 {
00295 }
00296
00297 void ScanParseSkel::endField(void)
00298 {
00299 }
00300
00301
00302
00303
00304 void ScanParseSkel::beginNode(const Char8 *szNodeTypename,
00305 const Char8 *szNodename)
00306 {
00307 fprintf(stderr, "Calling default begin node %s %s\n",
00308 szNodeTypename,
00309 szNodename);
00310 }
00311
00312 void ScanParseSkel::endNode(void)
00313 {
00314 }
00315
00316 void ScanParseSkel::use(const Char8 *szName)
00317 {
00318 PINFO << "Use : " << szName << std::endl;
00319 }
00320
00321 void ScanParseSkel::is(const Char8 *)
00322 {
00323 }
00324
00325 void ScanParseSkel::profileElement(const Char8 *szProfileName)
00326 {
00327 fprintf(stderr, "PROFILE %s\n", szProfileName);
00328 }
00329
00330 void ScanParseSkel::componentElement (const Char8 *szComponentName)
00331 {
00332 fprintf(stderr, "COMPONENT %s\n", szComponentName);
00333 }
00334
00335 void ScanParseSkel::metaElement (const Char8 *szMetaKey,
00336 const Char8 *szMetaValue)
00337 {
00338 fprintf(stderr, "META %s %s\n", szMetaKey, szMetaValue);
00339 }
00340
00341 void ScanParseSkel::importElement(const Char8 *szInlineName,
00342 const Char8 *szNodeName,
00343 const Char8 *szImportAs )
00344 {
00345 fprintf(stderr, "IMPORT %s.%s AS %s\n",
00346 szInlineName, szNodeName, szImportAs);
00347 }
00348
00349 void ScanParseSkel::exportElement(const Char8 *szNodeName,
00350 const Char8 *szExportAs )
00351 {
00352 fprintf(stderr, "EXPORT %s AS %s\n", szNodeName, szExportAs);
00353 }
00354
00355
00356
00357
00358 void ScanParseSkel::addFieldValue(const Char8 *)
00359 {
00360 }
00361
00362 void ScanParseSkel::addRoute(const Char8 *,
00363 const Char8 *,
00364 const Char8 *,
00365 const Char8 *)
00366 {
00367 }
00368
00369
00370
00371
00372 bool ScanParseSkel::getMapFieldTypes(void)
00373 {
00374 return _bMapTypeIds;
00375 }
00376
00377 Int32 ScanParseSkel::mapExtIntFieldType(const Char8*, const Int32 iFieldType)
00378 {
00379 return iFieldType;
00380 }
00381
00382 UInt32 ScanParseSkel::getFieldType(const Char8 *)
00383 {
00384 return 0;
00385 }
00386
00387
00388
00389
00390 void ScanParseSkel::reset(void)
00391 {
00392 }
00393
00394 void ScanParseSkel::setMapTypeIds(bool bVal)
00395 {
00396 _bMapTypeIds = bVal;
00397 }
00398
00399 void ScanParseSkel::setReferenceHeader(const Char8 *szReferenceHeader)
00400 {
00401 stringDup(szReferenceHeader, _szReferenceHeader);
00402 }
00403
00404
00405
00406
00407
00408 #ifdef __sgi
00409 #pragma set woff 1174
00410 #endif
00411
00412 #ifdef OSG_LINUX_ICC
00413 #pragma warning( disable : 177 )
00414 #endif
00415
00416 namespace
00417 {
00418 static Char8 cvsid_cpp[] = "@(#)$Id: $";
00419 static Char8 cvsid_hpp[] = OSGSCANPARSESKEL_HEADER_CVSID;
00420 }