/* GskXmlBuilder: incremental xml structure building,
   useful for implementing parser-callbacks */

#ifndef GSK_XML_NODE_H_IN
#error "include this file by including gskxml.h"
#endif

G_BEGIN_DECLS

typedef struct _GskXmlBuilder GskXmlBuilder;
GskXmlBuilder *gsk_xml_builder_new      (GskXmlParseFlags flags);
void           gsk_xml_builder_free     (GskXmlBuilder *builder);

void           gsk_xml_builder_start    (GskXmlBuilder *builder,
                                         GskXmlString  *name,
                                         guint          n_attrs,
                                         GskXmlString**attrs);
void           gsk_xml_builder_start_ns (GskXmlBuilder *builder,
                                         GskXmlString  *name_ns,
                                         GskXmlString  *name,
                                         guint          n_attrs,
                                         GskXmlRawAttribute *attrs);
void           gsk_xml_builder_text     (GskXmlBuilder *builder,
                                         GskXmlString  *content);
void           gsk_xml_builder_add_node (GskXmlBuilder *builder,
                                         GskXmlNode    *node);
void           gsk_xml_builder_start_c  (GskXmlBuilder *builder,
                                         const char    *name,
                                         guint          n_attrs,
                                         char        **attrs);
void           gsk_xml_builder_text_c   (GskXmlBuilder *builder,
                                         const char    *content);

/* NOTE: name is optional
   NOTE: return-value is not a new reference, but a peeked version
   of an internal structure.  you should 'ref' it to hold onto it.
 */
GskXmlNode    *gsk_xml_builder_end   (GskXmlBuilder *builder,
                                      GskXmlString  *name);


/* will return NULL until there is a document to return;
   you must unref a non-NULL return value (ie you take ownership) */
GskXmlNode    *gsk_xml_builder_get_doc(GskXmlBuilder *builder);

G_END_DECLS


syntax highlighted by Code2HTML, v. 0.9.1