1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
// File: LDOM_BasicElement.hxx
// Created: 26.06.01 20:04:27
// Author: Alexander GRIGORIEV
// Copyright: OpenCascade 2001
// History: AGV 140202: Repl.(const char *) for (LDOMBasicString) => myTagName
#ifndef LDOM_BasicElement_HeaderFile
#define LDOM_BasicElement_HeaderFile
#include <LDOM_BasicNode.hxx>
#include <LDOMBasicString.hxx>
#include <LDOM_Node.hxx>
class LDOM_XmlReader;
class LDOMParser;
class LDOM_NodeList;
class LDOM_Element;
class LDOM_BasicAttribute;
#ifdef WNT
// Disable the warning: "operator new unmatched by delete"
#pragma warning (push)
#pragma warning (disable:4291)
#endif
// Class LDOM_BasicElement
//
class LDOM_BasicElement : public LDOM_BasicNode
{
public:
void * operator new (size_t, void * anAddress) { return anAddress; }
// ---------- PUBLIC METHODS ----------
LDOM_BasicElement ()
: LDOM_BasicNode (LDOM_Node::UNKNOWN),
myTagName (NULL),
myAttributeMask (0),
myFirstChild (NULL) {}
// Empty constructor
static LDOM_BasicElement& Create (const char * aName,
const Standard_Integer aLength,
const Handle(LDOM_MemManager)& aDoc);
// Standard_EXPORT LDOM_BasicElement (const LDOM_BasicElement& theOther);
// Copy constructor
Standard_EXPORT LDOM_BasicElement&
operator = (const LDOM_NullPtr * aNull);
// Nullify
Standard_EXPORT ~LDOM_BasicElement ();
// Destructor
const char * GetTagName () const { return myTagName; }
const LDOM_BasicNode *
GetFirstChild () const { return myFirstChild; }
Standard_EXPORT const LDOM_BasicNode *
GetLastChild () const;
Standard_EXPORT const LDOM_BasicAttribute&
GetAttribute (const LDOMBasicString& aName,
const LDOM_BasicNode * aLastCh) const;
// Search for attribute name, using or setting myFirstAttribute
protected:
// ---------- PROTECTED METHODS ----------
// LDOM_BasicElement (const LDOM_Element& anElement);
// Constructor
Standard_EXPORT const LDOM_BasicNode *
AddAttribute (const LDOMBasicString& anAttrName,
const LDOMBasicString& anAttrValue,
const Handle(LDOM_MemManager)& aDoc,
const LDOM_BasicNode * aLastCh);
// add or replace an attribute to the element
Standard_EXPORT const LDOM_BasicNode *
RemoveAttribute (const LDOMBasicString& aName,
const LDOM_BasicNode * aLastCh) const;
Standard_EXPORT void
RemoveChild (const LDOM_BasicNode * aChild) const;
// remove a child element
Standard_EXPORT void
AppendChild (const LDOM_BasicNode * aChild,
const LDOM_BasicNode *& aLastCh) const;
// append a child node to the end of the list
private:
friend class LDOMParser;
friend class LDOM_XmlReader;
friend class LDOM_Document;
friend class LDOM_Element;
friend class LDOM_Node;
// ---------- PRIVATE METHODS ----------
const LDOM_BasicAttribute *
GetFirstAttribute (const LDOM_BasicNode *& aLastCh,
const LDOM_BasicNode **& thePrN) const;
void RemoveNodes ();
void ReplaceElement (const LDOM_BasicElement& anOther,
const Handle(LDOM_MemManager)& aDoc);
// remark: recursive
void AddElementsByTagName (LDOM_NodeList& aList,
const LDOMBasicString& aTagName) const;
// remark: recursive
void AddAttributes (LDOM_NodeList& aList,
const LDOM_BasicNode * aLastCh) const;
// add attributes to list
private:
// ---------- PRIVATE FIELDS ----------
// LDOMBasicString myTagName;
const char * myTagName;
unsigned long myAttributeMask;
LDOM_BasicNode * myFirstChild;
};
#ifdef WNT
#pragma warning (pop)
#endif
#endif
|