|
Packit |
caecb6 |
/*
|
|
Packit |
caecb6 |
* Copyright (C) 2018 Richard Hughes <richard@hughsie.com>
|
|
Packit |
caecb6 |
*
|
|
Packit |
caecb6 |
* SPDX-License-Identifier: LGPL-2.1+
|
|
Packit |
caecb6 |
*/
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
#pragma once
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
#include <glib-object.h>
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
G_BEGIN_DECLS
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
#define XB_TYPE_NODE (xb_node_get_type ())
|
|
Packit |
caecb6 |
G_DECLARE_DERIVABLE_TYPE (XbNode, xb_node, XB, NODE, GObject)
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
struct _XbNodeClass {
|
|
Packit |
caecb6 |
GObjectClass parent_class;
|
|
Packit |
caecb6 |
/*< private >*/
|
|
Packit |
caecb6 |
void (*_xb_reserved1) (void);
|
|
Packit |
caecb6 |
void (*_xb_reserved2) (void);
|
|
Packit |
caecb6 |
void (*_xb_reserved3) (void);
|
|
Packit |
caecb6 |
void (*_xb_reserved4) (void);
|
|
Packit |
caecb6 |
void (*_xb_reserved5) (void);
|
|
Packit |
caecb6 |
void (*_xb_reserved6) (void);
|
|
Packit |
caecb6 |
void (*_xb_reserved7) (void);
|
|
Packit |
caecb6 |
};
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
/**
|
|
Packit |
caecb6 |
* XbNodeExportFlags:
|
|
Packit |
caecb6 |
* @XB_NODE_EXPORT_FLAG_NONE: No extra flags to use
|
|
Packit |
caecb6 |
* @XB_NODE_EXPORT_FLAG_ADD_HEADER: Add an XML header to the data
|
|
Packit |
caecb6 |
* @XB_NODE_EXPORT_FLAG_FORMAT_MULTILINE: Split up children with a newline
|
|
Packit |
caecb6 |
* @XB_NODE_EXPORT_FLAG_FORMAT_INDENT: Indent the XML by child depth
|
|
Packit |
caecb6 |
* @XB_NODE_EXPORT_FLAG_INCLUDE_SIBLINGS: Include the siblings when converting
|
|
Packit |
caecb6 |
* @XB_NODE_EXPORT_FLAG_ONLY_CHILDREN: Only export the children of the node
|
|
Packit |
caecb6 |
*
|
|
Packit |
caecb6 |
* The flags for converting to XML.
|
|
Packit |
caecb6 |
**/
|
|
Packit |
caecb6 |
typedef enum {
|
|
Packit |
caecb6 |
XB_NODE_EXPORT_FLAG_NONE = 0, /* Since: 0.1.0 */
|
|
Packit |
caecb6 |
XB_NODE_EXPORT_FLAG_ADD_HEADER = 1 << 0, /* Since: 0.1.0 */
|
|
Packit |
caecb6 |
XB_NODE_EXPORT_FLAG_FORMAT_MULTILINE = 1 << 1, /* Since: 0.1.0 */
|
|
Packit |
caecb6 |
XB_NODE_EXPORT_FLAG_FORMAT_INDENT = 1 << 2, /* Since: 0.1.0 */
|
|
Packit |
caecb6 |
XB_NODE_EXPORT_FLAG_INCLUDE_SIBLINGS = 1 << 3, /* Since: 0.1.0 */
|
|
Packit |
caecb6 |
XB_NODE_EXPORT_FLAG_ONLY_CHILDREN = 1 << 4, /* Since: 0.1.0 */
|
|
Packit |
caecb6 |
/*< private >*/
|
|
Packit |
caecb6 |
XB_NODE_EXPORT_FLAG_LAST
|
|
Packit |
caecb6 |
} XbNodeExportFlags;
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
typedef gboolean (*XbNodeTransmogrifyFunc) (XbNode *self,
|
|
Packit |
caecb6 |
gpointer user_data);
|
|
Packit |
caecb6 |
gboolean xb_node_transmogrify (XbNode *self,
|
|
Packit |
caecb6 |
XbNodeTransmogrifyFunc func_text,
|
|
Packit |
caecb6 |
XbNodeTransmogrifyFunc func_tail,
|
|
Packit |
caecb6 |
gpointer user_data);
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
gchar *xb_node_export (XbNode *self,
|
|
Packit |
caecb6 |
XbNodeExportFlags flags,
|
|
Packit |
caecb6 |
GError **error);
|
|
Packit |
caecb6 |
GBytes *xb_node_get_data (XbNode *self,
|
|
Packit |
caecb6 |
const gchar *key);
|
|
Packit |
caecb6 |
void xb_node_set_data (XbNode *self,
|
|
Packit |
caecb6 |
const gchar *key,
|
|
Packit |
caecb6 |
GBytes *data);
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
XbNode *xb_node_get_root (XbNode *self);
|
|
Packit |
caecb6 |
XbNode *xb_node_get_parent (XbNode *self);
|
|
Packit |
caecb6 |
XbNode *xb_node_get_next (XbNode *self);
|
|
Packit |
caecb6 |
XbNode *xb_node_get_child (XbNode *self);
|
|
Packit |
caecb6 |
GPtrArray *xb_node_get_children (XbNode *self);
|
|
Packit |
caecb6 |
const gchar *xb_node_get_element (XbNode *self);
|
|
Packit |
caecb6 |
const gchar *xb_node_get_text (XbNode *self);
|
|
Packit |
caecb6 |
guint64 xb_node_get_text_as_uint (XbNode *self);
|
|
Packit |
caecb6 |
const gchar *xb_node_get_tail (XbNode *self);
|
|
Packit |
caecb6 |
const gchar *xb_node_get_attr (XbNode *self,
|
|
Packit |
caecb6 |
const gchar *name);
|
|
Packit |
caecb6 |
guint64 xb_node_get_attr_as_uint (XbNode *self,
|
|
Packit |
caecb6 |
const gchar *name);
|
|
Packit |
caecb6 |
guint xb_node_get_depth (XbNode *self);
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
|
|
Packit |
caecb6 |
G_END_DECLS
|