/* DomMutationObservers.c generated by valac 0.56.19, the Vala compiler
 * generated from DomMutationObservers.vala, do not modify */

/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
/*
 *
 * Copyright (C) 2016  Daniel Espinosa <esodan@gmail.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.

 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.

 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
 *
 * Authors:
 *      Daniel Espinosa <esodan@gmail.com>
 */

#include "gxml/gxml.h"
#include <glib.h>
#include <gee.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include "gxml.h"

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif

enum  {
	GXML_DOM_MUTATION_OBSERVER_INIT_0_PROPERTY,
	GXML_DOM_MUTATION_OBSERVER_INIT_CHILD_LIST_PROPERTY,
	GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTES_PROPERTY,
	GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_PROPERTY,
	GXML_DOM_MUTATION_OBSERVER_INIT_SUBTREE_PROPERTY,
	GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_OLD_VALUE_PROPERTY,
	GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_OLD_VALUE_PROPERTY,
	GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_FILTER_PROPERTY,
	GXML_DOM_MUTATION_OBSERVER_INIT_NUM_PROPERTIES
};
static GParamSpec* gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

struct _GXmlDomMutationObserverInitPrivate {
	gboolean _child_list;
	gboolean _attributes;
	gboolean _character_data;
	gboolean _subtree;
	gboolean _attribute_old_value;
	gboolean _character_data_old_value;
	GeeList* _attribute_filter;
};

static gint GXmlDomMutationObserverInit_private_offset;
static gpointer gxml_dom_mutation_observer_init_parent_class = NULL;

static GType gxml_dom_mutation_observer_get_type_once (void);
static void gxml_dom_mutation_observer_init_finalize (GObject * obj);
static GType gxml_dom_mutation_observer_init_get_type_once (void);
static void _vala_gxml_dom_mutation_observer_init_get_property (GObject * object,
                                                         guint property_id,
                                                         GValue * value,
                                                         GParamSpec * pspec);
static void _vala_gxml_dom_mutation_observer_init_set_property (GObject * object,
                                                         guint property_id,
                                                         const GValue * value,
                                                         GParamSpec * pspec);
static GType gxml_dom_mutation_record_get_type_once (void);

void
gxml_dom_mutation_observer_observe (GXmlDomMutationObserver* self,
                                    GXmlNode* target,
                                    GXmlDomMutationObserverInit* options)
{
	GXmlDomMutationObserverIface* _iface_;
	g_return_if_fail (self != NULL);
	_iface_ = GXML_DOM_MUTATION_OBSERVER_GET_INTERFACE (self);
	if (_iface_->observe) {
		_iface_->observe (self, target, options);
	}
}

void
gxml_dom_mutation_observer_disconnect (GXmlDomMutationObserver* self)
{
	GXmlDomMutationObserverIface* _iface_;
	g_return_if_fail (self != NULL);
	_iface_ = GXML_DOM_MUTATION_OBSERVER_GET_INTERFACE (self);
	if (_iface_->disconnect) {
		_iface_->disconnect (self);
	}
}

GeeList*
gxml_dom_mutation_observer_take_records (GXmlDomMutationObserver* self)
{
	GXmlDomMutationObserverIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_OBSERVER_GET_INTERFACE (self);
	if (_iface_->take_records) {
		return _iface_->take_records (self);
	}
	return NULL;
}

static void
gxml_dom_mutation_observer_default_init (GXmlDomMutationObserverIface * iface,
                                         gpointer iface_data)
{
}

/**
 * Implementers should use constructor with one argument {@link GXml.DomMutationCallback}
 * to use internally.
 */
static GType
gxml_dom_mutation_observer_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (GXmlDomMutationObserverIface), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gxml_dom_mutation_observer_default_init, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
	GType gxml_dom_mutation_observer_type_id;
	gxml_dom_mutation_observer_type_id = g_type_register_static (G_TYPE_INTERFACE, "GXmlDomMutationObserver", &g_define_type_info, 0);
	g_type_interface_add_prerequisite (gxml_dom_mutation_observer_type_id, G_TYPE_OBJECT);
	return gxml_dom_mutation_observer_type_id;
}

