diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2010-10-27 18:15:31 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2010-10-27 18:15:31 +0200 |
commit | 121d923d296957e57e3a3673f4d0f001e3886403 (patch) | |
tree | a5ac320fc0e371c40cfd9f30cc7093f390e2e78b /src/ld-symbol.c | |
parent | 9156953cc95cd4d814ea0ad0e9407efc9a6a0a7d (diff) | |
download | logdiag-121d923d296957e57e3a3673f4d0f001e3886403.tar.gz logdiag-121d923d296957e57e3a3673f4d0f001e3886403.tar.xz logdiag-121d923d296957e57e3a3673f4d0f001e3886403.zip |
Added an "area" property to LdSymbol.
To accomplish this, LdSymbolArea had to be converted
to a regular boxed type.
Diffstat (limited to 'src/ld-symbol.c')
-rw-r--r-- | src/ld-symbol.c | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/src/ld-symbol.c b/src/ld-symbol.c index 92e0baa..42c01cd 100644 --- a/src/ld-symbol.c +++ b/src/ld-symbol.c @@ -18,6 +18,55 @@ /** + * ld_symbol_area_copy: + * @self: An #LdSymbolArea structure. + * + * Makes a copy of the structure. + * The result must be freed by ld_symbol_area_free(). + * + * Return value: A copy of @self. + **/ +LdSymbolArea * +ld_symbol_area_copy (const LdSymbolArea *self) +{ + LdSymbolArea *new_area; + + g_return_val_if_fail (self != NULL, NULL); + + new_area = g_slice_new (LdSymbolArea); + *new_area = *self; + return new_area; +} + +/** + * ld_symbol_area_free: + * @self: An #LdSymbolArea structure. + * + * Frees the structure created with ld_symbol_area_copy(). + **/ +void +ld_symbol_area_free (LdSymbolArea *self) +{ + g_return_if_fail (self != NULL); + + g_slice_free (LdSymbolArea, self); +} + +GType +ld_symbol_area_get_type (void) +{ + static GType our_type = 0; + + if (our_type == 0) + our_type = g_boxed_type_register_static + (g_intern_static_string ("LdSymbolArea"), + (GBoxedCopyFunc) ld_symbol_area_copy, + (GBoxedFreeFunc) ld_symbol_area_free); + return our_type; +} + + +/** * SECTION:ld-symbol * @short_description: A symbol. * @see_also: #LdDocument, #LdCanvas @@ -33,7 +82,7 @@ enum PROP_0, PROP_NAME, PROP_HUMAN_NAME, - /* TODO: Property for the area. */ + PROP_AREA }; static void @@ -76,6 +125,16 @@ ld_symbol_class_init (LdSymbolClass *klass) "The localized human name of this symbol.", "", G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_HUMAN_NAME, pspec); + +/** + * LdSymbol:area: + * + * The area of this symbol. + */ + pspec = g_param_spec_boxed ("area", "Area", + "The area of this symbol.", + LD_TYPE_SYMBOL_AREA, G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_AREA, pspec); } static void @@ -98,6 +157,14 @@ ld_symbol_get_property (GObject *object, guint property_id, case PROP_HUMAN_NAME: g_value_set_string (value, ld_symbol_get_human_name (self)); break; + case PROP_AREA: + { + LdSymbolArea area; + + ld_symbol_get_area (self, &area); + g_value_set_boxed (value, &area); + } + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } |