结构体

GLibVariantDict

自版本:2.40

描述 [src]

struct GVariantDict {
  /* No available fields */
}

GVariantDict 是一个对 GVariant 字典的可变接口。

它可用于在已有的 GVariant 字典上以一种高效的方式执行一系列字典查找,或者它可用于利用类似散列表的接口构造新的字典。它还可用于获取已有的字典并对其进行修改,以创建新的字典。

GVariantDict 仅能与 G_VARIANT_TYPE_VARDICT 字典一起使用。

可以在栈上或堆上使用 GVariantDict。如果在栈上使用 GVariantDict,请从 g_variant_dict_init() 调用开始,使用对 g_variant_dict_clear() 的调用释放资源。

在堆上分配的 GVariantDict 遵循常规的引用计数规则:使用 g_variant_dict_new() 为其分配空间,并使用 g_variant_dict_ref() 和 g_variant_dict_unref()。

g_variant_dict_end() 用于将 GVariantDict 转换回字典类型的 GVariant。在与栈上分配的实例一起使用时,该操作还会隐式释放所有关联的内存,但对于堆上分配的实例,你仍必须先调用 g_variant_dict_unref()

当将 GVariantDict 作为 API 的一部分公开时,你通常希望使用一个在堆上分配的 GVariantDict。对于大多数其他用途,栈上分配的形式会更方便。

考虑以下两个示例,它们都以相同风格执行相同操作:获取一个已有的字典并查找“count”uint32 密钥,如果找到该密钥,则向其添加 1,如果找不到该密钥,则返回一个错误。每个都将新字典作为浮动 GVariant 返回。

使用栈上分配的 GVariantDict

  GVariant *
  add_to_count (GVariant  *orig,
                GError   **error)
  {
    GVariantDict dict;
    guint32 count;

    g_variant_dict_init (&dict, orig);
    if (!g_variant_dict_lookup (&dict, "count", "u", &count))
      {
        g_set_error (...);
        g_variant_dict_clear (&dict);
        return NULL;
      }

    g_variant_dict_insert (&dict, "count", "u", count + 1);

    return g_variant_dict_end (&dict);
  }

使用堆上分配的 GVariantDict

  GVariant *
  add_to_count (GVariant  *orig,
                GError   **error)
  {
    GVariantDict *dict;
    GVariant *result;
    guint32 count;

    dict = g_variant_dict_new (orig);

    if (g_variant_dict_lookup (dict, "count", "u", &count))
      {
        g_variant_dict_insert (dict, "count", "u", count + 1);
        result = g_variant_dict_end (dict);
      }
    else
      {
        g_set_error (...);
        result = NULL;
      }

    g_variant_dict_unref (dict);

    return result;
  }

自版本 2.40 起可用

构造函数

g_variant_dict_new

分配并初始化一个新的 GVariantDict

自版本:2.40

实例方法

g_variant_dict_clear

释放与 GVariantDict 关联的所有内存,而不释放 GVariantDict 结构本身。

自版本:2.40

g_variant_dict_contains

检查 key 是否存在于 dict 中。

自版本:2.40

g_variant_dict_end

返回 dict 的当前值,作为类型为 G_VARIANT_TYPE_VARDICTGVariant,同时清除它。

自版本:2.40

g_variant_dict_init

初始化一个 GVariantDict 结构。

自版本:2.40

g_variant_dict_insert

GVariantDict 中插入一个值。

自版本:2.40

g_variant_dict_insert_value

GVariantDict 中插入(或替换)一个密钥。

自版本:2.40

g_variant_dict_lookup

GVariantDict 中查找一个值。

自版本:2.40

g_variant_dict_lookup_value

GVariantDict 中查找一个值。

自版本:2.40

g_variant_dict_ref

增加 字典 的引用计数。

自版本:2.40

g_variant_dict_remove

GVariantDict 中移除一个键及其关联的值。

自版本:2.40

g_variant_dict_unref

减少 字典 的引用计数。

自版本:2.40