00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00029
#ifndef __vtkXMLParser_h
00030
#define __vtkXMLParser_h
00031
00032
#include "vtkObject.h"
00033
00034
extern "C"
00035 {
00036
void vtkXMLParserStartElement(
void*,
const char*,
const char**);
00037
void vtkXMLParserEndElement(
void*,
const char*);
00038
void vtkXMLParserCharacterDataHandler(
void*,
const char*,
int);
00039 }
00040
00041 class VTK_IO_EXPORT vtkXMLParser :
public vtkObject
00042 {
00043
public:
00044 vtkTypeRevisionMacro(vtkXMLParser,
vtkObject);
00045
void PrintSelf(ostream& os,
vtkIndent indent);
00046
00047
static vtkXMLParser*
New();
00048
00049
00051
00052 vtkSetMacro(Stream, istream*);
00053 vtkGetMacro(Stream, istream*);
00055
00057
00060
long TellG();
00061
void SeekG(
long position);
00062
00064
00066
virtual int Parse();
00067
00069
00071
virtual int Parse(
const char* inputString);
00072
virtual int Parse(
const char* inputString,
unsigned int length);
00074
00076
00081
virtual int InitializeParser();
00082
virtual int ParseChunk(
const char* inputString,
unsigned int length);
00083
virtual int CleanupParser();
00085
00087
00088 vtkSetStringMacro(FileName);
00089 vtkGetStringMacro(FileName);
00091
00092
protected:
00093 vtkXMLParser();
00094 ~vtkXMLParser();
00095
00096
00097 istream* Stream;
00098
00099
00100 char* FileName;
00101
00102
00103
00104 int ParseError;
00105
00106
00107 const char* InputString;
00108 int InputStringLength;
00109
00110
00111 void* Parser;
00112
00113
00114
00115
virtual int ParseXML();
00116
00117
00118
00119
00120
00121
virtual int ParsingComplete();
00122
00123
00124
00125
00126
00127
00128
virtual void StartElement(
const char* name,
const char** atts);
00129
00130
00131
00132
virtual void EndElement(
const char* name);
00133
00134
00135
virtual void CharacterDataHandler(
const char* data,
int length);
00136
00137
00138
virtual void ReportStrayAttribute(
const char* element,
const char* attr,
00139
const char* value);
00140
00141
00142
virtual void ReportMissingAttribute(
const char* element,
const char* attr);
00143
00144
00145
virtual void ReportBadAttribute(
const char* element,
const char* attr,
00146
const char* value);
00147
00148
00149
virtual void ReportUnknownElement(
const char* element);
00150
00151
00152
virtual void ReportXmlParseError();
00153
00154
00155
unsigned long GetXMLByteIndex();
00156
00157
00158
virtual int ParseBuffer(
const char* buffer,
unsigned int count);
00159
00160
00161
int ParseBuffer(
const char* buffer);
00162
00163
00164
00165
static int IsSpace(
char c);
00166
00167
00168
friend void vtkXMLParserStartElement(
void*,
const char*,
const char**);
00169
friend void vtkXMLParserEndElement(
void*,
const char*);
00170
friend void vtkXMLParserCharacterDataHandler(
void*,
const char*,
int);
00171
00172
00173
private:
00174 vtkXMLParser(
const vtkXMLParser&);
00175
void operator=(
const vtkXMLParser&);
00176 };
00177
00178
#endif