Mercurial > pidgin
comparison libpurple/xmlnode.h @ 32819:2c6510167895 default tip
propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24)
to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 02 Jun 2012 02:30:49 +0000 |
parents | 98520ee78f12 |
children |
comparison
equal
deleted
inserted
replaced
32818:01ff09d4a463 | 32819:2c6510167895 |
---|---|
26 #ifndef _PURPLE_XMLNODE_H_ | 26 #ifndef _PURPLE_XMLNODE_H_ |
27 #define _PURPLE_XMLNODE_H_ | 27 #define _PURPLE_XMLNODE_H_ |
28 | 28 |
29 #include <glib.h> | 29 #include <glib.h> |
30 | 30 |
31 #ifdef __cplusplus | |
32 extern "C" { | |
33 #endif | |
34 | |
35 /** | 31 /** |
36 * The valid types for an xmlnode | 32 * The valid types for an xmlnode |
37 */ | 33 */ |
38 typedef enum _XMLNodeType | 34 typedef enum |
39 { | 35 { |
40 XMLNODE_TYPE_TAG, /**< Just a tag */ | 36 XMLNODE_TYPE_TAG, /**< Just a tag */ |
41 XMLNODE_TYPE_ATTRIB, /**< Has attributes */ | 37 XMLNODE_TYPE_ATTRIB, /**< Has attributes */ |
42 XMLNODE_TYPE_DATA /**< Has data */ | 38 XMLNODE_TYPE_DATA /**< Has data */ |
43 } XMLNodeType; | 39 } XMLNodeType; |
59 xmlnode *next; /**< The next node or @c NULL. */ | 55 xmlnode *next; /**< The next node or @c NULL. */ |
60 char *prefix; /**< The namespace prefix if any. */ | 56 char *prefix; /**< The namespace prefix if any. */ |
61 GHashTable *namespace_map; /**< The namespace map. */ | 57 GHashTable *namespace_map; /**< The namespace map. */ |
62 }; | 58 }; |
63 | 59 |
60 G_BEGIN_DECLS | |
61 | |
64 /** | 62 /** |
65 * Creates a new xmlnode. | 63 * Creates a new xmlnode. |
66 * | 64 * |
67 * @param name The name of the node. | 65 * @param name The name of the node. |
68 * | 66 * |
155 * @param attr The name of the attribute. | 153 * @param attr The name of the attribute. |
156 * @param value The value of the attribute. | 154 * @param value The value of the attribute. |
157 */ | 155 */ |
158 void xmlnode_set_attrib(xmlnode *node, const char *attr, const char *value); | 156 void xmlnode_set_attrib(xmlnode *node, const char *attr, const char *value); |
159 | 157 |
160 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_XMLNODE_C_) | 158 /** |
161 /** | 159 * Sets a namespaced attribute for a node |
162 * Sets a prefixed attribute for a node | |
163 * | 160 * |
164 * @param node The node to set an attribute for. | 161 * @param node The node to set an attribute for. |
165 * @param attr The name of the attribute to set | 162 * @param attr The name of the attribute to set |
166 * @param prefix The prefix of the attribute to ste | 163 * @param xmlns The namespace of the attribute to set |
164 * @param prefix The prefix of the attribute to set | |
167 * @param value The value of the attribute | 165 * @param value The value of the attribute |
168 * | |
169 * @deprecated Use xmlnode_set_attrib_full instead. | |
170 */ | |
171 void xmlnode_set_attrib_with_prefix(xmlnode *node, const char *attr, const char *prefix, const char *value); | |
172 | |
173 /** | |
174 * Sets a namespaced attribute for a node | |
175 * | |
176 * @param node The node to set an attribute for. | |
177 * @param attr The name of the attribute to set | |
178 * @param xmlns The namespace of the attribute to ste | |
179 * @param value The value of the attribute | |
180 * | |
181 * @deprecated Use xmlnode_set_attrib_full instead. | |
182 */ | |
183 void xmlnode_set_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns, const char *value); | |
184 #endif /* PURPLE_DISABLE_DEPRECATED */ | |
185 | |
186 /** | |
187 * Sets a namespaced attribute for a node | |
188 * | |
189 * @param node The node to set an attribute for. | |
190 * @param attr The name of the attribute to set | |
191 * @param xmlns The namespace of the attribute to ste | |
192 * @param prefix The prefix of the attribute to ste | |
193 * @param value The value of the attribute | |
194 * | |
195 * @since 2.6.0 | |
196 */ | 166 */ |
197 void xmlnode_set_attrib_full(xmlnode *node, const char *attr, const char *xmlns, | 167 void xmlnode_set_attrib_full(xmlnode *node, const char *attr, const char *xmlns, |
198 const char *prefix, const char *value); | 168 const char *prefix, const char *value); |
199 | 169 |
200 /** | 170 /** |
247 * Returns the namespace of a node | 217 * Returns the namespace of a node |
248 * | 218 * |
249 * @param node The node to get the namepsace from | 219 * @param node The node to get the namepsace from |
250 * @return The namespace of this node | 220 * @return The namespace of this node |
251 */ | 221 */ |
252 const char *xmlnode_get_namespace(xmlnode *node); | 222 const char *xmlnode_get_namespace(const xmlnode *node); |
223 | |
224 /** | |
225 * Returns the current default namespace. The default | |
226 * namespace is the current namespace which applies to child | |
227 * elements which are unprefixed and which do not contain their | |
228 * own namespace. | |
229 * | |
230 * For example, given: | |
231 * \verbatim | |
232 * <iq type='get' xmlns='jabber:client' xmlns:ns1='http://example.org/ns1'> | |
233 * <ns1:element><child1/></ns1:element> | |
234 * </iq> | |
235 * \endverbatim | |
236 * | |
237 * The default namespace of all nodes (including 'child1') is "jabber:client", | |
238 * though the namespace for 'element' is "http://example.org/ns1". | |
239 * | |
240 * @param node The node for which to return the default namespace | |
241 * @return The default namespace of this node | |
242 */ | |
243 const char *xmlnode_get_default_namespace(const xmlnode *node); | |
244 | |
245 /** | |
246 * Returns the defined namespace for a prefix. | |
247 * | |
248 * @param node The node from which to start the search. | |
249 * @param prefix The prefix for which to return the associated namespace. | |
250 * @return The namespace for this prefix. | |
251 */ | |
252 const char *xmlnode_get_prefix_namespace(const xmlnode *node, const char *prefix); | |
253 | 253 |
254 /** | 254 /** |
255 * Sets the prefix of a node | 255 * Sets the prefix of a node |
256 * | 256 * |
257 * @param node The node to qualify | 257 * @param node The node to qualify |
266 * @return The prefix of this node | 266 * @return The prefix of this node |
267 */ | 267 */ |
268 const char *xmlnode_get_prefix(const xmlnode *node); | 268 const char *xmlnode_get_prefix(const xmlnode *node); |
269 | 269 |
270 /** | 270 /** |
271 * Remove all element prefixes from an xmlnode tree. The prefix's | |
272 * namespace is transformed into the default namespace for an element. | |
273 * | |
274 * Note that this will not necessarily remove all prefixes in use | |
275 * (prefixed attributes may still exist), and that this usage may | |
276 * break some applications (SOAP / XPath apparently often rely on | |
277 * the prefixes having the same name. | |
278 * | |
279 * @param node The node from which to strip prefixes | |
280 */ | |
281 void xmlnode_strip_prefixes(xmlnode *node); | |
282 | |
283 /** | |
271 * Gets the parent node. | 284 * Gets the parent node. |
272 * | 285 * |
273 * @param child The child node. | 286 * @param child The child node. |
274 * | 287 * |
275 * @return The parent or NULL. | 288 * @return The parent or NULL. |
276 * | |
277 * @since 2.6.0 | |
278 */ | 289 */ |
279 xmlnode *xmlnode_get_parent(const xmlnode *child); | 290 xmlnode *xmlnode_get_parent(const xmlnode *child); |
280 | 291 |
281 /** | 292 /** |
282 * Returns the node in a string of xml. | 293 * Returns the node in a string of xml. |
341 * the user if the file cannot be read. | 352 * the user if the file cannot be read. |
342 * @param process The subsystem that is calling xmlnode_from_file. Used as | 353 * @param process The subsystem that is calling xmlnode_from_file. Used as |
343 * the category for debugging. | 354 * the category for debugging. |
344 * | 355 * |
345 * @return The new node or NULL if an error occurred. | 356 * @return The new node or NULL if an error occurred. |
346 * | |
347 * @since 2.6.0 | |
348 */ | 357 */ |
349 xmlnode *xmlnode_from_file(const char *dir, const char *filename, | 358 xmlnode *xmlnode_from_file(const char *dir, const char *filename, |
350 const char *description, const char *process); | 359 const char *description, const char *process); |
351 | 360 |
352 #ifdef __cplusplus | 361 G_END_DECLS |
353 } | |
354 #endif | |
355 | 362 |
356 #endif /* _PURPLE_XMLNODE_H_ */ | 363 #endif /* _PURPLE_XMLNODE_H_ */ |
364 |