GType
gxml_dom_mutation_observer_get_type (void)
{
	static volatile gsize gxml_dom_mutation_observer_type_id__once = 0;
	if (g_once_init_enter (&gxml_dom_mutation_observer_type_id__once)) {
		GType gxml_dom_mutation_observer_type_id;
		gxml_dom_mutation_observer_type_id = gxml_dom_mutation_observer_get_type_once ();
		g_once_init_leave (&gxml_dom_mutation_observer_type_id__once, gxml_dom_mutation_observer_type_id);
	}
	return gxml_dom_mutation_observer_type_id__once;
}

static inline gpointer
gxml_dom_mutation_observer_init_get_instance_private (GXmlDomMutationObserverInit* self)
{
	return G_STRUCT_MEMBER_P (self, GXmlDomMutationObserverInit_private_offset);
}

gboolean
gxml_dom_mutation_observer_init_get_child_list (GXmlDomMutationObserverInit* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_child_list;
	return result;
}

void
gxml_dom_mutation_observer_init_set_child_list (GXmlDomMutationObserverInit* self,
                                                gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = gxml_dom_mutation_observer_init_get_child_list (self);
	if (old_value != value) {
		self->priv->_child_list = value;
		g_object_notify_by_pspec ((GObject *) self, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_CHILD_LIST_PROPERTY]);
	}
}

gboolean
gxml_dom_mutation_observer_init_get_attributes (GXmlDomMutationObserverInit* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_attributes;
	return result;
}

void
gxml_dom_mutation_observer_init_set_attributes (GXmlDomMutationObserverInit* self,
                                                gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = gxml_dom_mutation_observer_init_get_attributes (self);
	if (old_value != value) {
		self->priv->_attributes = value;
		g_object_notify_by_pspec ((GObject *) self, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTES_PROPERTY]);
	}
}

gboolean
gxml_dom_mutation_observer_init_get_character_data (GXmlDomMutationObserverInit* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_character_data;
	return result;
}

void
gxml_dom_mutation_observer_init_set_character_data (GXmlDomMutationObserverInit* self,
                                                    gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = gxml_dom_mutation_observer_init_get_character_data (self);
	if (old_value != value) {
		self->priv->_character_data = value;
		g_object_notify_by_pspec ((GObject *) self, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_PROPERTY]);
	}
}

gboolean
gxml_dom_mutation_observer_init_get_subtree (GXmlDomMutationObserverInit* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_subtree;
	return result;
}

void
gxml_dom_mutation_observer_init_set_subtree (GXmlDomMutationObserverInit* self,
                                             gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = gxml_dom_mutation_observer_init_get_subtree (self);
	if (old_value != value) {
		self->priv->_subtree = value;
		g_object_notify_by_pspec ((GObject *) self, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_SUBTREE_PROPERTY]);
	}
}

gboolean
gxml_dom_mutation_observer_init_get_attribute_old_value (GXmlDomMutationObserverInit* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_attribute_old_value;
	return result;
}

void
gxml_dom_mutation_observer_init_set_attribute_old_value (GXmlDomMutationObserverInit* self,
                                                         gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = gxml_dom_mutation_observer_init_get_attribute_old_value (self);
	if (old_value != value) {
		self->priv->_attribute_old_value = value;
		g_object_notify_by_pspec ((GObject *) self, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_OLD_VALUE_PROPERTY]);
	}
}

gboolean
gxml_dom_mutation_observer_init_get_character_data_old_value (GXmlDomMutationObserverInit* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_character_data_old_value;
	return result;
}

void
gxml_dom_mutation_observer_init_set_character_data_old_value (GXmlDomMutationObserverInit* self,
                                                              gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = gxml_dom_mutation_observer_init_get_character_data_old_value (self);
	if (old_value != value) {
		self->priv->_character_data_old_value = value;
		g_object_notify_by_pspec ((GObject *) self, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_OLD_VALUE_PROPERTY]);
	}
}

