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