conf: Add WpProperties as a member of WpConf
WpProperties may be used to control the behaviour of a WpConf object. This allows those properties to be referenced at any time during the lifetime of a WpConf. Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
This commit is contained in:
@@ -50,6 +50,7 @@ struct _WpConf
|
|||||||
|
|
||||||
/* Props */
|
/* Props */
|
||||||
gchar *name;
|
gchar *name;
|
||||||
|
WpProperties *properties;
|
||||||
|
|
||||||
/* Private */
|
/* Private */
|
||||||
GArray *conf_sections; /* element-type: WpConfSection */
|
GArray *conf_sections; /* element-type: WpConfSection */
|
||||||
@@ -59,6 +60,7 @@ struct _WpConf
|
|||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_NAME,
|
PROP_NAME,
|
||||||
|
PROP_PROPERTIES,
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (WpConf, wp_conf, G_TYPE_OBJECT)
|
G_DEFINE_TYPE (WpConf, wp_conf, G_TYPE_OBJECT)
|
||||||
@@ -81,6 +83,9 @@ wp_conf_set_property (GObject * object, guint property_id,
|
|||||||
case PROP_NAME:
|
case PROP_NAME:
|
||||||
self->name = g_value_dup_string (value);
|
self->name = g_value_dup_string (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_PROPERTIES:
|
||||||
|
self->properties = g_value_dup_boxed (value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -97,6 +102,9 @@ wp_conf_get_property (GObject * object, guint property_id,
|
|||||||
case PROP_NAME:
|
case PROP_NAME:
|
||||||
g_value_set_string (value, self->name);
|
g_value_set_string (value, self->name);
|
||||||
break;
|
break;
|
||||||
|
case PROP_PROPERTIES:
|
||||||
|
g_value_take_boxed (value, wp_properties_copy (self->properties));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -109,6 +117,7 @@ wp_conf_finalize (GObject * object)
|
|||||||
WpConf *self = WP_CONF (object);
|
WpConf *self = WP_CONF (object);
|
||||||
|
|
||||||
wp_conf_close (self);
|
wp_conf_close (self);
|
||||||
|
g_clear_pointer (&self->properties, wp_properties_unref);
|
||||||
g_clear_pointer (&self->conf_sections, g_array_unref);
|
g_clear_pointer (&self->conf_sections, g_array_unref);
|
||||||
g_clear_pointer (&self->files, g_ptr_array_unref);
|
g_clear_pointer (&self->files, g_ptr_array_unref);
|
||||||
g_clear_pointer (&self->name, g_free);
|
g_clear_pointer (&self->name, g_free);
|
||||||
@@ -128,6 +137,10 @@ wp_conf_class_init (WpConfClass * klass)
|
|||||||
g_object_class_install_property(object_class, PROP_NAME,
|
g_object_class_install_property(object_class, PROP_NAME,
|
||||||
g_param_spec_string ("name", "name", "The name of the configuration file",
|
g_param_spec_string ("name", "name", "The name of the configuration file",
|
||||||
NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
g_object_class_install_property(object_class, PROP_PROPERTIES,
|
||||||
|
g_param_spec_boxed ("properties", "properties", "WpProperties",
|
||||||
|
WP_TYPE_PROPERTIES, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -145,8 +158,10 @@ WpConf *
|
|||||||
wp_conf_new (const gchar * name, WpProperties * properties)
|
wp_conf_new (const gchar * name, WpProperties * properties)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (name, NULL);
|
g_return_val_if_fail (name, NULL);
|
||||||
g_clear_pointer (&properties, wp_properties_unref);
|
g_autoptr (WpProperties) props = properties;
|
||||||
return g_object_new (WP_TYPE_CONF, "name", name, NULL);
|
return g_object_new (WP_TYPE_CONF, "name", name,
|
||||||
|
"properties", props,
|
||||||
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Reference in New Issue
Block a user