GeeList*
gxml_dom_mutation_observer_init_get_attribute_filter (GXmlDomMutationObserverInit* self)
{
	GeeList* result;
	GeeList* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_attribute_filter;
	result = _tmp0_;
	return result;
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

void
gxml_dom_mutation_observer_init_set_attribute_filter (GXmlDomMutationObserverInit* self,
                                                      GeeList* value)
{
	GeeList* old_value;
	g_return_if_fail (self != NULL);
	old_value = gxml_dom_mutation_observer_init_get_attribute_filter (self);
	if (old_value != value) {
		GeeList* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_attribute_filter);
		self->priv->_attribute_filter = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_FILTER_PROPERTY]);
	}
}

GXmlDomMutationObserverInit*
gxml_dom_mutation_observer_init_construct (GType object_type)
{
	GXmlDomMutationObserverInit * self = NULL;
	self = (GXmlDomMutationObserverInit*) g_object_new (object_type, NULL);
	return self;
}

GXmlDomMutationObserverInit*
gxml_dom_mutation_observer_init_new (void)
{
	return gxml_dom_mutation_observer_init_construct (GXML_TYPE_DOM_MUTATION_OBSERVER_INIT);
}

static void
gxml_dom_mutation_observer_init_class_init (GXmlDomMutationObserverInitClass * klass,
                                            gpointer klass_data)
{
	gxml_dom_mutation_observer_init_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &GXmlDomMutationObserverInit_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_gxml_dom_mutation_observer_init_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_gxml_dom_mutation_observer_init_set_property;
	G_OBJECT_CLASS (klass)->finalize = gxml_dom_mutation_observer_init_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_DOM_MUTATION_OBSERVER_INIT_CHILD_LIST_PROPERTY, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_CHILD_LIST_PROPERTY] = g_param_spec_boolean ("child-list", "child-list", "child-list", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTES_PROPERTY, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTES_PROPERTY] = g_param_spec_boolean ("attributes", "attributes", "attributes", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_PROPERTY, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_PROPERTY] = g_param_spec_boolean ("character-data", "character-data", "character-data", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_DOM_MUTATION_OBSERVER_INIT_SUBTREE_PROPERTY, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_SUBTREE_PROPERTY] = g_param_spec_boolean ("subtree", "subtree", "subtree", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_OLD_VALUE_PROPERTY, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_OLD_VALUE_PROPERTY] = g_param_spec_boolean ("attribute-old-value", "attribute-old-value", "attribute-old-value", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_OLD_VALUE_PROPERTY, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_OLD_VALUE_PROPERTY] = g_param_spec_boolean ("character-data-old-value", "character-data-old-value", "character-data-old-value", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_FILTER_PROPERTY, gxml_dom_mutation_observer_init_properties[GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_FILTER_PROPERTY] = g_param_spec_object ("attribute-filter", "attribute-filter", "attribute-filter", GEE_TYPE_LIST, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
gxml_dom_mutation_observer_init_instance_init (GXmlDomMutationObserverInit * self,
                                               gpointer klass)
{
	self->priv = gxml_dom_mutation_observer_init_get_instance_private (self);
	self->priv->_child_list = FALSE;
	self->priv->_subtree = FALSE;
}

static void
gxml_dom_mutation_observer_init_finalize (GObject * obj)
{
	GXmlDomMutationObserverInit * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GXML_TYPE_DOM_MUTATION_OBSERVER_INIT, GXmlDomMutationObserverInit);
	_g_object_unref0 (self->priv->_attribute_filter);
	G_OBJECT_CLASS (gxml_dom_mutation_observer_init_parent_class)->finalize (obj);
}

static GType
gxml_dom_mutation_observer_init_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (GXmlDomMutationObserverInitClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gxml_dom_mutation_observer_init_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GXmlDomMutationObserverInit), 0, (GInstanceInitFunc) gxml_dom_mutation_observer_init_instance_init, NULL };
	GType gxml_dom_mutation_observer_init_type_id;
	gxml_dom_mutation_observer_init_type_id = g_type_register_static (G_TYPE_OBJECT, "GXmlDomMutationObserverInit", &g_define_type_info, 0);
	GXmlDomMutationObserverInit_private_offset = g_type_add_instance_private (gxml_dom_mutation_observer_init_type_id, sizeof (GXmlDomMutationObserverInitPrivate));
	return gxml_dom_mutation_observer_init_type_id;
}

