Удалить значение из a{ss}

У меня есть этот код для записи имени устройства в меню выбора настроек:

          GVariant devices
    GVariantBuilder builder;
    GVariantIter iter;
    char *device;
    char *p;

    g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}"));
    g_variant_iter_init (&iter, devices);
    while (g_variant_iter_loop (&iter, "{ss}", &device, &p))
    {
        if (g_strcmp0 (device, settings.device) == 0)
        {
             g_variant_builder_add (&builder, "{ss}", device, p);
        }
    }

     devices = g_variant_builder_end (&builder);
     

будет производить:

           {'device1': 'device1_name', 'device2': 'device2_name' 'device3': 'device3_name'}

Как удалить массив fom, например 'device2': 'device2_name', если устройство исчезло?

0 ответов

Другие вопросы по тегам