Added a new macro for adding variable arrays of basic types.
authoronefang <onefang@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 29 Mar 2012 11:18:52 +0000 (11:18 +0000)
committeronefang <onefang@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 29 Mar 2012 11:18:52 +0000 (11:18 +0000)
EET_DATA_DESCRIPTOR_ADD_BASIC_VAR_ARRAY

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eet@69745 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
NEWS
src/lib/Eet.h

index c74c55a..1077123 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 
        * add eet_dictionary_count.
        * add "eet -t FILE.EET".
+
+2012-03-29  David Seikel (onefang)
+
+       * Added a new macro for adding variable arrays of basic types.
+          EET_DATA_DESCRIPTOR_ADD_BASIC_VAR_ARRAY
+
diff --git a/NEWS b/NEWS
index 026be2b..c8bc565 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -29,6 +29,7 @@ Additions:
     * eet_alias_get API
     * eet_data_xattr_cipher_get and eet_data_xattr_cipher_set APIs
     * EET_DATA_DESCRIPTOR_ADD_BASIC_ARRAY API
+    * EET_DATA_DESCRIPTOR_ADD_BASIC_VAR_ARRAY API
 
 Fixes:
 
index 7495090..c49def7 100644 (file)
@@ -3157,6 +3157,38 @@ eet_data_descriptor_encode(Eet_Data_Descriptor *edd,
     } while(0)
 
 /**
+ * Add a variable array of basic data elements to a data descriptor.
+ * @param edd The data descriptor to add the type to.
+ * @param struct_type The type of the struct.
+ * @param name The string name to use to encode/decode this member
+ *        (must be a constant global and never change).
+ * @param member The struct member itself to be encoded.
+ * @param type The type of the member to encode.
+ *
+ * This macro lets you easily add a variable size array of basic data
+ * types. All the parameters are the same as for
+ * EET_DATA_DESCRIPTOR_ADD_BASIC(). This assumes you have
+ * a struct member (of type EET_T_INT) called member_count (note the
+ * _count appended to the member) that holds the number of items in
+ * the array. This array will be allocated separately to the struct it
+ * is in.
+ *
+ * @since 1.5.0
+ * @ingroup Eet_Data_Group
+ */
+#define EET_DATA_DESCRIPTOR_ADD_BASIC_VAR_ARRAY(edd, struct_type, name, member, type) \
+  do {                                                                                \
+       struct_type ___ett;                                                            \
+       eet_data_descriptor_element_add(edd, name, type, EET_G_VAR_ARRAY,              \
+                                       (char *)(& (___ett.member)) -                  \
+                                       (char *)(& (___ett)),                          \
+                                       (char *)(& (___ett.member ## _count)) -        \
+                                       (char *)(& (___ett)),                          \
+                                       NULL,                                          \
+                                       NULL);                                         \
+    } while(0)
+
+/**
  * Add a fixed size array type to a data descriptor
  * @param edd The data descriptor to add the type to.
  * @param struct_type The type of the struct.