@@ -66,17 +66,15 @@ modulemd_simpleset_remove_from_array (gpointer key,
6666 gpointer value ,
6767 gpointer user_data )
6868{
69- GPtrArray * array ;
70- gchar * item ;
69+ gchar * * array ;
7170 g_return_val_if_fail (key , FALSE);
7271 g_return_val_if_fail (user_data , FALSE);
7372
74- array = (GPtrArray * )user_data ;
73+ array = (gchar * * )user_data ;
7574
76- for (gsize i = 0 ; i < array -> len ; i ++ )
75+ for (gsize i = 0 ; array [ i ] ; i ++ )
7776 {
78- item = g_ptr_array_index (array , i );
79- if (g_strcmp0 ((gchar * )key , item ) == 0 )
77+ if (g_strcmp0 ((gchar * )key , array [i ]) == 0 )
8078 {
8179 /* This value should stay in the set */
8280 return FALSE;
@@ -90,18 +88,17 @@ modulemd_simpleset_remove_from_array (gpointer key,
9088
9189/**
9290 * modulemd_simpleset_set:
93- * @set: (array zero-terminated=0) (element-type utf8 ): Extensible metadata block
91+ * @set: (array zero-terminated=1 ): Extensible metadata block
9492 *
9593 * Make the contents of the set equal to an array of strings. This function
9694 * will trigger a signal only if the resulting set is different. It does not
9795 * guarantee any order to the resulting set, only that it will be unique.
9896 */
9997void
100- modulemd_simpleset_set (ModulemdSimpleSet * self , GPtrArray * set )
98+ modulemd_simpleset_set (ModulemdSimpleSet * self , gchar * * set )
10199{
102100 gboolean do_notify = FALSE;
103101 guint num_removed ;
104- gchar * item ;
105102
106103 g_return_if_fail (MODULEMD_IS_SIMPLESET (self ));
107104 g_return_if_fail (set );
@@ -116,10 +113,9 @@ modulemd_simpleset_set (ModulemdSimpleSet *self, GPtrArray *set)
116113 }
117114
118115 /* Add in the whole new set to make sure we have everything */
119- for (gsize i = 0 ; i < set -> len ; i ++ )
116+ for (gsize i = 0 ; set [ i ] ; i ++ )
120117 {
121- item = g_ptr_array_index (set , i );
122- if (g_hash_table_add (self -> set , g_strdup (item )))
118+ if (g_hash_table_add (self -> set , g_strdup (set [i ])))
123119 {
124120 /* This key didn't previously exist */
125121 do_notify = TRUE;
@@ -137,15 +133,30 @@ modulemd_simpleset_set (ModulemdSimpleSet *self, GPtrArray *set)
137133 *
138134 * Retrieves the set as a #GPtrArray of strings
139135 *
140- * Returns: (array zero-terminated=0) (element-type utf8 ) (transfer container):
136+ * Returns: (array zero-terminated=1 ) (transfer container):
141137 * A list representing a set of string values.
142138 */
143- GPtrArray *
139+ gchar * *
144140modulemd_simpleset_get (ModulemdSimpleSet * self )
145141{
142+ GPtrArray * sorted_keys = NULL ;
143+ gchar * * keys = NULL ;
146144 g_return_val_if_fail (MODULEMD_IS_SIMPLESET (self ), NULL );
147145
148- return _modulemd_ordered_str_keys (self -> set , _modulemd_strcmp_sort );
146+ /* FIXME: Sort this */
147+ /* return (gchar **)g_hash_table_get_keys_as_array(self->set, NULL); */
148+
149+ sorted_keys = _modulemd_ordered_str_keys (self -> set , _modulemd_strcmp_sort );
150+
151+ keys = g_malloc0_n (sorted_keys -> len + 1 , sizeof (char * ));
152+ for (gsize i = 0 ; i < sorted_keys -> len ; i ++ )
153+ {
154+ keys [i ] = g_strdup (g_ptr_array_index (sorted_keys , i ));
155+ }
156+ keys [sorted_keys -> len ] = NULL ;
157+ g_ptr_array_unref (sorted_keys );
158+
159+ return keys ;
149160}
150161
151162/**
@@ -240,13 +251,13 @@ modulemd_simpleset_class_init (ModulemdSimpleSetClass *klass)
240251 object_class -> finalize = modulemd_simpleset_finalize ;
241252
242253 /**
243- * ModulemdSimpleSet:set: (type GLib.PtrArray(utf8)) ( transfer container)
254+ * ModulemdSimpleSet:set: (transfer container)
244255 */
245256 set_properties [SET_PROP_SET ] =
246257 g_param_spec_boxed ("set" ,
247258 "The set represented as an array of strings." ,
248259 "An ordered list of unique strings in this set" ,
249- G_TYPE_PTR_ARRAY ,
260+ G_TYPE_STRV ,
250261 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS );
251262
252263 g_object_class_install_properties (
0 commit comments