GLib — получение количества строк в массиве, возвращаемом через D-Bus
Я получаю массив строк через вызов функции через D-Bus следующим образом. Затем я использую GLib для анализа возвращаемых значений. Приведенный ниже код значительно упрощен. Я могу прочитать каждую строку, возвращенную с помощьюg_variant_iter_loop
иiterator
.
Как я могу сначала определить, сколько строк было возвращено в массиве?
Мне нужно сначала динамически выделить память в зависимости от того, сколько строк было возвращено, прежде чем читать фактические строки. Это может показаться простым, но я безуспешно искал в Интернете лучший способ сделать это. Заранее спасибо.
GVariant * val_returned = g_dbus_connection_call_sync(connection,
SERVICE,
OBJECT,
IFACE,
"GetStringsArray",
NULL,
G_VARIANT_TYPE("(as)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
&err);
g_autoptr(GVariantIter) iterator = NULL;
g_variant_get(val_returned, "(as)", &iterator);
// Need to determine how many strings have been read into the array
// Use g_variant_iter_loop to retrieve each string as a gchar*