From 9a068b7247bf07f17b6bd8d659c97cdb5be7adb5 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Thu, 29 Mar 2012 11:18:52 +0000 Subject: Added a new macro for adding variable arrays of basic types. EET_DATA_DESCRIPTOR_ADD_BASIC_VAR_ARRAY SVN revision: 69745 --- src/lib/Eet.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src') diff --git a/src/lib/Eet.h b/src/lib/Eet.h index 7495090..c49def7 100644 --- a/src/lib/Eet.h +++ b/src/lib/Eet.h @@ -3156,6 +3156,38 @@ eet_data_descriptor_encode(Eet_Data_Descriptor *edd, NULL, NULL); \ } 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. -- cgit v1.2.1