Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OSGScanParseSkel.cpp

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *             Copyright (C) 2000-2002 by the OpenSG Forum                   *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035  *                                                                           *
00036  *                                                                           *
00037 \*---------------------------------------------------------------------------*/
00038 
00039 //---------------------------------------------------------------------------
00040 //  Includes
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 /*                            Constructors                                 */
00064 
00065 ScanParseSkel::ScanParseSkel(void) :
00066     _bMapTypeIds      (false),
00067     _szReferenceHeader(NULL ),
00068     _pLexer           (NULL )
00069 {
00070 }
00071 
00072 /*-------------------------------------------------------------------------*/
00073 /*                             Destructor                                  */
00074 
00075 ScanParseSkel::~ScanParseSkel(void)
00076 {
00077 }
00078 
00079 /*-------------------------------------------------------------------------*/
00080 /*                                Scan                                     */
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 /*                             Prototypes                                  */
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 /*                               Fields                                    */
00291 
00292 void ScanParseSkel::beginField(const Char8 *,
00293                                const UInt32)
00294 {
00295 }
00296 
00297 void ScanParseSkel::endField(void)
00298 {
00299 }
00300 
00301 /*-------------------------------------------------------------------------*/
00302 /*                               Nodes                                     */
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 /*                               Helper                                    */
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 /*                           Type Information                              */
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 /*                               Set                                       */
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 /*                              cvs id's                                   */
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 }

Generated on Thu Aug 25 04:09:07 2005 for OpenSG by  doxygen 1.4.3