From b4f769efafc9fa1ad3862e2516ee534c7d159455 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 9 Jan 2004 22:39:55 +0000 Subject: [PATCH] Add a boxed type for nul-terminated string arrays. (#110528) Fri Jan 9 23:41:00 2004 Matthias Clasen * gboxed.h: * gboxed.c (g_strv_get_type): Add a boxed type for nul-terminated string arrays. (#110528) --- docs/reference/ChangeLog | 5 +++ docs/reference/gobject/gobject-sections.txt | 3 ++ docs/reference/gobject/tmpl/gboxed.sgml | 36 +++++++++++++++++++++ gobject/ChangeLog | 6 ++++ gobject/gboxed.c | 12 +++++++ gobject/gboxed.h | 6 +++- 6 files changed, 67 insertions(+), 1 deletion(-) diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index 84e8aea0..b6928ea7 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,3 +1,8 @@ +Fri Jan 9 23:40:23 2004 Matthias Clasen + + * gobject/tmpl/gboxed.sgml: + * gobject/gobject-sections.txt: Add G_TYPE_STRV and GStrv. + Fri Dec 26 02:04:49 2003 Matthias Clasen * glib/glib-sections.txt: Add g_ptr_array_foreach(). diff --git a/docs/reference/gobject/gobject-sections.txt b/docs/reference/gobject/gobject-sections.txt index e3d5d32c..ab4622cd 100644 --- a/docs/reference/gobject/gobject-sections.txt +++ b/docs/reference/gobject/gobject-sections.txt @@ -291,12 +291,15 @@ g_pointer_type_register_static G_TYPE_GSTRING +G_TYPE_STRV +GStrv G_TYPE_IS_BOXED g_gstring_get_type +g_strv_get_type
diff --git a/docs/reference/gobject/tmpl/gboxed.sgml b/docs/reference/gobject/tmpl/gboxed.sgml index 9a3d974b..289edd70 100644 --- a/docs/reference/gobject/tmpl/gboxed.sgml +++ b/docs/reference/gobject/tmpl/gboxed.sgml @@ -82,3 +82,39 @@ The #GType for #GString. + + +The #GType for a boxed type holding a %NULL-terminated array of strings. + + +The code fragments in the following example show the use of a property of +type #G_TYPE_STRV with g_object_class_install_property(), g_object_set() +and g_object_get(). + + +g_object_class_install_property (object_class, + PROP_AUTHORS, + g_param_spec_boxed ("authors", + _("Authors"), + _("List of authors"), + G_TYPE_STRV, + G_PARAM_READWRITE)); + + +gchar *authors[] = { "Owen", "Tim", NULL }; +g_object_set (obj, "authors", authors, NULL); + + +gchar *writers[]; +g_object_get (obj, "authors", &writers, NULL); +/* do something with writers */ +g_strfreev (writers); + + +@Since: 2.4 + + + +A C representable type name for #G_TYPE_STRV. + + diff --git a/gobject/ChangeLog b/gobject/ChangeLog index 845c8399..6868f4d4 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,3 +1,9 @@ +Fri Jan 9 23:41:00 2004 Matthias Clasen + + * gboxed.h: + * gboxed.c (g_strv_get_type): Add a boxed type for nul-terminated + string arrays. (#110528) + Fri Jan 9 15:34:15 2004 Tim Janik * gtype.h: added convenience macros G_IMPLEMENT_INTERFACE() and diff --git a/gobject/gboxed.c b/gobject/gboxed.c index f62647f2..54a1b490 100644 --- a/gobject/gboxed.c +++ b/gobject/gboxed.c @@ -170,6 +170,18 @@ g_value_array_get_type (void) return type_id; } +GType +g_strv_get_type (void) +{ + static GType type_id = 0; + + if (!type_id) + type_id = g_boxed_type_register_static ("GStrv", + (GBoxedCopyFunc) g_strdupv, + (GBoxedFreeFunc) g_strfreev); + return type_id; +} + GType g_gstring_get_type (void) { diff --git a/gobject/gboxed.h b/gobject/gboxed.h index 7e57c5ca..b4bf15d2 100644 --- a/gobject/gboxed.h +++ b/gobject/gboxed.h @@ -60,6 +60,7 @@ GType g_boxed_type_register_static (const gchar *name, #define G_TYPE_CLOSURE (g_closure_get_type ()) #define G_TYPE_VALUE (g_value_get_type ()) #define G_TYPE_VALUE_ARRAY (g_value_array_get_type ()) +#define G_TYPE_STRV (g_strv_get_type ()) #define G_TYPE_GSTRING (g_gstring_get_type ()) @@ -72,7 +73,10 @@ void g_value_set_boxed_take_ownership (GValue *value, GType g_closure_get_type (void) G_GNUC_CONST; GType g_value_get_type (void) G_GNUC_CONST; GType g_value_array_get_type (void) G_GNUC_CONST; -GType g_gstring_get_type (void) G_GNUC_CONST; +GType g_strv_get_type (void) G_GNUC_CONST; +GType g_gstring_get_type (void) G_GNUC_CONST; + +typedef gchar** GStrv; G_END_DECLS -- 2.34.1