67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //-----------------------------------------------------------------------------
 | |
| // Torque Game Engine
 | |
| // Copyright (C) GarageGames.com, Inc.
 | |
| //-----------------------------------------------------------------------------
 | |
| 
 | |
| #ifndef _TOKENIZER_H_
 | |
| #define _TOKENIZER_H_
 | |
| 
 | |
| //Includes
 | |
| #ifndef _PLATFORM_H_
 | |
| #include "platform/platform.h"
 | |
| #endif
 | |
| #include "core/stream.h"
 | |
| 
 | |
| class SizedStream;
 | |
| 
 | |
| class Tokenizer
 | |
| {
 | |
|   public:
 | |
|    enum {
 | |
|       MaxTokenSize = 1023
 | |
|    };
 | |
| 
 | |
|   private:
 | |
|    char   mFileName[1024];
 | |
| 
 | |
|    char*  mpBuffer;
 | |
|    U32 mBufferSize;
 | |
| 
 | |
|    U32 mCurrPos;
 | |
|    U32 mCurrLine;
 | |
|    U32 mPrevPos;
 | |
|    U32 mStartPos;
 | |
| 
 | |
|    char   mCurrTokenBuffer[MaxTokenSize + 1];
 | |
|    bool   mTokenIsCurrent;
 | |
| 
 | |
|   public:
 | |
|    Tokenizer();
 | |
|    ~Tokenizer();
 | |
|    bool openFile(const char* pFileName);
 | |
|    bool openFile(Stream* pStream);
 | |
| 
 | |
|    bool        advanceToken(const bool crossLine, const bool assertAvailable = false);
 | |
|    bool        regressToken(const bool crossLine);
 | |
|    bool        tokenAvailable();
 | |
| 
 | |
|    const char* getToken() const;
 | |
|    bool tokenICmp(const char* pCmp) const;
 | |
| 
 | |
|    bool findToken(const char* pCmp);
 | |
|    bool findToken(U32 start, const char* pCmp);
 | |
| 
 | |
|    const char* getFileName() const     { return mFileName; }
 | |
|    U32      getCurrentLine() const  { return mCurrLine; }
 | |
|    U32      getCurrentPos() const { return mCurrPos; }
 | |
| 
 | |
|    bool     setCurrentPos(U32 pos);
 | |
| 
 | |
|    bool     reset();
 | |
| 
 | |
|    bool     endOfFile();
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif //_TOKENIZER_H_
 | 
