Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

LWSceneFile.h

Go to the documentation of this file.
00001 
00002 /*
00003     TEDDY - General graphics application library
00004     Copyright (C) 1999-2002  Timo Suoranta
00005     tksuoran@cc.helsinki.fi
00006 
00007     This library is free software; you can redistribute it and/or
00008     modify it under the terms of the GNU Lesser General Public
00009     License as published by the Free Software Foundation; either
00010     version 2.1 of the License, or (at your option) any later version.
00011 
00012     This library is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015     Lesser General Public License for more details.
00016 
00017     You should have received a copy of the GNU Lesser General Public
00018     License along with this library; if not, write to the Free Software
00019     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00020 
00021     $Id: LWSceneFile.h,v 1.2 2002/02/16 16:38:11 tksuoran Exp $
00022 */
00023 
00024 
00025 #ifndef TEDDY__IMPORTS__LW_SCENE_FILE__H
00026 #define TEDDY__IMPORTS__LW_SCENE_FILE__H
00027 
00028 
00029 #include "Teddy/TeddyConfig.h"
00030 #if defined( TEDDY_INCLUDE_LW_SCENE )
00031 
00032 
00033 #include "Teddy/Imports/LWSceneTokens.h"
00034 #include "Teddy/SysSupport/Types.h"
00035 #include "Teddy/SysSupport/StdMap.h"
00036 #include "Teddy/SysSupport/StdIO.h"
00037 
00038 
00039 namespace Teddy   {
00040 namespace Imports {
00041 
00042 
00043 struct less_str {
00044     bool operator()( char *a, char *b ) const {
00045         if( strcmp(a,b) < 0 ){
00046             return true;
00047         }else{
00048             return false;
00049         }
00050     }
00051 };
00052 
00053 
00054 typedef map<char*, LwsToken, less_str> string_to_token;
00055 
00056 
00058 class LWSceneFile {
00059 public:
00060     LWSceneFile( const char *fname );
00061     ~LWSceneFile();
00062 
00063     LwsToken       read_token      ();
00064     int            read_int        ();
00065     unsigned long  read_hex_int    ();
00066     double         read_double     ();
00067     char          *read_string     ();
00068     bool           read_begin_scope();
00069     bool           read_end_scope  ();
00070 
00071     void           skip            ();
00072     void           open            ( const char *fname );
00073     bool           isOk            ();
00074     void           close           ();
00075 
00076 protected:
00077     void           mapTokens       ();
00078     void           mapToken        ( char *key, LwsToken token );
00079 
00080 protected:
00081     FILE            *file;
00082     string_to_token  token_map;
00083 };
00084 
00085 
00086 };  //  namespace Imports
00087 };  //  namespace Teddy
00088 
00089 
00090 #endif  //  TEDDY_INCLUDE_LW_SCENE
00091 #endif  //  TEDDY__IMPORTS__LW_SCENE_FILE__H
00092 
00093