From 121d923d296957e57e3a3673f4d0f001e3886403 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Wed, 27 Oct 2010 18:15:31 +0200 Subject: Added an "area" property to LdSymbol. To accomplish this, LdSymbolArea had to be converted to a regular boxed type. --- src/ld-symbol.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) (limited to 'src/ld-symbol.c') 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 @@ -17,6 +17,55 @@ #include "ld-library.h" +/** + * 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. @@ -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); } -- cgit v1.2.3