IO/vtkXMLDataElement.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00031 #ifndef __vtkXMLDataElement_h
00032 #define __vtkXMLDataElement_h
00033
00034 #include "vtkObject.h"
00035
00036 class vtkXMLDataParser;
00037
00038 class VTK_IO_EXPORT vtkXMLDataElement : public vtkObject
00039 {
00040 public:
00041 vtkTypeRevisionMacro(vtkXMLDataElement,vtkObject);
00042 void PrintSelf(ostream& os, vtkIndent indent);
00043 static vtkXMLDataElement* New();
00044
00046
00047 vtkGetStringMacro(Name);
00048 vtkSetStringMacro(Name);
00050
00052
00053 vtkGetStringMacro(Id);
00054 vtkSetStringMacro(Id);
00056
00059 const char* GetAttribute(const char* name);
00060
00063 void SetAttribute(const char* name, const char* value);
00064
00066
00068 int GetScalarAttribute(const char* name, int& value);
00069 int GetScalarAttribute(const char* name, float& value);
00070 int GetScalarAttribute(const char* name, double& value);
00071 int GetScalarAttribute(const char* name, unsigned long& value);
00073
00075
00079 void SetIntAttribute(const char* name, int value);
00080 void SetFloatAttribute(const char* name, float value);
00081 void SetDoubleAttribute(const char* name, double value);
00082 void SetUnsignedLongAttribute(const char* name, unsigned long value);
00084
00086
00088 int GetVectorAttribute(const char* name, int length, int* value);
00089 int GetVectorAttribute(const char* name, int length, float* value);
00090 int GetVectorAttribute(const char* name, int length, double* value);
00091 int GetVectorAttribute(const char* name, int length, unsigned long* value);
00093
00095
00096 void SetVectorAttribute(const char* name, int length, const int* value);
00097 void SetVectorAttribute(const char* name, int length, const float* value);
00098 void SetVectorAttribute(const char* name, int length, const double* value);
00099 void SetVectorAttribute(const char* name, int length, const unsigned long* value);
00101
00102 #ifdef VTK_ID_TYPE_IS_NOT_BASIC_TYPE
00103
00104 int GetScalarAttribute(const char* name, vtkIdType& value);
00105 void SetIdTypeAttribute(const char* name, vtkIdType value);
00106 int GetVectorAttribute(const char* name, int length, vtkIdType* value);
00107 void SetVectorAttribute(const char* name, int length, const vtkIdType* value);
00108
00109 #endif
00110
00113 int GetWordTypeAttribute(const char* name, int& value);
00114
00116
00117 vtkGetMacro(NumberOfAttributes, int);
00119
00121 const char* GetAttributeName(int idx);
00122
00124
00125 vtkXMLDataElement* GetParent();
00126 void SetParent(vtkXMLDataElement* parent);
00128
00130 int GetNumberOfNestedElements();
00131
00133 vtkXMLDataElement* GetNestedElement(int index);
00134
00136 void AddNestedElement(vtkXMLDataElement* element);
00137
00139
00141 vtkXMLDataElement* FindNestedElement(const char* id);
00142 vtkXMLDataElement* FindNestedElementWithName(const char* name);
00143 vtkXMLDataElement* FindNestedElementWithNameAndId(
00144 const char* name, const char* id);
00145 vtkXMLDataElement* FindNestedElementWithNameAndAttribute(
00146 const char* name, const char* att_name, const char* att_value);
00148
00150 vtkXMLDataElement* LookupElement(const char* id);
00151
00153
00155 vtkGetMacro(XMLByteIndex, unsigned long);
00156 vtkSetMacro(XMLByteIndex, unsigned long);
00158
00159 protected:
00160 vtkXMLDataElement();
00161 ~vtkXMLDataElement();
00162
00163
00164 char* Name;
00165
00166
00167 char* Id;
00168
00169
00170 unsigned long XMLByteIndex;
00171
00172
00173 unsigned long InlineDataPosition;
00174
00175
00176 char** AttributeNames;
00177 char** AttributeValues;
00178 int NumberOfAttributes;
00179 int AttributesSize;
00180
00181
00182 int NumberOfNestedElements;
00183 int NestedElementsSize;
00184 vtkXMLDataElement** NestedElements;
00185
00186
00187 vtkXMLDataElement* Parent;
00188
00189
00190 void ReadXMLAttributes(const char** atts);
00191 void SeekInlineDataPosition(vtkXMLDataParser* parser);
00192
00193 void PrintXML(ostream& os, vtkIndent indent);
00194
00195
00196 vtkXMLDataElement* LookupElementInScope(const char* id);
00197 vtkXMLDataElement* LookupElementUpScope(const char* id);
00198 static int IsSpace(char c);
00199
00200
00201 friend class vtkXMLDataParser;
00202
00203
00204 private:
00205 vtkXMLDataElement(const vtkXMLDataElement&);
00206 void operator=(const vtkXMLDataElement&);
00207 };
00208
00209 #endif