True Axis Physics SDK 1.2.0.1 Beta Documentation
www.trueaxis.com

AmlReader.h

00001 //---------------------------------------------------------------------------------
00002 // File Name: AmlReader.h
00003 // Description: Lexical analysis for parsing text.
00004 //
00005 // Copyright (C) 2004 True Axis Pty Ltd, Australia. 
00006 // All Rights Reserved.
00007 //
00008 // History:
00009 //      Created File.
00010 //---------------------------------------------------------------------------------
00011 
00012 #ifndef TA_AMLREADER_H
00013 #define TA_AMLREADER_H
00014 
00015 #ifndef TA_TYPES_H
00016 #include "Types.h"
00017 #endif // TA_TYPES_H
00018 
00019 #ifndef TA_COMMON_H
00020 #include "Common.h"
00021 #endif // TA_COMMON_H
00022 
00023 #ifndef TA_STRING_H
00024 #include "String.h"
00025 #endif // TA_STRING_H
00026 
00027 namespace TA
00028 {
00029 
00030 class TACOMMON_CLASS AmlReader
00031 {
00032 public:
00033     enum TokenType
00034     {
00035         TOKEN_TYPE_END_OF_FILE = 0,
00036         TOKEN_TYPE_OBJECT_BEGIN,
00037         TOKEN_TYPE_OBJECT_END,
00038         TOKEN_TYPE_STRING,
00039     };
00040 
00041     AmlReader();
00042     ~AmlReader();
00043 
00044     bool Initialise(const Char* szFileName);
00045     void Finalise();
00046     
00047     TokenType GetTokenType();
00048     float GetTokenAsFloat();
00049     const Char* GetTokenAsString();
00050     int GetTokenLength();
00051     void Advance();
00052     int GetTotalLength();
00053     const String& GetFileName() const;
00054     int GetLineNumber() const;
00055 
00056 private:
00057     Char* m_szString;
00058     TokenType m_eTokenType;
00059     TokenType m_eNextTokenType;
00060     const Char* m_szToken;
00061     static Char* m_szEmptyString;
00062     Char* m_szCurrentPos;
00063     int m_nTokenLength;
00064     int m_nTotalLength;
00065     bool m_bObjectHeader;
00066     AmlReader* m_pChild;
00067     String m_strFileName;
00068     int m_nLine;
00069     
00070     void FindStartOfNextToken(const Char* szSeparators);
00071     void SetupStringToken();
00072     bool IsAlpha(Char n) { return (n >= 'a' && n <= 'z') || (n >= 'A' && n <= 'Z'); }
00073     bool IsAlphanumeric(Char n) { return IsAlpha(n) || (n >= '0' && n <= '9'); }
00074     bool UseChild();
00075     void IncrementCursor();
00076     void ZeroAtCursor();
00077 };
00078 
00079 }
00080 
00081 #endif // TA_AMLREADER_H


© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.