diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /sp/src/public/tier1/tokenreader.h | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/public/tier1/tokenreader.h')
| -rw-r--r-- | sp/src/public/tier1/tokenreader.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/sp/src/public/tier1/tokenreader.h b/sp/src/public/tier1/tokenreader.h new file mode 100644 index 00000000..14061e76 --- /dev/null +++ b/sp/src/public/tier1/tokenreader.h @@ -0,0 +1,99 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef TOKENREADER_H
+#define TOKENREADER_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "tier0/basetypes.h"
+
+#ifdef _WIN32
+#pragma warning(push, 1)
+#pragma warning(disable:4701 4702 4530)
+#endif
+
+#undef min
+#undef max
+#include <fstream>
+#include "valve_minmax_on.h"
+
+#ifdef _WIN32
+#pragma warning(pop)
+#endif
+
+#include <assert.h>
+
+
+typedef enum
+{
+ TOKENSTRINGTOOLONG = -4,
+ TOKENERROR = -3,
+ TOKENNONE = -2,
+ TOKENEOF = -1,
+ OPERATOR,
+ INTEGER,
+ STRING,
+ IDENT
+} trtoken_t;
+
+
+#define IsToken(s1, s2) !strcmpi(s1, s2)
+
+#define MAX_TOKEN 128 + 1
+#define MAX_IDENT 64 + 1
+#define MAX_STRING 128 + 1
+
+
+class TokenReader : private std::ifstream
+{
+public:
+
+ TokenReader();
+
+ bool Open(const char *pszFilename);
+ trtoken_t NextToken(char *pszStore, int nSize);
+ trtoken_t NextTokenDynamic(char **ppszStore);
+ void Close();
+
+ void IgnoreTill(trtoken_t ttype, const char *pszToken);
+ void Stuff(trtoken_t ttype, const char *pszToken);
+ bool Expecting(trtoken_t ttype, const char *pszToken);
+ const char *Error(char *error, ...);
+ trtoken_t PeekTokenType(char* = NULL, int maxlen = 0);
+
+ inline int GetErrorCount(void);
+
+private:
+ // compiler can't generate an assignment operator since descended from std::ifstream
+ inline TokenReader(TokenReader const &);
+ inline int operator=(TokenReader const &);
+
+ trtoken_t GetString(char *pszStore, int nSize);
+ bool SkipWhiteSpace(void);
+
+ int m_nLine;
+ int m_nErrorCount;
+
+ char m_szFilename[128];
+ char m_szStuffed[128];
+ bool m_bStuffed;
+ trtoken_t m_eStuffed;
+};
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Returns the total number of parsing errors since this file was opened.
+//-----------------------------------------------------------------------------
+int TokenReader::GetErrorCount(void)
+{
+ return(m_nErrorCount);
+}
+
+
+#endif // TOKENREADER_H
|