Add peek_as_variant and ref_to_variant for all types

This commit is contained in:
Alexander Larsson
2020-01-13 13:27:26 +01:00
parent 646a5296e7
commit 8b2c465f02
2 changed files with 16 additions and 5 deletions

View File

@@ -1,12 +1,9 @@
TODO:
* Inline code in lookup() to avoid recomputing. Also, maybe do special frame_size == 1 case
* dicts: "[sorted int] value"
* Generate structs for fixed structs, Struct_peek(), struct_peek_var()
* Apply endianness attribute in getters
* Add _peek_as_variant() for generated types
* Add _peek_as_variant() variant with extra args for data + destry notify
* Add more tests
* More attributes: untrusted, sorted (for dict keys => bsearch)
* dicts: "[sorted int] value" ( => bsearch)
* More attributes: untrusted
Maybe TODO:
* Add more optional checking (out of bounds, validity, etc)

View File

@@ -407,6 +407,20 @@ static inline GVariant *
return g_variant_new_from_data ({TYPE_NAME_}TYPEFORMAT, g_memdup (v.base, v.size), v.size, TRUE, g_free, NULL);
}}
static inline GVariant *
{type_name_ref_}ref_to_variant ({TypeNameRef} v,
GDestroyNotify notify,
gpointer user_data)
{{
return g_variant_new_from_data ({TYPE_NAME_}TYPEFORMAT, v.base, v.size, TRUE, notify, user_data);
}}
static inline GVariant *
{type_name_ref_}peek_as_variant ({TypeNameRef} v)
{{
return g_variant_new_from_data ({TYPE_NAME_}TYPEFORMAT, v.base, v.size, TRUE, NULL, NULL);
}}
static inline {TypeNameRef}
{type_name_ref_}from_variant_ref ({Prefix}VariantRef v) {{
g_assert (g_variant_type_equal({prefix_}variant_ref_get_type (v), {TYPE_NAME_}TYPESTRING));