aboutsummaryrefslogtreecommitdiff
path: root/src/xmlreader.h
blob: 375dfe30c6315330be8cdbfd614b9dbdefa1276c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifndef BU_XML_READER_H
#define BU_XML_READER_H

#include "bu/fstring.h"

namespace Bu
{
	class Stream;

	class XmlReader
	{
	public:
		XmlReader( Stream &rInput );
		virtual ~XmlReader();

	private:
		Stream &rInput;
		int iCurToken;
		int iNextToken;
		Bu::FString sBuf;
		Bu::FString sStr;
		bool bIgnoreWS;
		typedef struct StreamPos
		{
			StreamPos() : iLine( 1 ), iChar( 1 ) { }
			int iLine;
			int iChar;
		} StreamPos;
		StreamPos spCurToken;
		StreamPos spNextToken;


		enum
		{
			tokXmlDeclHead	=	0x100,
			tokXmlDeclEnd,
			tokWS,
			tokIdent,
			tokString
		};

		void fillBuffer();
		void cleanupBuffer( int iUsed );
		int nextToken();

		void stDocument();
		void stProlog();
		void stXmlDecl();

		void error( const char *sMessage );
	};
};

#endif