Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# IO/vtkXMLDataElement.h

Go to the documentation of this file.

    00001 /*=========================================================================
    00002
    00003   Program:   Visualization Toolkit
    00004   Module:    $RCSfile: vtkXMLDataElement.h,v $
    00005   Language:  C++
    00006
    00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
    00008   All rights reserved.
    00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
    00010
    00011      This software is distributed WITHOUT ANY WARRANTY; without even
    00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
    00013      PURPOSE.  See the above copyright notice for more information.
    00014
    00015 =========================================================================*/
    00041 #ifndef __vtkXMLDataElement_h
    00042 #define __vtkXMLDataElement_h
    00043
    00044 #include "vtkObject.h"
    00045
    00046 class vtkXMLDataParser;
    00047
    00048 class VTK_IO_EXPORT vtkXMLDataElement : public vtkObject
    00049 {
    00050 public:
    00051   vtkTypeRevisionMacro(vtkXMLDataElement,vtkObject);
    00052   void PrintSelf(ostream& os, vtkIndent indent);
    00053   static vtkXMLDataElement* New();
    00054
    00056
    00057   vtkGetStringMacro(Name);
    00059
    00061
    00062   vtkGetStringMacro(Id);
    00064
    00067   const char* GetAttribute(const char* name);
    00068
    00070
    00072   int GetScalarAttribute(const char* name, int& value);
    00073   int GetScalarAttribute(const char* name, float& value);
    00074   int GetScalarAttribute(const char* name, unsigned long& value);
    00075 #ifdef VTK_ID_TYPE_IS_NOT_BASIC_TYPE
    00076   int GetScalarAttribute(const char* name, vtkIdType& value);
    00078 #endif
    00079
    00081
    00083   int GetVectorAttribute(const char* name, int length, int* value);
    00084   int GetVectorAttribute(const char* name, int length, float* value);
    00085   int GetVectorAttribute(const char* name, int length, unsigned long* value);
    00086 #ifdef VTK_ID_TYPE_IS_NOT_BASIC_TYPE
    00087   int GetVectorAttribute(const char* name, int length, vtkIdType* value);
    00089 #endif
    00090
    00093   int GetWordTypeAttribute(const char* name, int& value);
    00094
    00096   vtkXMLDataElement* GetParent();
    00097
    00099   int GetNumberOfNestedElements();
    00100
    00102   vtkXMLDataElement* GetNestedElement(int index);
    00103
    00105   vtkXMLDataElement* FindNestedElement(const char* id);
    00106
    00108   vtkXMLDataElement* LookupElement(const char* id);
    00109
    00111
    00113   vtkGetMacro(XMLByteIndex, unsigned long);
    00115
    00116 protected:
    00117   vtkXMLDataElement();
    00118   ~vtkXMLDataElement();
    00119
    00120   // The name of the element from the XML file.
    00121   char* Name;
    00122
    00123   // The value of the "id" attribute, if any was given.
    00124   char* Id;
    00125
    00126   // The offset into the XML stream where the element begins.
    00127   unsigned long XMLByteIndex;
    00128
    00129   // The offset into the XML stream where the inline data begins.
    00130   unsigned long InlineDataPosition;
    00131
    00132   // The raw property name/value pairs read from the XML attributes.
    00133   char** AttributeNames;
    00134   char** AttributeValues;
    00135   int NumberOfAttributes;
    00136   int AttributesSize;
    00137
    00138   // The set of nested elements.
    00139   int NumberOfNestedElements;
    00140   int NestedElementsSize;
    00141   vtkXMLDataElement** NestedElements;
    00142
    00143   // The parent of this element.
    00144   vtkXMLDataElement* Parent;
    00145
    00146   // Method used by vtkXMLFileParser to setup the element.
    00147   vtkSetStringMacro(Name);
    00148   vtkSetStringMacro(Id);
    00149   vtkSetMacro(XMLByteIndex, unsigned long);
    00150   void ReadXMLAttributes(const char** atts);
    00151   void AddNestedElement(vtkXMLDataElement* element);
    00152   void SeekInlineDataPosition(vtkXMLDataParser* parser);
    00153
    00154   void PrintXML(ostream& os, vtkIndent indent);
    00155
    00156   // Internal utility methods.
    00157   vtkXMLDataElement* LookupElementInScope(const char* id);
    00158   vtkXMLDataElement* LookupElementUpScope(const char* id);
    00159   void SetParent(vtkXMLDataElement* parent);
    00160   static int IsSpace(char c);
    00161
    00162   //BTX
    00163   friend class vtkXMLDataParser;
    00164   //ETX
    00165
    00166 private:
    00167   vtkXMLDataElement(const vtkXMLDataElement&);  // Not implemented.
    00168   void operator=(const vtkXMLDataElement&);  // Not implemented.
    00169 };
    00170
    00171 #endif