00001
00002
00003
00004
00005
00006
00007
00008
00009
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.