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