static void _struct_properties_init(void) { typedef struct _This_Esql_Model_Table_Properties { const char *database; const char *table; } This_Esql_Model_Table_Properties; static Eina_Value_Struct_Member prop_members[] = { EINA_VALUE_STRUCT_MEMBER(NULL, This_Esql_Model_Table_Properties, database), EINA_VALUE_STRUCT_MEMBER(NULL, This_Esql_Model_Table_Properties, table), }; prop_members[ESQL_MODEL_TABLE_PROP_DATABASE].type = EINA_VALUE_TYPE_STRING; prop_members[ESQL_MODEL_TABLE_PROP_TABLE].type = EINA_VALUE_TYPE_STRING; static Eina_Value_Struct_Desc prop_desc = { EINA_VALUE_STRUCT_DESC_VERSION, NULL, // no special operations prop_members, EINA_C_ARRAY_LENGTH(prop_members), sizeof(This_Esql_Model_Table_Properties) }; ESQL_MODEL_TABLE_PROPERTIES_DESC = &prop_desc; }
static void _fill_receive_array_of_string_int_with_size(Eldbus_Message *msg, int size, const char *array[]) { Eina_Value *value_struct, *value_array; int i; unsigned offset; Eina_Value_Struct_Member main_members[2]; Eina_Value_Struct_Member sub_members[] = { EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_STRING, sub_struct, txt), EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_INT, sub_struct, num) }; Eina_Value_Struct_Desc desc_sub_struct = { EINA_VALUE_STRUCT_DESC_VERSION, NULL, // no special operations sub_members, 2, sizeof(sub_struct) }; Eina_Value_Struct_Desc desc_struct = { EINA_VALUE_STRUCT_DESC_VERSION, NULL, // no special operations main_members, 2, 0//will be set below }; offset = _type_offset(sizeof(int), sizeof(Eina_Value_Array)); main_members[0].name = "size"; main_members[0].type = EINA_VALUE_TYPE_INT, 0; main_members[0].offset = 0; main_members[1].name = "array"; main_members[1].type = EINA_VALUE_TYPE_ARRAY; main_members[1].offset = offset; desc_struct.size = offset + sizeof(Eina_Value_Array); value_struct = eina_value_struct_new(&desc_struct); eina_value_struct_set(value_struct, "size", size); value_array = eina_value_array_new(EINA_VALUE_TYPE_STRUCT, size); for (i = 0; i < size; i++) { Eina_Value *value_sub_struct = eina_value_struct_new(&desc_sub_struct); Eina_Value_Struct st; eina_value_struct_set(value_sub_struct, "txt", array[i]); eina_value_struct_set(value_sub_struct, "num", i); eina_value_get(value_sub_struct, &st); eina_value_array_append(value_array, st); eina_value_free(value_sub_struct); } eina_value_struct_value_set(value_struct, "array", value_array); eldbus_message_from_eina_value("ia(si)", msg, value_struct); eina_value_free(value_struct); eina_value_free(value_array); }
void value_init(void) { typedef struct _My_Struct_V1 { int param1; char param2; } My_Struct_V1; static Eina_Value_Struct_Member v1_members[] = { // no eina_value_type as they are not constant initializers, see below. EINA_VALUE_STRUCT_MEMBER(NULL, My_Struct_V1, param1), EINA_VALUE_STRUCT_MEMBER(NULL, My_Struct_V1, param2) }; v1_members[0].type = EINA_VALUE_TYPE_INT; v1_members[1].type = EINA_VALUE_TYPE_CHAR; static Eina_Value_Struct_Desc v1_desc = { EINA_VALUE_STRUCT_DESC_VERSION, NULL, // no special operations v1_members, EINA_C_ARRAY_LENGTH(v1_members), sizeof(My_Struct_V1) }; V1_DESC = &v1_desc; typedef struct _My_Struct_V2 { int param1; char param2; int param3; } My_Struct_V2; static Eina_Value_Struct_Member v2_members[] = { // no eina_value_type as they are not constant initializers, see below. EINA_VALUE_STRUCT_MEMBER(NULL, My_Struct_V2, param1), EINA_VALUE_STRUCT_MEMBER(NULL, My_Struct_V2, param2), EINA_VALUE_STRUCT_MEMBER(NULL, My_Struct_V2, param3) }; v2_members[0].type = EINA_VALUE_TYPE_INT; v2_members[1].type = EINA_VALUE_TYPE_CHAR; v2_members[2].type = EINA_VALUE_TYPE_INT; static Eina_Value_Struct_Desc v2_desc = { EINA_VALUE_STRUCT_DESC_VERSION, NULL, // no special operations v2_members, EINA_C_ARRAY_LENGTH(v2_members), sizeof(My_Struct_V2) }; V2_DESC = &v2_desc; }