GType
gxml_dom_mutation_observer_init_get_type (void)
{
	static volatile gsize gxml_dom_mutation_observer_init_type_id__once = 0;
	if (g_once_init_enter (&gxml_dom_mutation_observer_init_type_id__once)) {
		GType gxml_dom_mutation_observer_init_type_id;
		gxml_dom_mutation_observer_init_type_id = gxml_dom_mutation_observer_init_get_type_once ();
		g_once_init_leave (&gxml_dom_mutation_observer_init_type_id__once, gxml_dom_mutation_observer_init_type_id);
	}
	return gxml_dom_mutation_observer_init_type_id__once;
}

static void
_vala_gxml_dom_mutation_observer_init_get_property (GObject * object,
                                                    guint property_id,
                                                    GValue * value,
                                                    GParamSpec * pspec)
{
	GXmlDomMutationObserverInit * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GXML_TYPE_DOM_MUTATION_OBSERVER_INIT, GXmlDomMutationObserverInit);
	switch (property_id) {
		case GXML_DOM_MUTATION_OBSERVER_INIT_CHILD_LIST_PROPERTY:
		g_value_set_boolean (value, gxml_dom_mutation_observer_init_get_child_list (self));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTES_PROPERTY:
		g_value_set_boolean (value, gxml_dom_mutation_observer_init_get_attributes (self));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_PROPERTY:
		g_value_set_boolean (value, gxml_dom_mutation_observer_init_get_character_data (self));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_SUBTREE_PROPERTY:
		g_value_set_boolean (value, gxml_dom_mutation_observer_init_get_subtree (self));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_OLD_VALUE_PROPERTY:
		g_value_set_boolean (value, gxml_dom_mutation_observer_init_get_attribute_old_value (self));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_OLD_VALUE_PROPERTY:
		g_value_set_boolean (value, gxml_dom_mutation_observer_init_get_character_data_old_value (self));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_FILTER_PROPERTY:
		g_value_set_object (value, gxml_dom_mutation_observer_init_get_attribute_filter (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_gxml_dom_mutation_observer_init_set_property (GObject * object,
                                                    guint property_id,
                                                    const GValue * value,
                                                    GParamSpec * pspec)
{
	GXmlDomMutationObserverInit * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GXML_TYPE_DOM_MUTATION_OBSERVER_INIT, GXmlDomMutationObserverInit);
	switch (property_id) {
		case GXML_DOM_MUTATION_OBSERVER_INIT_CHILD_LIST_PROPERTY:
		gxml_dom_mutation_observer_init_set_child_list (self, g_value_get_boolean (value));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTES_PROPERTY:
		gxml_dom_mutation_observer_init_set_attributes (self, g_value_get_boolean (value));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_PROPERTY:
		gxml_dom_mutation_observer_init_set_character_data (self, g_value_get_boolean (value));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_SUBTREE_PROPERTY:
		gxml_dom_mutation_observer_init_set_subtree (self, g_value_get_boolean (value));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_OLD_VALUE_PROPERTY:
		gxml_dom_mutation_observer_init_set_attribute_old_value (self, g_value_get_boolean (value));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_CHARACTER_DATA_OLD_VALUE_PROPERTY:
		gxml_dom_mutation_observer_init_set_character_data_old_value (self, g_value_get_boolean (value));
		break;
		case GXML_DOM_MUTATION_OBSERVER_INIT_ATTRIBUTE_FILTER_PROPERTY:
		gxml_dom_mutation_observer_init_set_attribute_filter (self, g_value_get_object (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

const gchar*
gxml_dom_mutation_record_get_mtype (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_mtype) {
		return _iface_->get_mtype (self);
	}
	return NULL;
}

GXmlDomNode*
gxml_dom_mutation_record_get_target (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_target) {
		return _iface_->get_target (self);
	}
	return NULL;
}

GXmlDomNodeList*
gxml_dom_mutation_record_get_added_nodes (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_added_nodes) {
		return _iface_->get_added_nodes (self);
	}
	return NULL;
}

void
gxml_dom_mutation_record_set_added_nodes (GXmlDomMutationRecord* self,
                                          GXmlDomNodeList* value)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_if_fail (self != NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->set_added_nodes) {
		_iface_->set_added_nodes (self, value);
	}
}

GXmlDomNodeList*
gxml_dom_mutation_record_get_removed_nodes (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_removed_nodes) {
		return _iface_->get_removed_nodes (self);
	}
	return NULL;
}

void
gxml_dom_mutation_record_set_removed_nodes (GXmlDomMutationRecord* self,
                                            GXmlDomNodeList* value)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_if_fail (self != NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->set_removed_nodes) {
		_iface_->set_removed_nodes (self, value);
	}
}

