GVariantTypeInfo changes
[platform/upstream/glib.git] / glib / gvarianttypeinfo.h
index c77cb20..25a645b 100644 (file)
@@ -95,16 +95,35 @@ typedef struct _GVariantTypeInfo GVariantTypeInfo;
  *
  * For details about how 'a', 'b' and 'c' are calculated, see the
  * comments at the point of the implementation in gvariantypeinfo.c.
+ *
+ * The end address of the item is then determined in one of three ways,
+ * according to the 'end_type' field.
+ *
+ *   - FIXED: For fixed sized items, the end address is equal to the
+ *     start address plus the fixed size.
+ *
+ *   - LAST: For the last variable sized item in the tuple, the end
+ *     address is equal to the end address of the tuple, minus the size
+ *     of the offset array.
+ *
+ *   - OFFSET: For other variable sized items, the next index past 'i'
+ *     (ie: 'i + 1') must be consulted to find the end of this item.
  */
 
 typedef struct
 {
-  GVariantTypeInfo *type;
+  GVariantTypeInfo *type_info;
 
   gsize i, a;
   gint8 b, c;
+
+  guint8 ending_type;
 } GVariantMemberInfo;
 
+#define G_VARIANT_MEMBER_ENDING_FIXED   0
+#define G_VARIANT_MEMBER_ENDING_LAST    1
+#define G_VARIANT_MEMBER_ENDING_OFFSET  2
+
 /* query */
 G_GNUC_INTERNAL
 const gchar *                   g_variant_type_info_get_type_string     (GVariantTypeInfo   *typeinfo);