00001
00038 #ifndef ELEMENT_H_0211250048
00039 #define ELEMENT_H_0211250048
00040
00041 #include "export.h"
00042
00043 #include "list.h"
00044
00045 #include <expat.h>
00046
00047 #ifdef __cplusplus
00048 extern "C" {
00049 #endif
00050
00056 typedef struct scew_element scew_element;
00057
00063 typedef struct scew_attribute scew_attribute;
00064
00076 typedef scew_bool (*scew_element_cmp_hook) (scew_element const *,
00077 scew_element const *);
00078
00079
00096 extern SCEW_API scew_element* scew_element_create (XML_Char const *name);
00097
00109 extern SCEW_API scew_element* scew_element_copy (scew_element const *element);
00110
00119 extern SCEW_API void scew_element_free (scew_element *element);
00120
00121
00140 extern SCEW_API scew_element*
00141 scew_element_by_name (scew_element const *element, XML_Char const *name);
00142
00155 extern SCEW_API scew_element*
00156 scew_element_by_index (scew_element const *element, unsigned int index);
00157
00172 extern SCEW_API scew_list*
00173 scew_element_list_by_name (scew_element const *element, XML_Char const *name);
00174
00175
00213 extern SCEW_API scew_bool scew_element_compare (scew_element const *a,
00214 scew_element const *b,
00215 scew_element_cmp_hook hook);
00216
00217
00234 extern SCEW_API XML_Char const*
00235 scew_element_name (scew_element const *element);
00236
00248 extern SCEW_API XML_Char const*
00249 scew_element_contents (scew_element const *element);
00250
00263 extern SCEW_API XML_Char const* scew_element_set_name (scew_element *element,
00264 XML_Char const *name);
00265
00277 extern SCEW_API XML_Char const*
00278 scew_element_set_contents (scew_element *element, XML_Char const *contents);
00279
00288 extern SCEW_API void scew_element_free_contents (scew_element *element);
00289
00290
00308 extern SCEW_API unsigned int scew_element_count (scew_element const *element);
00309
00320 extern SCEW_API scew_element*
00321 scew_element_parent (scew_element const *element);
00322
00335 extern SCEW_API scew_list* scew_element_children (scew_element const *element);
00336
00348 extern SCEW_API scew_element* scew_element_add (scew_element *element,
00349 XML_Char const *name);
00350
00363 extern SCEW_API scew_element* scew_element_add_pair (scew_element *element,
00364 XML_Char const *name,
00365 XML_Char const *contents);
00366
00382 extern SCEW_API scew_element* scew_element_add_element (scew_element *element,
00383 scew_element *child);
00384
00394 extern SCEW_API void scew_element_delete_all (scew_element *element);
00395
00405 extern SCEW_API void scew_element_delete_all_by_name (scew_element *element,
00406 XML_Char const *name);
00407
00417 extern SCEW_API void scew_element_delete_by_name (scew_element *element,
00418 XML_Char const *name);
00419
00429 extern SCEW_API void scew_element_delete_by_index (scew_element *element,
00430 unsigned int index);
00431
00441 extern SCEW_API void scew_element_detach (scew_element *element);
00442
00443
00458 extern SCEW_API unsigned int
00459 scew_element_attribute_count (scew_element const *element);
00460
00472 extern SCEW_API scew_list*
00473 scew_element_attributes (scew_element const *element);
00474
00486 extern SCEW_API scew_attribute*
00487 scew_element_attribute_by_name (scew_element const *element,
00488 XML_Char const *name);
00489
00502 extern SCEW_API scew_attribute*
00503 scew_element_attribute_by_index (scew_element const *element,
00504 unsigned int index);
00505
00524 extern SCEW_API scew_attribute*
00525 scew_element_add_attribute (scew_element *element, scew_attribute *attribute);
00526
00544 extern SCEW_API scew_attribute*
00545 scew_element_add_attribute_pair (scew_element *element,
00546 XML_Char const *name,
00547 XML_Char const *value);
00548
00557 extern SCEW_API void scew_element_delete_attribute_all (scew_element *element);
00558
00568 extern SCEW_API void scew_element_delete_attribute (scew_element *element,
00569 scew_attribute *attribute);
00570
00580 extern SCEW_API void
00581 scew_element_delete_attribute_by_name (scew_element *element,
00582 XML_Char const* name);
00583
00594 extern SCEW_API void
00595 scew_element_delete_attribute_by_index (scew_element *element,
00596 unsigned int index);
00597
00598 #ifdef __cplusplus
00599 }
00600 #endif
00601
00602 #endif