diff options
author | Mike Buland <eichlan@xagasoft.com> | 2007-06-12 01:28:27 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2007-06-12 01:28:27 +0000 |
commit | 4cb166570a8e2e97216bf6c7aeb99b971ff58ad7 (patch) | |
tree | b8d22af96957666ac761b6ca1b57da1eee2e56a5 /src/old/xmldocument.h | |
parent | b6f50f249ba3b18c597531a2d5dbc45f7bfa3eaa (diff) | |
download | libbu++-4cb166570a8e2e97216bf6c7aeb99b971ff58ad7.tar.gz libbu++-4cb166570a8e2e97216bf6c7aeb99b971ff58ad7.tar.bz2 libbu++-4cb166570a8e2e97216bf6c7aeb99b971ff58ad7.tar.xz libbu++-4cb166570a8e2e97216bf6c7aeb99b971ff58ad7.zip |
Moved out the xml system again. I think that if I am going to do it again,
I'm going to do it over from scratch, that was just painful. Also, started in
again on the server system, it's looking pretty good, already got connections
working, next up is managing data flow through clients and protocols!
Diffstat (limited to 'src/old/xmldocument.h')
-rw-r--r-- | src/old/xmldocument.h | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/src/old/xmldocument.h b/src/old/xmldocument.h new file mode 100644 index 0000000..e0c36eb --- /dev/null +++ b/src/old/xmldocument.h | |||
@@ -0,0 +1,165 @@ | |||
1 | #ifndef XMLDOCUMENT | ||
2 | #define XMLDOCUMENT | ||
3 | |||
4 | #include "xmlnode.h" | ||
5 | |||
6 | /** | ||
7 | * Keeps track of an easily managed set of XmlNode information. Allows simple | ||
8 | * operations for logical writing to and reading from XML structures. Using | ||
9 | * already formed structures is simply done through the XmlNode structures, | ||
10 | * and the getRoot function here. Creation is performed through a simple set | ||
11 | * of operations that creates the data in a stream type format. | ||
12 | *@author Mike Buland | ||
13 | */ | ||
14 | class XmlDocument | ||
15 | { | ||
16 | public: | ||
17 | /** | ||
18 | * Construct either a blank XmlDocuemnt or construct a document around an | ||
19 | * existing XmlNode. Be careful, once an XmlNode is passed into a document | ||
20 | * the document takes over ownership and will delete it when the XmlDocument | ||
21 | * is deleted. | ||
22 | *@param pRoot The XmlNode to use as the root of this document, or NULL if | ||
23 | * you want to start a new document. | ||
24 | */ | ||
25 | XmlDocument( XmlNode *pRoot=NULL ); | ||
26 | |||
27 | /** | ||
28 | * Destroy all contained nodes. | ||
29 | */ | ||
30 | virtual ~XmlDocument(); | ||
31 | |||
32 | /** | ||
33 | * Add a new node to the document. The new node is appended to the end of | ||
34 | * the current context, i.e. XmlNode, and the new node, provided it isn't | ||
35 | * close as part of this operation, will become the current context. | ||
36 | *@param sName The name of the new node to add. | ||
37 | *@param sContent A content string to be placed inside of the new node. | ||
38 | *@param bClose Set this to true to close the node immediately after adding | ||
39 | * the node and setting the content and name. If this is set to true the | ||
40 | * node is appended, but the context node doesn't change. | ||
41 | */ | ||
42 | void addNode( const Bu::FString &sName ); | ||
43 | |||
44 | /** | ||
45 | * Close the current node context. This will move the current context to | ||
46 | * the parent node of the former current node. If the current node was the | ||
47 | * root then the "completed" flag is set and no more operations are allowed. | ||
48 | */ | ||
49 | void closeNode(); | ||
50 | |||
51 | /** | ||
52 | * Change the content of the current node at the current position between | ||
53 | * nodes. | ||
54 | *@param sContent The new content of the current node. | ||
55 | */ | ||
56 | void setContent( const char *sContent ); | ||
57 | |||
58 | /** | ||
59 | * Add a named property to the current context node. | ||
60 | *@param sName The name of the property to add. | ||
61 | *@param sValue The string value of the property. | ||
62 | */ | ||
63 | void addProperty( const char *sName, const char *sValue ); | ||
64 | |||
65 | /** | ||
66 | * Add a named property to the current context node, converting the | ||
67 | * numerical parameter to text using standrd printf style conversion. | ||
68 | *@param sName The name of the property to add. | ||
69 | *@param nValue The numerical value to add. | ||
70 | */ | ||
71 | void addProperty( const char *sName, const unsigned char nValue ); | ||
72 | |||
73 | /** | ||
74 | * Add a named property to the current context node, converting the | ||
75 | * numerical parameter to text using standrd printf style conversion. | ||
76 | *@param sName The name of the property to add. | ||
77 | *@param nValue The numerical value to add. | ||
78 | */ | ||
79 | void addProperty( const char *sName, const char nValue ); | ||
80 | |||
81 | /** | ||
82 | * Add a named property to the current context node, converting the | ||
83 | * numerical parameter to text using standrd printf style conversion. | ||
84 | *@param sName The name of the property to add. | ||
85 | *@param nValue The numerical value to add. | ||
86 | */ | ||
87 | void addProperty( const char *sName, const unsigned short nValue ); | ||
88 | |||
89 | /** | ||
90 | * Add a named property to the current context node, converting the | ||
91 | * numerical parameter to text using standrd printf style conversion. | ||
92 | *@param sName The name of the property to add. | ||
93 | *@param nValue The numerical value to add. | ||
94 | */ | ||
95 | void addProperty( const char *sName, const short nValue ); | ||
96 | |||
97 | /** | ||
98 | * Add a named property to the current context node, converting the | ||
99 | * numerical parameter to text using standrd printf style conversion. | ||
100 | *@param sName The name of the property to add. | ||
101 | *@param nValue The numerical value to add. | ||
102 | */ | ||
103 | void addProperty( const char *sName, const unsigned long nValue ); | ||
104 | |||
105 | /** | ||
106 | * Add a named property to the current context node, converting the | ||
107 | * numerical parameter to text using standrd printf style conversion. | ||
108 | *@param sName The name of the property to add. | ||
109 | *@param nValue The numerical value to add. | ||
110 | */ | ||
111 | void addProperty( const char *sName, const long nValue ); | ||
112 | |||
113 | /** | ||
114 | * Add a named property to the current context node, converting the | ||
115 | * numerical parameter to text using standrd printf style conversion. | ||
116 | *@param sName The name of the property to add. | ||
117 | *@param nValue The numerical value to add. | ||
118 | */ | ||
119 | void addProperty( const char *sName, const int nValue ); | ||
120 | |||
121 | /** | ||
122 | * Add a named property to the current context node, converting the | ||
123 | * numerical parameter to text using standrd printf style conversion. | ||
124 | *@param sName The name of the property to add. | ||
125 | *@param dValue The numerical value to add. | ||
126 | */ | ||
127 | void addProperty( const char *sName, const double dValue ); | ||
128 | |||
129 | /** | ||
130 | * The XmlDocuemnt is considered completed if the root node has been closed. | ||
131 | * Once an XmlDocument has been completed, you can no longer perform | ||
132 | * operations on it. | ||
133 | *@return True if completed, false if still in progress. | ||
134 | */ | ||
135 | bool isCompleted(); | ||
136 | |||
137 | /** | ||
138 | * Get a pointer to the root object of this XmlDocument. | ||
139 | *@returns A pointer to an internally owned XmlNode. Do not delete this | ||
140 | * XmlNode. | ||
141 | */ | ||
142 | XmlNode *getRoot(); | ||
143 | |||
144 | /** | ||
145 | * Get a pointer to the root object of this XmlDocument, and remove the | ||
146 | * ownership from this object. | ||
147 | *@returns A pointer to an internally owned XmlNode. Do not delete this | ||
148 | * XmlNode. | ||
149 | */ | ||
150 | XmlNode *detatchRoot(); | ||
151 | |||
152 | /** | ||
153 | * Get the current context node, which could be the same as the root node. | ||
154 | *@returns A pointer to an internally owned XmlNode. Do not delete this | ||
155 | * XmlNode. | ||
156 | */ | ||
157 | XmlNode *getCurrent(); | ||
158 | |||
159 | private: | ||
160 | XmlNode *pRoot; /**< The root node. */ | ||
161 | XmlNode *pCurrent; /**< The current node. */ | ||
162 | bool bCompleted; /**< Is it completed? */ | ||
163 | }; | ||
164 | |||
165 | #endif | ||