00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00027
#ifndef __vtkXMLDataElement_h
00028
#define __vtkXMLDataElement_h
00029
00030
#include "vtkObject.h"
00031
00032
class vtkXMLDataParser;
00033
00034 class VTK_IO_EXPORT vtkXMLDataElement :
public vtkObject
00035 {
00036
public:
00037 vtkTypeRevisionMacro(vtkXMLDataElement,
vtkObject);
00038
void PrintSelf(ostream& os,
vtkIndent indent);
00039
static vtkXMLDataElement*
New();
00040
00042
00043 vtkGetStringMacro(Name);
00044 vtkSetStringMacro(Name);
00046
00048
00049 vtkGetStringMacro(Id);
00050 vtkSetStringMacro(Id);
00052
00055
const char* GetAttribute(
const char* name);
00056
00059
void SetAttribute(
const char* name,
const char* value);
00060
00062
00064
int GetScalarAttribute(
const char* name,
int& value);
00065
int GetScalarAttribute(
const char* name,
float& value);
00066
int GetScalarAttribute(
const char* name,
double& value);
00067
int GetScalarAttribute(
const char* name,
unsigned long& value);
00069
00071
00075
void SetIntAttribute(
const char* name,
int value);
00076
void SetFloatAttribute(
const char* name,
float value);
00077
void SetDoubleAttribute(
const char* name,
double value);
00078
void SetUnsignedLongAttribute(
const char* name,
unsigned long value);
00080
00082
00084
int GetVectorAttribute(
const char* name,
int length,
int* value);
00085
int GetVectorAttribute(
const char* name,
int length,
float* value);
00086
int GetVectorAttribute(
const char* name,
int length,
double* value);
00087
int GetVectorAttribute(
const char* name,
int length,
unsigned long* value);
00089
00091
00092
void SetVectorAttribute(
const char* name,
int length,
const int* value);
00093
void SetVectorAttribute(
const char* name,
int length,
const float* value);
00094
void SetVectorAttribute(
const char* name,
int length,
const double* value);
00095
void SetVectorAttribute(
const char* name,
int length,
const unsigned long* value);
00097
00098
#ifdef VTK_ID_TYPE_IS_NOT_BASIC_TYPE
00099
00100
int GetScalarAttribute(
const char* name,
vtkIdType& value);
00101
void SetIdTypeAttribute(
const char* name,
vtkIdType value);
00102
int GetVectorAttribute(
const char* name,
int length,
vtkIdType* value);
00103
void SetVectorAttribute(
const char* name,
int length,
const vtkIdType* value);
00104
00105
#endif
00106
00109
int GetWordTypeAttribute(
const char* name,
int& value);
00110
00112
00113 vtkGetMacro(NumberOfAttributes,
int);
00115
00117
const char* GetAttributeName(
int idx);
00118
00121
const char* GetAttributeValue(
int idx);
00122
00124
virtual void RemoveAllAttributes();
00125
00127
00128 vtkXMLDataElement* GetParent();
00129
void SetParent(vtkXMLDataElement* parent);
00131
00133
virtual vtkXMLDataElement* GetRoot();
00134
00136
int GetNumberOfNestedElements();
00137
00139 vtkXMLDataElement* GetNestedElement(
int index);
00140
00142
void AddNestedElement(vtkXMLDataElement* element);
00143
00145
virtual void RemoveNestedElement(vtkXMLDataElement *);
00146
00148
virtual void RemoveAllNestedElements();
00149
00151
00153 vtkXMLDataElement* FindNestedElement(
const char*
id);
00154 vtkXMLDataElement* FindNestedElementWithName(
const char* name);
00155 vtkXMLDataElement* FindNestedElementWithNameAndId(
00156
const char* name,
const char*
id);
00157 vtkXMLDataElement* FindNestedElementWithNameAndAttribute(
00158
const char* name,
const char* att_name,
const char* att_value);
00160
00162 vtkXMLDataElement* LookupElement(
const char*
id);
00163
00165
00167 vtkGetMacro(XMLByteIndex,
unsigned long);
00168 vtkSetMacro(XMLByteIndex,
unsigned long);
00170
00175
virtual int IsEqualTo(vtkXMLDataElement *elem);
00176
00180
virtual void DeepCopy(vtkXMLDataElement *elem);
00181
00183
00188 vtkSetClampMacro(AttributeEncoding,
int,VTK_ENCODING_NONE,VTK_ENCODING_UNKNOWN);
00189 vtkGetMacro(AttributeEncoding,
int);
00191
00192
protected:
00193 vtkXMLDataElement();
00194 ~vtkXMLDataElement();
00195
00196
00197 char* Name;
00198
00199
00200 char* Id;
00201
00202
00203 unsigned long XMLByteIndex;
00204
00205
00206 unsigned long InlineDataPosition;
00207
00208
00209 char** AttributeNames;
00210 char** AttributeValues;
00211 int NumberOfAttributes;
00212 int AttributesSize;
00213 int AttributeEncoding;
00214
00215
00216 int NumberOfNestedElements;
00217 int NestedElementsSize;
00218 vtkXMLDataElement** NestedElements;
00219
00220
00221 vtkXMLDataElement* Parent;
00222
00223
00224
void ReadXMLAttributes(
const char** atts,
int encoding);
00225
void SeekInlineDataPosition(
vtkXMLDataParser* parser);
00226
00227
void PrintXML(ostream& os,
vtkIndent indent);
00228
00229
00230 vtkXMLDataElement* LookupElementInScope(
const char*
id);
00231 vtkXMLDataElement* LookupElementUpScope(
const char*
id);
00232
static int IsSpace(
char c);
00233
00234
00235
friend class vtkXMLDataParser;
00236
00237
00238
private:
00239 vtkXMLDataElement(
const vtkXMLDataElement&);
00240
void operator=(
const vtkXMLDataElement&);
00241 };
00242
00243
#endif