GXmlDomNode*
gxml_dom_mutation_record_get_previous_sibling (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_previous_sibling) {
		return _iface_->get_previous_sibling (self);
	}
	return NULL;
}

GXmlDomNode*
gxml_dom_mutation_record_get_next_sibling (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_next_sibling) {
		return _iface_->get_next_sibling (self);
	}
	return NULL;
}

const gchar*
gxml_dom_mutation_record_get_attribute_name (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_attribute_name) {
		return _iface_->get_attribute_name (self);
	}
	return NULL;
}

const gchar*
gxml_dom_mutation_record_get_attribute_namespace (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_attribute_namespace) {
		return _iface_->get_attribute_namespace (self);
	}
	return NULL;
}

const gchar*
gxml_dom_mutation_record_get_old_value (GXmlDomMutationRecord* self)
{
	GXmlDomMutationRecordIface* _iface_;
	g_return_val_if_fail (self != NULL, NULL);
	_iface_ = GXML_DOM_MUTATION_RECORD_GET_INTERFACE (self);
	if (_iface_->get_old_value) {
		return _iface_->get_old_value (self);
	}
	return NULL;
}

static void
gxml_dom_mutation_record_default_init (GXmlDomMutationRecordIface * iface,
                                       gpointer iface_data)
{
	g_object_interface_install_property (iface, g_param_spec_string ("mtype", "mtype", "mtype", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_interface_install_property (iface, g_param_spec_object ("target", "target", "target", GXML_TYPE_DOM_NODE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_interface_install_property (iface, g_param_spec_object ("added-nodes", "added-nodes", "added-nodes", GXML_TYPE_DOM_NODE_LIST, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_interface_install_property (iface, g_param_spec_object ("removed-nodes", "removed-nodes", "removed-nodes", GXML_TYPE_DOM_NODE_LIST, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_interface_install_property (iface, g_param_spec_object ("previous-sibling", "previous-sibling", "previous-sibling", GXML_TYPE_DOM_NODE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_interface_install_property (iface, g_param_spec_object ("next-sibling", "next-sibling", "next-sibling", GXML_TYPE_DOM_NODE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_interface_install_property (iface, g_param_spec_string ("attribute-name", "attribute-name", "attribute-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_interface_install_property (iface, g_param_spec_string ("attribute-namespace", "attribute-namespace", "attribute-namespace", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_interface_install_property (iface, g_param_spec_string ("old-value", "old-value", "old-value", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
}

static GType
gxml_dom_mutation_record_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (GXmlDomMutationRecordIface), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gxml_dom_mutation_record_default_init, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
	GType gxml_dom_mutation_record_type_id;
	gxml_dom_mutation_record_type_id = g_type_register_static (G_TYPE_INTERFACE, "GXmlDomMutationRecord", &g_define_type_info, 0);
	g_type_interface_add_prerequisite (gxml_dom_mutation_record_type_id, G_TYPE_OBJECT);
	return gxml_dom_mutation_record_type_id;
}

GType
gxml_dom_mutation_record_get_type (void)
{
	static volatile gsize gxml_dom_mutation_record_type_id__once = 0;
	if (g_once_init_enter (&gxml_dom_mutation_record_type_id__once)) {
		GType gxml_dom_mutation_record_type_id;
		gxml_dom_mutation_record_type_id = gxml_dom_mutation_record_get_type_once ();
		g_once_init_leave (&gxml_dom_mutation_record_type_id__once, gxml_dom_mutation_record_type_id);
	}
	return gxml_dom_mutation_record_type_id__once;
}

