/** * grl_operation_options_set_key_filter_value: * @options: a #GrlOperationOptions instance * @key: a #GrlKeyID * @value: a #GValue * * Set filter as "@key == @value". * * Returns: %TRUE on success * * Since: 0.2.0 **/ gboolean grl_operation_options_set_key_filter_value (GrlOperationOptions *options, GrlKeyID key, GValue *value) { gboolean ret; GrlRegistry *registry; GType key_type; registry = grl_registry_get_default (); key_type = grl_registry_lookup_metadata_key_type (registry, key); if (G_VALUE_TYPE (value) != key_type) return FALSE; ret = (options->priv->caps == NULL) || grl_caps_is_key_filter (options->priv->caps, key); if (ret) { if (value) { g_hash_table_insert (options->priv->key_filter, GRLKEYID_TO_POINTER (key), grl_g_value_dup (value)); } else { g_hash_table_remove (options->priv->key_filter, GRLKEYID_TO_POINTER (key)); } } return ret; }
/** * grl_metadata_key_get_type: * @key: key to look up * * Retrieves the expected type for values associated with this key * * Returns: the expected value type * * Since: 0.2.0 **/ GType grl_metadata_key_get_type (GrlKeyID key) { GrlRegistry *registry = grl_registry_get_default (); if (registry) { return grl_registry_lookup_metadata_key_type (registry, key); } else { return G_TYPE_INVALID; } }