Created
August 25, 2017 14:45
-
-
Save voxik/81574ab902eaae863be125dd4d005770 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* KeyValueTree.c generated by valac 0.37.90, the Vala compiler | |
* generated from KeyValueTree.vala, do not modify */ | |
/* | |
* Copyright 2014 Jiří Janoušek <janousek.jiri@gmail.com> | |
* | |
* Redistribution and use in source and binary forms, with or without | |
* modification, are permitted provided that the following conditions are met: | |
* | |
* 1. Redistributions of source code must retain the above copyright notice, this | |
* list of conditions and the following disclaimer. | |
* 2. Redistributions in binary form must reproduce the above copyright notice, | |
* this list of conditions and the following disclaimer in the documentation | |
* and/or other materials provided with the distribution. | |
* | |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR | |
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
*/ | |
#include <glib.h> | |
#include <glib-object.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#define DRT_TYPE_KEY_VALUE_STORAGE (drt_key_value_storage_get_type ()) | |
#define DRT_KEY_VALUE_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DRT_TYPE_KEY_VALUE_STORAGE, DrtKeyValueStorage)) | |
#define DRT_IS_KEY_VALUE_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DRT_TYPE_KEY_VALUE_STORAGE)) | |
#define DRT_KEY_VALUE_STORAGE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), DRT_TYPE_KEY_VALUE_STORAGE, DrtKeyValueStorageIface)) | |
typedef struct _DrtKeyValueStorage DrtKeyValueStorage; | |
typedef struct _DrtKeyValueStorageIface DrtKeyValueStorageIface; | |
#define DRT_TYPE_LST (drt_lst_get_type ()) | |
#define DRT_LST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DRT_TYPE_LST, DrtLst)) | |
#define DRT_LST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DRT_TYPE_LST, DrtLstClass)) | |
#define DRT_IS_LST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DRT_TYPE_LST)) | |
#define DRT_IS_LST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DRT_TYPE_LST)) | |
#define DRT_LST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DRT_TYPE_LST, DrtLstClass)) | |
typedef struct _DrtLst DrtLst; | |
typedef struct _DrtLstClass DrtLstClass; | |
#define DRT_TYPE_PROPERTY_BINDING (drt_property_binding_get_type ()) | |
#define DRT_PROPERTY_BINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DRT_TYPE_PROPERTY_BINDING, DrtPropertyBinding)) | |
#define DRT_PROPERTY_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DRT_TYPE_PROPERTY_BINDING, DrtPropertyBindingClass)) | |
#define DRT_IS_PROPERTY_BINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DRT_TYPE_PROPERTY_BINDING)) | |
#define DRT_IS_PROPERTY_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DRT_TYPE_PROPERTY_BINDING)) | |
#define DRT_PROPERTY_BINDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DRT_TYPE_PROPERTY_BINDING, DrtPropertyBindingClass)) | |
typedef struct _DrtPropertyBinding DrtPropertyBinding; | |
typedef struct _DrtPropertyBindingClass DrtPropertyBindingClass; | |
#define DRT_TYPE_KEY_VALUE_TREE (drt_key_value_tree_get_type ()) | |
#define DRT_KEY_VALUE_TREE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DRT_TYPE_KEY_VALUE_TREE, DrtKeyValueTree)) | |
#define DRT_KEY_VALUE_TREE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DRT_TYPE_KEY_VALUE_TREE, DrtKeyValueTreeClass)) | |
#define DRT_IS_KEY_VALUE_TREE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DRT_TYPE_KEY_VALUE_TREE)) | |
#define DRT_IS_KEY_VALUE_TREE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DRT_TYPE_KEY_VALUE_TREE)) | |
#define DRT_KEY_VALUE_TREE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DRT_TYPE_KEY_VALUE_TREE, DrtKeyValueTreeClass)) | |
typedef struct _DrtKeyValueTree DrtKeyValueTree; | |
typedef struct _DrtKeyValueTreeClass DrtKeyValueTreeClass; | |
typedef struct _DrtKeyValueTreePrivate DrtKeyValueTreePrivate; | |
typedef struct _DrtKeyValueTreeItem DrtKeyValueTreeItem; | |
enum { | |
DRT_KEY_VALUE_TREE_DUMMY_PROPERTY, | |
DRT_KEY_VALUE_TREE_PROPERTY_BINDINGS, | |
DRT_KEY_VALUE_TREE_LAST_PROPERTY | |
}; | |
static GParamSpec* drt_key_value_tree_properties[DRT_KEY_VALUE_TREE_LAST_PROPERTY]; | |
#define _drt_lst_unref0(var) ((var == NULL) ? NULL : (var = (drt_lst_unref (var), NULL))) | |
#define __g_node_destroy__drt_key_value_tree_item_free0_0(var) ((var == NULL) ? NULL : (var = (_g_node_destroy__drt_key_value_tree_item_free0_ (var), NULL))) | |
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) | |
#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) | |
typedef struct _DrtKeyValueTreePrinter DrtKeyValueTreePrinter; | |
#define _drt_key_value_tree_printer_free0(var) ((var == NULL) ? NULL : (var = (drt_key_value_tree_printer_free (var), NULL))) | |
#define _g_free0(var) (var = (g_free (var), NULL)) | |
#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL))) | |
struct _DrtKeyValueStorageIface { | |
GTypeInterface parent_iface; | |
gboolean (*has_key) (DrtKeyValueStorage* self, const gchar* key); | |
GVariant* (*get_value) (DrtKeyValueStorage* self, const gchar* key); | |
void (*unset) (DrtKeyValueStorage* self, const gchar* key); | |
void (*set_default_value_unboxed) (DrtKeyValueStorage* self, const gchar* key, GVariant* value); | |
void (*set_value_unboxed) (DrtKeyValueStorage* self, const gchar* key, GVariant* value); | |
DrtLst* (*get_property_bindings) (DrtKeyValueStorage* self); | |
void (*set_property_bindings) (DrtKeyValueStorage* self, DrtLst* value); | |
}; | |
struct _DrtKeyValueTree { | |
GObject parent_instance; | |
DrtKeyValueTreePrivate * priv; | |
GNode* root; | |
GHashTable* nodes; | |
}; | |
struct _DrtKeyValueTreeClass { | |
GObjectClass parent_class; | |
}; | |
struct _DrtKeyValueTreePrivate { | |
DrtLst* _property_bindings; | |
}; | |
struct _DrtKeyValueTreeItem { | |
gchar* name; | |
GVariant* value; | |
gboolean value_set; | |
GVariant* default_value; | |
}; | |
struct _DrtKeyValueTreePrinter { | |
GString* buffer; | |
gchar* bullet; | |
gint space_len; | |
}; | |
static gpointer drt_key_value_tree_parent_class = NULL; | |
static DrtKeyValueStorageIface * drt_key_value_tree_drt_key_value_storage_parent_iface = NULL; | |
gpointer drt_lst_ref (gpointer instance); | |
void drt_lst_unref (gpointer instance); | |
GParamSpec* drt_param_spec_lst (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); | |
void drt_value_set_lst (GValue* value, gpointer v_object); | |
void drt_value_take_lst (GValue* value, gpointer v_object); | |
gpointer drt_value_get_lst (const GValue* value); | |
GType drt_lst_get_type (void) G_GNUC_CONST; | |
gpointer drt_property_binding_ref (gpointer instance); | |
void drt_property_binding_unref (gpointer instance); | |
GParamSpec* drt_param_spec_property_binding (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); | |
void drt_value_set_property_binding (GValue* value, gpointer v_object); | |
void drt_value_take_property_binding (GValue* value, gpointer v_object); | |
gpointer drt_value_get_property_binding (const GValue* value); | |
GType drt_property_binding_get_type (void) G_GNUC_CONST; | |
GType drt_key_value_storage_get_type (void) G_GNUC_CONST; | |
GType drt_key_value_tree_get_type (void) G_GNUC_CONST; | |
void drt_key_value_tree_item_free (DrtKeyValueTreeItem * self); | |
#define DRT_KEY_VALUE_TREE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), DRT_TYPE_KEY_VALUE_TREE, DrtKeyValueTreePrivate)) | |
static void _drt_key_value_tree_item_free0_ (gpointer var); | |
void _g_node_destroy__drt_key_value_tree_item_free0_ (GNode* self); | |
static void _g_node_destroy__drt_key_value_tree_item_free0_ (GNode* self); | |
DrtKeyValueTree* drt_key_value_tree_new (void); | |
DrtKeyValueTree* drt_key_value_tree_construct (GType object_type); | |
DrtLst* drt_lst_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GEqualFunc equal_func); | |
DrtLst* drt_lst_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GEqualFunc equal_func); | |
void drt_key_value_storage_set_property_bindings (DrtKeyValueStorage* self, DrtLst* value); | |
static void _g_free0_ (gpointer var); | |
static gboolean drt_key_value_tree_real_has_key (DrtKeyValueStorage* base, const gchar* key); | |
static GVariant* drt_key_value_tree_real_get_value (DrtKeyValueStorage* base, const gchar* key); | |
GVariant* drt_key_value_tree_item_get (DrtKeyValueTreeItem* self); | |
static void drt_key_value_tree_real_unset (DrtKeyValueStorage* base, const gchar* key); | |
void drt_key_value_tree_item_unset (DrtKeyValueTreeItem* self); | |
gchar* drt_key_value_tree_to_string (DrtKeyValueTree* self); | |
gchar* drt_key_value_tree_print (DrtKeyValueTree* self, const gchar* bullet); | |
void drt_key_value_tree_printer_free (DrtKeyValueTreePrinter * self); | |
DrtKeyValueTreePrinter* drt_key_value_tree_printer_new (GString* buffer, const gchar* bullet); | |
void drt_key_value_tree_printer_print (DrtKeyValueTreePrinter* self, GNode* root, gint depth); | |
GNode* drt_key_value_tree_get_or_create_node (DrtKeyValueTree* self, const gchar* key); | |
GNode* drt_key_value_tree_create_child_node (DrtKeyValueTree* self, GNode* parent, const gchar* full_key, const gchar* name); | |
DrtKeyValueTreeItem* drt_key_value_tree_item_new (const gchar* name, GVariant* value, gboolean value_set, GVariant* default_value); | |
static void drt_key_value_tree_real_set_value_unboxed (DrtKeyValueStorage* base, const gchar* key, GVariant* value); | |
void drt_key_value_tree_item_set (DrtKeyValueTreeItem* self, GVariant* value); | |
static void drt_key_value_tree_real_set_default_value_unboxed (DrtKeyValueStorage* base, const gchar* key, GVariant* value); | |
static void drt_key_value_tree_item_instance_init (DrtKeyValueTreeItem * self); | |
static void drt_key_value_tree_printer_instance_init (DrtKeyValueTreePrinter * self); | |
static gboolean drt_key_value_tree_printer_print_node (DrtKeyValueTreePrinter* self, GNode* node); | |
static gboolean _drt_key_value_tree_printer_print_node_gnode_traverse_func (GNode* node, gpointer self); | |
static void drt_key_value_tree_finalize (GObject * obj); | |
DrtLst* drt_key_value_storage_get_property_bindings (DrtKeyValueStorage* self); | |
static void _vala_drt_key_value_tree_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); | |
static void _vala_drt_key_value_tree_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); | |
static void _drt_key_value_tree_item_free0_ (gpointer var) { | |
(var == NULL) ? NULL : (var = (drt_key_value_tree_item_free (var), NULL)); | |
} | |
static gboolean _g_node_destroy__drt_key_value_tree_item_free0__node (GNode* node, gpointer unused) { | |
_drt_key_value_tree_item_free0_ (node->data); | |
return FALSE; | |
} | |
static void _g_node_destroy__drt_key_value_tree_item_free0_ (GNode* self) { | |
g_node_traverse (self, G_POST_ORDER, G_TRAVERSE_ALL, -1, _g_node_destroy__drt_key_value_tree_item_free0__node, NULL); | |
g_node_destroy (self); | |
} | |
static void _g_free0_ (gpointer var) { | |
var = (g_free (var), NULL); | |
} | |
DrtKeyValueTree* drt_key_value_tree_construct (GType object_type) { | |
DrtKeyValueTree * self = NULL; | |
DrtLst* _tmp0_; | |
DrtLst* _tmp1_; | |
GNode* _tmp2_; | |
GHashFunc _tmp3_; | |
GEqualFunc _tmp4_; | |
GHashTable* _tmp5_; | |
self = (DrtKeyValueTree*) g_object_new (object_type, NULL); | |
_tmp0_ = drt_lst_new (DRT_TYPE_PROPERTY_BINDING, (GBoxedCopyFunc) drt_property_binding_ref, (GDestroyNotify) drt_property_binding_unref, NULL); | |
_tmp1_ = _tmp0_; | |
drt_key_value_storage_set_property_bindings ((DrtKeyValueStorage*) self, _tmp1_); | |
_drt_lst_unref0 (_tmp1_); | |
_tmp2_ = g_node_new (NULL); | |
__g_node_destroy__drt_key_value_tree_item_free0_0 (self->root); | |
self->root = _tmp2_; | |
_tmp3_ = g_str_hash; | |
_tmp4_ = g_str_equal; | |
_tmp5_ = g_hash_table_new_full (_tmp3_, _tmp4_, _g_free0_, NULL); | |
_g_hash_table_unref0 (self->nodes); | |
self->nodes = _tmp5_; | |
return self; | |
} | |
DrtKeyValueTree* drt_key_value_tree_new (void) { | |
return drt_key_value_tree_construct (DRT_TYPE_KEY_VALUE_TREE); | |
} | |
static gboolean drt_key_value_tree_real_has_key (DrtKeyValueStorage* base, const gchar* key) { | |
DrtKeyValueTree * self; | |
gboolean result = FALSE; | |
GNode* node = NULL; | |
GHashTable* _tmp0_; | |
const gchar* _tmp1_; | |
gconstpointer _tmp2_; | |
gboolean _tmp3_ = FALSE; | |
GNode* _tmp4_; | |
GNode* _tmp7_; | |
gconstpointer _tmp8_; | |
gboolean _tmp9_; | |
self = (DrtKeyValueTree*) base; | |
g_return_val_if_fail (key != NULL, FALSE); | |
_tmp0_ = self->nodes; | |
_tmp1_ = key; | |
_tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); | |
node = (GNode*) _tmp2_; | |
_tmp4_ = node; | |
if (_tmp4_ == NULL) { | |
_tmp3_ = TRUE; | |
} else { | |
GNode* _tmp5_; | |
gconstpointer _tmp6_; | |
_tmp5_ = node; | |
_tmp6_ = _tmp5_->data; | |
_tmp3_ = ((DrtKeyValueTreeItem*) _tmp6_) == NULL; | |
} | |
if (_tmp3_) { | |
result = FALSE; | |
return result; | |
} | |
_tmp7_ = node; | |
_tmp8_ = _tmp7_->data; | |
_tmp9_ = ((DrtKeyValueTreeItem*) _tmp8_)->value_set; | |
result = _tmp9_; | |
return result; | |
} | |
static gpointer _g_variant_ref0 (gpointer self) { | |
return self ? g_variant_ref (self) : NULL; | |
} | |
static GVariant* drt_key_value_tree_real_get_value (DrtKeyValueStorage* base, const gchar* key) { | |
DrtKeyValueTree * self; | |
GVariant* result = NULL; | |
GNode* node = NULL; | |
GHashTable* _tmp0_; | |
const gchar* _tmp1_; | |
gconstpointer _tmp2_; | |
gboolean _tmp3_ = FALSE; | |
GNode* _tmp4_; | |
GNode* _tmp7_; | |
gconstpointer _tmp8_; | |
GVariant* _tmp9_; | |
GVariant* _tmp10_; | |
self = (DrtKeyValueTree*) base; | |
g_return_val_if_fail (key != NULL, NULL); | |
_tmp0_ = self->nodes; | |
_tmp1_ = key; | |
_tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); | |
node = (GNode*) _tmp2_; | |
_tmp4_ = node; | |
if (_tmp4_ == NULL) { | |
_tmp3_ = TRUE; | |
} else { | |
GNode* _tmp5_; | |
gconstpointer _tmp6_; | |
_tmp5_ = node; | |
_tmp6_ = _tmp5_->data; | |
_tmp3_ = ((DrtKeyValueTreeItem*) _tmp6_) == NULL; | |
} | |
if (_tmp3_) { | |
result = NULL; | |
return result; | |
} | |
_tmp7_ = node; | |
_tmp8_ = _tmp7_->data; | |
_tmp9_ = drt_key_value_tree_item_get ((DrtKeyValueTreeItem*) _tmp8_); | |
_tmp10_ = _g_variant_ref0 (_tmp9_); | |
result = _tmp10_; | |
return result; | |
} | |
static void drt_key_value_tree_real_unset (DrtKeyValueStorage* base, const gchar* key) { | |
DrtKeyValueTree * self; | |
GNode* node = NULL; | |
GHashTable* _tmp0_; | |
const gchar* _tmp1_; | |
gconstpointer _tmp2_; | |
gboolean _tmp3_ = FALSE; | |
gboolean _tmp4_ = FALSE; | |
GNode* _tmp5_; | |
self = (DrtKeyValueTree*) base; | |
g_return_if_fail (key != NULL); | |
_tmp0_ = self->nodes; | |
_tmp1_ = key; | |
_tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); | |
node = (GNode*) _tmp2_; | |
_tmp5_ = node; | |
if (_tmp5_ != NULL) { | |
GNode* _tmp6_; | |
gconstpointer _tmp7_; | |
_tmp6_ = node; | |
_tmp7_ = _tmp6_->data; | |
_tmp4_ = ((DrtKeyValueTreeItem*) _tmp7_) != NULL; | |
} else { | |
_tmp4_ = FALSE; | |
} | |
if (_tmp4_) { | |
GNode* _tmp8_; | |
gconstpointer _tmp9_; | |
gboolean _tmp10_; | |
_tmp8_ = node; | |
_tmp9_ = _tmp8_->data; | |
_tmp10_ = ((DrtKeyValueTreeItem*) _tmp9_)->value_set; | |
_tmp3_ = _tmp10_; | |
} else { | |
_tmp3_ = FALSE; | |
} | |
if (_tmp3_) { | |
GVariant* old_value = NULL; | |
GNode* _tmp11_; | |
gconstpointer _tmp12_; | |
GVariant* _tmp13_; | |
GVariant* _tmp14_; | |
GNode* _tmp15_; | |
gconstpointer _tmp16_; | |
const gchar* _tmp17_; | |
GVariant* _tmp18_; | |
_tmp11_ = node; | |
_tmp12_ = _tmp11_->data; | |
_tmp13_ = ((DrtKeyValueTreeItem*) _tmp12_)->value; | |
_tmp14_ = _g_variant_ref0 (_tmp13_); | |
old_value = _tmp14_; | |
_tmp15_ = node; | |
_tmp16_ = _tmp15_->data; | |
drt_key_value_tree_item_unset ((DrtKeyValueTreeItem*) _tmp16_); | |
_tmp17_ = key; | |
_tmp18_ = old_value; | |
g_signal_emit_by_name ((DrtKeyValueStorage*) self, "changed", _tmp17_, _tmp18_); | |
_g_variant_unref0 (old_value); | |
} | |
} | |
gchar* drt_key_value_tree_to_string (DrtKeyValueTree* self) { | |
gchar* result = NULL; | |
gchar* _tmp0_; | |
g_return_val_if_fail (self != NULL, NULL); | |
_tmp0_ = drt_key_value_tree_print (self, NULL); | |
result = _tmp0_; | |
return result; | |
} | |
gchar* drt_key_value_tree_print (DrtKeyValueTree* self, const gchar* bullet) { | |
gchar* result = NULL; | |
DrtKeyValueTreePrinter* printer = NULL; | |
GString* _tmp0_; | |
const gchar* _tmp1_; | |
DrtKeyValueTreePrinter* _tmp2_; | |
GNode* _tmp3_; | |
GString* _tmp4_; | |
const gchar* _tmp5_; | |
gchar* _tmp6_; | |
g_return_val_if_fail (self != NULL, NULL); | |
_tmp0_ = g_string_new ("root\n"); | |
_tmp1_ = bullet; | |
_tmp2_ = drt_key_value_tree_printer_new (_tmp0_, _tmp1_); | |
printer = _tmp2_; | |
_tmp3_ = self->root; | |
drt_key_value_tree_printer_print (printer, _tmp3_, -1); | |
_tmp4_ = printer->buffer; | |
_tmp5_ = _tmp4_->str; | |
_tmp6_ = g_strdup (_tmp5_); | |
result = _tmp6_; | |
_drt_key_value_tree_printer_free0 (printer); | |
return result; | |
} | |
static gint string_last_index_of_char (const gchar* self, gunichar c, gint start_index) { | |
gint result = 0; | |
gchar* _result_ = NULL; | |
gint _tmp0_; | |
gunichar _tmp1_; | |
gchar* _tmp2_; | |
gchar* _tmp3_; | |
g_return_val_if_fail (self != NULL, 0); | |
_tmp0_ = start_index; | |
_tmp1_ = c; | |
_tmp2_ = g_utf8_strrchr (((gchar*) self) + _tmp0_, (gssize) -1, _tmp1_); | |
_result_ = _tmp2_; | |
_tmp3_ = _result_; | |
if (_tmp3_ != NULL) { | |
gchar* _tmp4_; | |
_tmp4_ = _result_; | |
result = (gint) (_tmp4_ - ((gchar*) self)); | |
return result; | |
} else { | |
result = -1; | |
return result; | |
} | |
} | |
static glong string_strnlen (gchar* str, glong maxlen) { | |
glong result = 0L; | |
gchar* end = NULL; | |
gchar* _tmp0_; | |
glong _tmp1_; | |
gchar* _tmp2_; | |
gchar* _tmp3_; | |
_tmp0_ = str; | |
_tmp1_ = maxlen; | |
_tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_); | |
end = _tmp2_; | |
_tmp3_ = end; | |
if (_tmp3_ == NULL) { | |
glong _tmp4_; | |
_tmp4_ = maxlen; | |
result = _tmp4_; | |
return result; | |
} else { | |
gchar* _tmp5_; | |
gchar* _tmp6_; | |
_tmp5_ = end; | |
_tmp6_ = str; | |
result = (glong) (_tmp5_ - _tmp6_); | |
return result; | |
} | |
} | |
static gchar* string_substring (const gchar* self, glong offset, glong len) { | |
gchar* result = NULL; | |
glong string_length = 0L; | |
gboolean _tmp0_ = FALSE; | |
glong _tmp1_; | |
glong _tmp8_; | |
glong _tmp14_; | |
glong _tmp17_; | |
glong _tmp18_; | |
glong _tmp19_; | |
glong _tmp20_; | |
glong _tmp21_; | |
gchar* _tmp22_; | |
g_return_val_if_fail (self != NULL, NULL); | |
_tmp1_ = offset; | |
if (_tmp1_ >= ((glong) 0)) { | |
glong _tmp2_; | |
_tmp2_ = len; | |
_tmp0_ = _tmp2_ >= ((glong) 0); | |
} else { | |
_tmp0_ = FALSE; | |
} | |
if (_tmp0_) { | |
glong _tmp3_; | |
glong _tmp4_; | |
glong _tmp5_; | |
_tmp3_ = offset; | |
_tmp4_ = len; | |
_tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_); | |
string_length = _tmp5_; | |
} else { | |
gint _tmp6_; | |
gint _tmp7_; | |
_tmp6_ = strlen (self); | |
_tmp7_ = _tmp6_; | |
string_length = (glong) _tmp7_; | |
} | |
_tmp8_ = offset; | |
if (_tmp8_ < ((glong) 0)) { | |
glong _tmp9_; | |
glong _tmp10_; | |
glong _tmp11_; | |
_tmp9_ = string_length; | |
_tmp10_ = offset; | |
offset = _tmp9_ + _tmp10_; | |
_tmp11_ = offset; | |
g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL); | |
} else { | |
glong _tmp12_; | |
glong _tmp13_; | |
_tmp12_ = offset; | |
_tmp13_ = string_length; | |
g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL); | |
} | |
_tmp14_ = len; | |
if (_tmp14_ < ((glong) 0)) { | |
glong _tmp15_; | |
glong _tmp16_; | |
_tmp15_ = string_length; | |
_tmp16_ = offset; | |
len = _tmp15_ - _tmp16_; | |
} | |
_tmp17_ = offset; | |
_tmp18_ = len; | |
_tmp19_ = string_length; | |
g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL); | |
_tmp20_ = offset; | |
_tmp21_ = len; | |
_tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_); | |
result = _tmp22_; | |
return result; | |
} | |
GNode* drt_key_value_tree_get_or_create_node (DrtKeyValueTree* self, const gchar* key) { | |
GNode* result = NULL; | |
GNode* node = NULL; | |
GHashTable* _tmp0_; | |
const gchar* _tmp1_; | |
gconstpointer _tmp2_; | |
GNode* _tmp3_; | |
gint index = 0; | |
const gchar* _tmp5_; | |
gint _tmp6_; | |
GNode* _tmp7_ = NULL; | |
gint _tmp8_; | |
GNode* parent = NULL; | |
GNode* _tmp15_; | |
const gchar* _tmp16_; | |
const gchar* _tmp17_; | |
gint _tmp18_; | |
gchar* _tmp19_; | |
gchar* _tmp20_; | |
GNode* _tmp21_; | |
GNode* _tmp22_; | |
g_return_val_if_fail (self != NULL, NULL); | |
g_return_val_if_fail (key != NULL, NULL); | |
_tmp0_ = self->nodes; | |
_tmp1_ = key; | |
_tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); | |
node = (GNode*) _tmp2_; | |
_tmp3_ = node; | |
if (_tmp3_ != NULL) { | |
GNode* _tmp4_; | |
_tmp4_ = node; | |
result = _tmp4_; | |
return result; | |
} | |
_tmp5_ = key; | |
_tmp6_ = string_last_index_of_char (_tmp5_, (gunichar) '.', 0); | |
index = _tmp6_; | |
_tmp8_ = index; | |
if (_tmp8_ > 0) { | |
const gchar* _tmp9_; | |
gint _tmp10_; | |
gchar* _tmp11_; | |
gchar* _tmp12_; | |
GNode* _tmp13_; | |
_tmp9_ = key; | |
_tmp10_ = index; | |
_tmp11_ = string_substring (_tmp9_, (glong) 0, (glong) _tmp10_); | |
_tmp12_ = _tmp11_; | |
_tmp13_ = drt_key_value_tree_get_or_create_node (self, _tmp12_); | |
_tmp7_ = _tmp13_; | |
_g_free0 (_tmp12_); | |
} else { | |
GNode* _tmp14_; | |
_tmp14_ = self->root; | |
_tmp7_ = _tmp14_; | |
} | |
parent = _tmp7_; | |
_tmp15_ = parent; | |
_tmp16_ = key; | |
_tmp17_ = key; | |
_tmp18_ = index; | |
_tmp19_ = string_substring (_tmp17_, (glong) (_tmp18_ + 1), (glong) -1); | |
_tmp20_ = _tmp19_; | |
_tmp21_ = drt_key_value_tree_create_child_node (self, _tmp15_, _tmp16_, _tmp20_); | |
_tmp22_ = _tmp21_; | |
_g_free0 (_tmp20_); | |
result = _tmp22_; | |
return result; | |
} | |
GNode* drt_key_value_tree_create_child_node (DrtKeyValueTree* self, GNode* parent, const gchar* full_key, const gchar* name) { | |
GNode* result = NULL; | |
GNode* node = NULL; | |
const gchar* _tmp0_; | |
DrtKeyValueTreeItem* _tmp1_; | |
GNode* _tmp2_; | |
GNode* unowned_node = NULL; | |
GNode* _tmp3_; | |
GNode* _tmp4_; | |
GNode* _tmp5_; | |
GHashTable* _tmp6_; | |
const gchar* _tmp7_; | |
gchar* _tmp8_; | |
g_return_val_if_fail (self != NULL, NULL); | |
g_return_val_if_fail (parent != NULL, NULL); | |
g_return_val_if_fail (full_key != NULL, NULL); | |
g_return_val_if_fail (name != NULL, NULL); | |
_tmp0_ = name; | |
_tmp1_ = drt_key_value_tree_item_new (_tmp0_, NULL, FALSE, NULL); | |
_tmp2_ = g_node_new (_tmp1_); | |
node = _tmp2_; | |
_tmp3_ = node; | |
unowned_node = _tmp3_; | |
_tmp4_ = parent; | |
_tmp5_ = node; | |
node = NULL; | |
g_node_append (_tmp4_, _tmp5_); | |
_tmp6_ = self->nodes; | |
_tmp7_ = full_key; | |
_tmp8_ = g_strdup (_tmp7_); | |
g_hash_table_insert (_tmp6_, _tmp8_, unowned_node); | |
result = unowned_node; | |
__g_node_destroy__drt_key_value_tree_item_free0_0 (node); | |
return result; | |
} | |
static void drt_key_value_tree_real_set_value_unboxed (DrtKeyValueStorage* base, const gchar* key, GVariant* value) { | |
DrtKeyValueTree * self; | |
GNode* node = NULL; | |
const gchar* _tmp0_; | |
GNode* _tmp1_; | |
GNode* _tmp2_; | |
gconstpointer _tmp3_; | |
GVariant* old_value = NULL; | |
GNode* _tmp4_; | |
gconstpointer _tmp5_; | |
GVariant* _tmp6_; | |
GVariant* _tmp7_; | |
GNode* _tmp8_; | |
gconstpointer _tmp9_; | |
GVariant* _tmp10_; | |
gboolean _tmp11_ = FALSE; | |
GVariant* _tmp12_; | |
GVariant* _tmp13_; | |
self = (DrtKeyValueTree*) base; | |
g_return_if_fail (key != NULL); | |
_tmp0_ = key; | |
_tmp1_ = drt_key_value_tree_get_or_create_node (self, _tmp0_); | |
node = _tmp1_; | |
_tmp2_ = node; | |
_tmp3_ = _tmp2_->data; | |
g_return_if_fail (((DrtKeyValueTreeItem*) _tmp3_) != NULL); | |
_tmp4_ = node; | |
_tmp5_ = _tmp4_->data; | |
_tmp6_ = drt_key_value_tree_item_get ((DrtKeyValueTreeItem*) _tmp5_); | |
_tmp7_ = _g_variant_ref0 (_tmp6_); | |
old_value = _tmp7_; | |
_tmp8_ = node; | |
_tmp9_ = _tmp8_->data; | |
_tmp10_ = value; | |
drt_key_value_tree_item_set ((DrtKeyValueTreeItem*) _tmp9_, _tmp10_); | |
_tmp12_ = old_value; | |
_tmp13_ = value; | |
if (_tmp12_ != _tmp13_) { | |
gboolean _tmp14_ = FALSE; | |
gboolean _tmp15_ = FALSE; | |
GVariant* _tmp16_; | |
_tmp16_ = old_value; | |
if (_tmp16_ == NULL) { | |
_tmp15_ = TRUE; | |
} else { | |
GVariant* _tmp17_; | |
_tmp17_ = value; | |
_tmp15_ = _tmp17_ == NULL; | |
} | |
if (_tmp15_) { | |
_tmp14_ = TRUE; | |
} else { | |
GVariant* _tmp18_; | |
GVariant* _tmp19_; | |
gboolean _tmp20_; | |
_tmp18_ = old_value; | |
_tmp19_ = value; | |
_tmp20_ = g_variant_equal (_tmp18_, _tmp19_); | |
_tmp14_ = !_tmp20_; | |
} | |
_tmp11_ = _tmp14_; | |
} else { | |
_tmp11_ = FALSE; | |
} | |
if (_tmp11_) { | |
const gchar* _tmp21_; | |
GVariant* _tmp22_; | |
_tmp21_ = key; | |
_tmp22_ = old_value; | |
g_signal_emit_by_name ((DrtKeyValueStorage*) self, "changed", _tmp21_, _tmp22_); | |
} | |
_g_variant_unref0 (old_value); | |
} | |
static void drt_key_value_tree_real_set_default_value_unboxed (DrtKeyValueStorage* base, const gchar* key, GVariant* value) { | |
DrtKeyValueTree * self; | |
GNode* node = NULL; | |
const gchar* _tmp0_; | |
GNode* _tmp1_; | |
GNode* _tmp2_; | |
gconstpointer _tmp3_; | |
GVariant* old_value = NULL; | |
GNode* _tmp4_; | |
gconstpointer _tmp5_; | |
GVariant* _tmp6_; | |
GVariant* _tmp7_; | |
GNode* _tmp8_; | |
gconstpointer _tmp9_; | |
GVariant* _tmp10_; | |
GVariant* _tmp11_; | |
GVariant* new_value = NULL; | |
GNode* _tmp12_; | |
gconstpointer _tmp13_; | |
GVariant* _tmp14_; | |
GVariant* _tmp15_; | |
gboolean _tmp16_ = FALSE; | |
GVariant* _tmp17_; | |
GVariant* _tmp18_; | |
self = (DrtKeyValueTree*) base; | |
g_return_if_fail (key != NULL); | |
_tmp0_ = key; | |
_tmp1_ = drt_key_value_tree_get_or_create_node (self, _tmp0_); | |
node = _tmp1_; | |
_tmp2_ = node; | |
_tmp3_ = _tmp2_->data; | |
g_return_if_fail (((DrtKeyValueTreeItem*) _tmp3_) != NULL); | |
_tmp4_ = node; | |
_tmp5_ = _tmp4_->data; | |
_tmp6_ = drt_key_value_tree_item_get ((DrtKeyValueTreeItem*) _tmp5_); | |
_tmp7_ = _g_variant_ref0 (_tmp6_); | |
old_value = _tmp7_; | |
_tmp8_ = node; | |
_tmp9_ = _tmp8_->data; | |
_tmp10_ = value; | |
_tmp11_ = _g_variant_ref0 (_tmp10_); | |
_g_variant_unref0 (((DrtKeyValueTreeItem*) _tmp9_)->default_value); | |
((DrtKeyValueTreeItem*) _tmp9_)->default_value = _tmp11_; | |
_tmp12_ = node; | |
_tmp13_ = _tmp12_->data; | |
_tmp14_ = drt_key_value_tree_item_get ((DrtKeyValueTreeItem*) _tmp13_); | |
_tmp15_ = _g_variant_ref0 (_tmp14_); | |
new_value = _tmp15_; | |
_tmp17_ = old_value; | |
_tmp18_ = new_value; | |
if (_tmp17_ != _tmp18_) { | |
gboolean _tmp19_ = FALSE; | |
gboolean _tmp20_ = FALSE; | |
GVariant* _tmp21_; | |
_tmp21_ = old_value; | |
if (_tmp21_ == NULL) { | |
_tmp20_ = TRUE; | |
} else { | |
GVariant* _tmp22_; | |
_tmp22_ = new_value; | |
_tmp20_ = _tmp22_ == NULL; | |
} | |
if (_tmp20_) { | |
_tmp19_ = TRUE; | |
} else { | |
GVariant* _tmp23_; | |
GVariant* _tmp24_; | |
gboolean _tmp25_; | |
_tmp23_ = old_value; | |
_tmp24_ = new_value; | |
_tmp25_ = g_variant_equal (_tmp23_, _tmp24_); | |
_tmp19_ = !_tmp25_; | |
} | |
_tmp16_ = _tmp19_; | |
} else { | |
_tmp16_ = FALSE; | |
} | |
if (_tmp16_) { | |
const gchar* _tmp26_; | |
GVariant* _tmp27_; | |
_tmp26_ = key; | |
_tmp27_ = old_value; | |
g_signal_emit_by_name ((DrtKeyValueStorage*) self, "changed", _tmp26_, _tmp27_); | |
} | |
_g_variant_unref0 (new_value); | |
_g_variant_unref0 (old_value); | |
} | |
static DrtLst* drt_key_value_tree_real_get_property_bindings (DrtKeyValueStorage* base) { | |
DrtLst* result; | |
DrtKeyValueTree* self; | |
DrtLst* _tmp0_; | |
self = (DrtKeyValueTree*) base; | |
_tmp0_ = self->priv->_property_bindings; | |
result = _tmp0_; | |
return result; | |
} | |
static gpointer _drt_lst_ref0 (gpointer self) { | |
return self ? drt_lst_ref (self) : NULL; | |
} | |
static void drt_key_value_tree_real_set_property_bindings (DrtKeyValueStorage* base, DrtLst* value) { | |
DrtKeyValueTree* self; | |
self = (DrtKeyValueTree*) base; | |
if (drt_key_value_tree_real_get_property_bindings (base) != value) { | |
DrtLst* _tmp0_; | |
DrtLst* _tmp1_; | |
_tmp0_ = value; | |
_tmp1_ = _drt_lst_ref0 (_tmp0_); | |
_drt_lst_unref0 (self->priv->_property_bindings); | |
self->priv->_property_bindings = _tmp1_; | |
g_object_notify_by_pspec ((GObject *) self, drt_key_value_tree_properties[DRT_KEY_VALUE_TREE_PROPERTY_BINDINGS]); | |
} | |
} | |
DrtKeyValueTreeItem* drt_key_value_tree_item_new (const gchar* name, GVariant* value, gboolean value_set, GVariant* default_value) { | |
DrtKeyValueTreeItem* self; | |
const gchar* _tmp0_; | |
gchar* _tmp1_; | |
GVariant* _tmp2_; | |
GVariant* _tmp3_; | |
gboolean _tmp4_; | |
GVariant* _tmp5_; | |
GVariant* _tmp6_; | |
g_return_val_if_fail (name != NULL, NULL); | |
self = g_slice_new0 (DrtKeyValueTreeItem); | |
drt_key_value_tree_item_instance_init (self); | |
_tmp0_ = name; | |
_tmp1_ = g_strdup (_tmp0_); | |
_g_free0 (self->name); | |
self->name = _tmp1_; | |
_tmp2_ = value; | |
_tmp3_ = _g_variant_ref0 (_tmp2_); | |
_g_variant_unref0 (self->value); | |
self->value = _tmp3_; | |
_tmp4_ = value_set; | |
self->value_set = _tmp4_; | |
_tmp5_ = default_value; | |
_tmp6_ = _g_variant_ref0 (_tmp5_); | |
_g_variant_unref0 (self->default_value); | |
self->default_value = _tmp6_; | |
return self; | |
} | |
GVariant* drt_key_value_tree_item_get (DrtKeyValueTreeItem* self) { | |
GVariant* result = NULL; | |
GVariant* _tmp0_ = NULL; | |
gboolean _tmp1_; | |
g_return_val_if_fail (self != NULL, NULL); | |
_tmp1_ = self->value_set; | |
if (_tmp1_) { | |
GVariant* _tmp2_; | |
_tmp2_ = self->value; | |
_tmp0_ = _tmp2_; | |
} else { | |
GVariant* _tmp3_; | |
_tmp3_ = self->default_value; | |
_tmp0_ = _tmp3_; | |
} | |
result = _tmp0_; | |
return result; | |
} | |
void drt_key_value_tree_item_set (DrtKeyValueTreeItem* self, GVariant* value) { | |
GVariant* _tmp0_; | |
GVariant* _tmp1_; | |
g_return_if_fail (self != NULL); | |
_tmp0_ = value; | |
_tmp1_ = _g_variant_ref0 (_tmp0_); | |
_g_variant_unref0 (self->value); | |
self->value = _tmp1_; | |
self->value_set = TRUE; | |
} | |
void drt_key_value_tree_item_unset (DrtKeyValueTreeItem* self) { | |
g_return_if_fail (self != NULL); | |
_g_variant_unref0 (self->value); | |
self->value = NULL; | |
self->value_set = FALSE; | |
} | |
static void drt_key_value_tree_item_instance_init (DrtKeyValueTreeItem * self) { | |
self->name = NULL; | |
self->value = NULL; | |
self->value_set = FALSE; | |
self->default_value = NULL; | |
} | |
void drt_key_value_tree_item_free (DrtKeyValueTreeItem * self) { | |
_g_free0 (self->name); | |
_g_variant_unref0 (self->value); | |
_g_variant_unref0 (self->default_value); | |
g_slice_free (DrtKeyValueTreeItem, self); | |
} | |
DrtKeyValueTreePrinter* drt_key_value_tree_printer_new (GString* buffer, const gchar* bullet) { | |
DrtKeyValueTreePrinter* self; | |
GString* _tmp0_; | |
const gchar* _tmp1_ = NULL; | |
const gchar* _tmp2_; | |
gchar* _tmp4_; | |
const gchar* _tmp5_; | |
gint _tmp6_; | |
gint _tmp7_; | |
g_return_val_if_fail (buffer != NULL, NULL); | |
self = g_slice_new0 (DrtKeyValueTreePrinter); | |
drt_key_value_tree_printer_instance_init (self); | |
_tmp0_ = buffer; | |
buffer = NULL; | |
_g_string_free0 (self->buffer); | |
self->buffer = _tmp0_; | |
_tmp2_ = bullet; | |
if (_tmp2_ != NULL) { | |
const gchar* _tmp3_; | |
_tmp3_ = bullet; | |
_tmp1_ = _tmp3_; | |
} else { | |
_tmp1_ = " * "; | |
} | |
_tmp4_ = g_strdup (_tmp1_); | |
_g_free0 (self->bullet); | |
self->bullet = _tmp4_; | |
_tmp5_ = self->bullet; | |
_tmp6_ = strlen (_tmp5_); | |
_tmp7_ = _tmp6_; | |
self->space_len = _tmp7_; | |
_g_string_free0 (buffer); | |
return self; | |
} | |
static gboolean _drt_key_value_tree_printer_print_node_gnode_traverse_func (GNode* node, gpointer self) { | |
gboolean result; | |
result = drt_key_value_tree_printer_print_node ((DrtKeyValueTreePrinter*) self, node); | |
return result; | |
} | |
void drt_key_value_tree_printer_print (DrtKeyValueTreePrinter* self, GNode* root, gint depth) { | |
GNode* _tmp0_; | |
gint _tmp1_; | |
g_return_if_fail (self != NULL); | |
g_return_if_fail (root != NULL); | |
_tmp0_ = root; | |
_tmp1_ = depth; | |
g_node_traverse (_tmp0_, G_PRE_ORDER, G_TRAVERSE_ALL, _tmp1_, _drt_key_value_tree_printer_print_node_gnode_traverse_func, self); | |
} | |
static gboolean drt_key_value_tree_printer_print_node (DrtKeyValueTreePrinter* self, GNode* node) { | |
gboolean result = FALSE; | |
GNode* _tmp0_; | |
gboolean _tmp1_; | |
DrtKeyValueTreeItem* item = NULL; | |
GNode* _tmp2_; | |
gconstpointer _tmp3_; | |
DrtKeyValueTreeItem* _tmp4_; | |
g_return_val_if_fail (self != NULL, FALSE); | |
g_return_val_if_fail (node != NULL, FALSE); | |
_tmp0_ = node; | |
_tmp1_ = G_NODE_IS_ROOT (_tmp0_); | |
if (_tmp1_) { | |
result = FALSE; | |
return result; | |
} | |
_tmp2_ = node; | |
_tmp3_ = _tmp2_->data; | |
item = (DrtKeyValueTreeItem*) _tmp3_; | |
_tmp4_ = item; | |
if (_tmp4_ != NULL) { | |
guint indent = 0U; | |
GNode* _tmp5_; | |
guint _tmp6_; | |
guint _tmp7_; | |
GString* _tmp13_; | |
const gchar* _tmp14_; | |
GVariant* value = NULL; | |
DrtKeyValueTreeItem* _tmp15_; | |
GVariant* _tmp16_; | |
GVariant* _tmp17_; | |
gchar* _tmp18_ = NULL; | |
GVariant* _tmp19_; | |
GString* _tmp23_; | |
DrtKeyValueTreeItem* _tmp24_; | |
const gchar* _tmp25_; | |
_tmp5_ = node; | |
_tmp6_ = g_node_depth (_tmp5_); | |
indent = _tmp6_ - 2; | |
_tmp7_ = indent; | |
if (_tmp7_ > ((guint) 0)) { | |
GString* _tmp8_; | |
gint _tmp9_; | |
guint _tmp10_; | |
gchar* _tmp11_; | |
gchar* _tmp12_; | |
_tmp8_ = self->buffer; | |
_tmp9_ = self->space_len; | |
_tmp10_ = indent; | |
_tmp11_ = g_strnfill ((gsize) (_tmp9_ * _tmp10_), ' '); | |
_tmp12_ = _tmp11_; | |
g_string_append (_tmp8_, _tmp12_); | |
_g_free0 (_tmp12_); | |
} | |
_tmp13_ = self->buffer; | |
_tmp14_ = self->bullet; | |
g_string_append (_tmp13_, _tmp14_); | |
_tmp15_ = item; | |
_tmp16_ = drt_key_value_tree_item_get (_tmp15_); | |
_tmp17_ = _g_variant_ref0 (_tmp16_); | |
value = _tmp17_; | |
_tmp19_ = value; | |
if (_tmp19_ != NULL) { | |
GVariant* _tmp20_; | |
gchar* _tmp21_; | |
_tmp20_ = value; | |
_tmp21_ = g_variant_print (_tmp20_, FALSE); | |
_g_free0 (_tmp18_); | |
_tmp18_ = _tmp21_; | |
} else { | |
gchar* _tmp22_; | |
_tmp22_ = g_strdup ("(null)"); | |
_g_free0 (_tmp18_); | |
_tmp18_ = _tmp22_; | |
} | |
_tmp23_ = self->buffer; | |
_tmp24_ = item; | |
_tmp25_ = _tmp24_->name; | |
g_string_append_printf (_tmp23_, "%s: %s\n", _tmp25_, _tmp18_); | |
_g_free0 (_tmp18_); | |
_g_variant_unref0 (value); | |
} | |
result = FALSE; | |
return result; | |
} | |
static void drt_key_value_tree_printer_instance_init (DrtKeyValueTreePrinter * self) { | |
} | |
void drt_key_value_tree_printer_free (DrtKeyValueTreePrinter * self) { | |
_g_string_free0 (self->buffer); | |
_g_free0 (self->bullet); | |
g_slice_free (DrtKeyValueTreePrinter, self); | |
} | |
static void drt_key_value_tree_class_init (DrtKeyValueTreeClass * klass) { | |
drt_key_value_tree_parent_class = g_type_class_peek_parent (klass); | |
g_type_class_add_private (klass, sizeof (DrtKeyValueTreePrivate)); | |
G_OBJECT_CLASS (klass)->get_property = _vala_drt_key_value_tree_get_property; | |
G_OBJECT_CLASS (klass)->set_property = _vala_drt_key_value_tree_set_property; | |
G_OBJECT_CLASS (klass)->finalize = drt_key_value_tree_finalize; | |
g_object_class_install_property (G_OBJECT_CLASS (klass), DRT_KEY_VALUE_TREE_PROPERTY_BINDINGS, drt_key_value_tree_properties[DRT_KEY_VALUE_TREE_PROPERTY_BINDINGS] = drt_param_spec_lst ("property-bindings", "property-bindings", "property-bindings", DRT_TYPE_LST, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); | |
} | |
static void drt_key_value_tree_drt_key_value_storage_interface_init (DrtKeyValueStorageIface * iface) { | |
drt_key_value_tree_drt_key_value_storage_parent_iface = g_type_interface_peek_parent (iface); | |
iface->has_key = (gboolean (*) (DrtKeyValueStorage *, const gchar*)) drt_key_value_tree_real_has_key; | |
iface->get_value = (GVariant* (*) (DrtKeyValueStorage *, const gchar*)) drt_key_value_tree_real_get_value; | |
iface->unset = (void (*) (DrtKeyValueStorage *, const gchar*)) drt_key_value_tree_real_unset; | |
iface->set_value_unboxed = (void (*) (DrtKeyValueStorage *, const gchar*, GVariant*)) drt_key_value_tree_real_set_value_unboxed; | |
iface->set_default_value_unboxed = (void (*) (DrtKeyValueStorage *, const gchar*, GVariant*)) drt_key_value_tree_real_set_default_value_unboxed; | |
iface->get_property_bindings = drt_key_value_tree_real_get_property_bindings; | |
iface->set_property_bindings = drt_key_value_tree_real_set_property_bindings; | |
} | |
static void drt_key_value_tree_instance_init (DrtKeyValueTree * self) { | |
self->priv = DRT_KEY_VALUE_TREE_GET_PRIVATE (self); | |
} | |
static void drt_key_value_tree_finalize (GObject * obj) { | |
DrtKeyValueTree * self; | |
self = G_TYPE_CHECK_INSTANCE_CAST (obj, DRT_TYPE_KEY_VALUE_TREE, DrtKeyValueTree); | |
_drt_lst_unref0 (self->priv->_property_bindings); | |
__g_node_destroy__drt_key_value_tree_item_free0_0 (self->root); | |
_g_hash_table_unref0 (self->nodes); | |
G_OBJECT_CLASS (drt_key_value_tree_parent_class)->finalize (obj); | |
} | |
GType drt_key_value_tree_get_type (void) { | |
static volatile gsize drt_key_value_tree_type_id__volatile = 0; | |
if (g_once_init_enter (&drt_key_value_tree_type_id__volatile)) { | |
static const GTypeInfo g_define_type_info = { sizeof (DrtKeyValueTreeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) drt_key_value_tree_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DrtKeyValueTree), 0, (GInstanceInitFunc) drt_key_value_tree_instance_init, NULL }; | |
static const GInterfaceInfo drt_key_value_storage_info = { (GInterfaceInitFunc) drt_key_value_tree_drt_key_value_storage_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; | |
GType drt_key_value_tree_type_id; | |
drt_key_value_tree_type_id = g_type_register_static (G_TYPE_OBJECT, "DrtKeyValueTree", &g_define_type_info, 0); | |
g_type_add_interface_static (drt_key_value_tree_type_id, DRT_TYPE_KEY_VALUE_STORAGE, &drt_key_value_storage_info); | |
g_once_init_leave (&drt_key_value_tree_type_id__volatile, drt_key_value_tree_type_id); | |
} | |
return drt_key_value_tree_type_id__volatile; | |
} | |
static void _vala_drt_key_value_tree_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { | |
DrtKeyValueTree * self; | |
self = G_TYPE_CHECK_INSTANCE_CAST (object, DRT_TYPE_KEY_VALUE_TREE, DrtKeyValueTree); | |
switch (property_id) { | |
case DRT_KEY_VALUE_TREE_PROPERTY_BINDINGS: | |
drt_value_set_lst (value, drt_key_value_storage_get_property_bindings ((DrtKeyValueStorage*) self)); | |
break; | |
default: | |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); | |
break; | |
} | |
} | |
static void _vala_drt_key_value_tree_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { | |
DrtKeyValueTree * self; | |
self = G_TYPE_CHECK_INSTANCE_CAST (object, DRT_TYPE_KEY_VALUE_TREE, DrtKeyValueTree); | |
switch (property_id) { | |
case DRT_KEY_VALUE_TREE_PROPERTY_BINDINGS: | |
drt_key_value_storage_set_property_bindings ((DrtKeyValueStorage*) self, drt_value_get_lst (value)); | |
break; | |
default: | |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); | |
break; | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment