Blame src/xb-node.h

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