*/
if (group_type > EET_G_UNKNOWN
&& group_type < EET_G_LAST
- && type != EET_T_UNKNOW
+ && type > EET_T_UNKNOW && type < EET_T_STRING
&& subtype == NULL)
{
subtype = calloc(1, sizeof (Eet_Data_Descriptor));
void **ptr;
void *data_ret;
- EET_ASSERT(!IS_SIMPLE_TYPE(type), return 0);
+ EET_ASSERT(!((type > EET_T_UNKNOW) && (type < EET_T_STRING)), return 0);
ptr = (void **)data;
list = *ptr;
data_ret = NULL;
- data_ret = _eet_data_descriptor_decode(ed, ede->subtype, echnk->data, echnk->size, level + 2, dumpfunc, dumpdata);
- if (!data_ret) return 0;
+ if (ede->type >= EET_T_STRING)
+ {
+ int ret;
+
+ ret = eet_data_get_unknown(ed, edd, ede, echnk, ede->type, EET_G_UNKNOWN,
+ &data_ret, level, dumpfunc, dumpdata, p, size);
+ if (!ret) return 0;
+ }
+ else
+ {
+ data_ret = _eet_data_descriptor_decode(ed, ede->subtype, echnk->data, echnk->size, level + 2, dumpfunc, dumpdata);
+ if (!data_ret) return 0;
+ }
list = edd->func.list_append(list, data_ret);
*ptr = list;
void *l;
int size;
- EET_ASSERT(!IS_SIMPLE_TYPE(ede->type), return );
+ EET_ASSERT(!((ede->type > EET_T_UNKNOW) && (ede->type < EET_T_STRING)), return );
l = *((void **)(((char *)data_in)));
for (; l; l = edd->func.list_next(l))
{
- data = _eet_data_descriptor_encode(ed,
- ede->subtype,
- edd->func.list_data(l),
- &size);
- if (data) eet_data_encode(ed, ds, data, ede->name, size, ede->type, ede->group_type);
+ if (ede->type >= EET_T_STRING)
+ {
+ const char *str = edd->func.list_data(l);
+ eet_data_put_unknown(ed, NULL, ede, ds, &str);
+ }
+ else
+ {
+ data = _eet_data_descriptor_encode(ed,
+ ede->subtype,
+ edd->func.list_data(l),
+ &size);
+ if (data) eet_data_encode(ed, ds, data, ede->name, size, ede->type, ede->group_type);
+ }
}
}
Eina_List *list;
Eina_Hash *hash;
Eina_List *ilist;
+ Eina_List *slist;
Eina_Hash *ihash;
Eet_Test_Basic_Type sarray1[10];
unsigned int sarray2[5];
eet_data_descriptor_element_add(edd, "ihash", EET_T_INT, EET_G_HASH,
(char *)(&(etbt.ihash)) - (char *)(&(etbt)),
0, /* 0, */NULL, NULL);
+ eet_data_descriptor_element_add(edd, "slist", EET_T_STRING, EET_G_LIST,
+ (char *)(&(etbt.slist)) - (char *)(&(etbt)),
+ 0, /* 0, */NULL, NULL);
}
static Eet_Test_Ex_Type*
res->hash = NULL;
res->ilist = NULL;
res->ihash = NULL;
+ res->slist = NULL;
res->varray2 = malloc(sizeof (Eet_Test_Basic_Type) * 10);
res->varray1 = malloc(sizeof (int) * 5);
etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
etbt.ihash = eina_hash_string_superfast_new(NULL);
eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
+ etbt.slist = eina_list_prepend(NULL, strdup("test"));
eet_test_setup_eddc(&eddc);
eddc.name = "Eet_Test_Ex_Type";
fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
fail_if(eina_list_data_get(result->ilist) == NULL);
fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
+ fail_if(eina_list_data_get(result->slist) == NULL);
+ fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
test = 0;
eina_hash_foreach(result->hash, func, &test);
eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
etbt.ihash = eina_hash_string_superfast_new(NULL);
eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
+ etbt.slist = eina_list_prepend(NULL, strdup("test"));
eet_test_setup_eddc(&eddc);
eddc.name = "Eet_Test_Ex_Type";
fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
fail_if(eina_list_data_get(result->ilist) == NULL);
fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
+ fail_if(eina_list_data_get(result->slist) == NULL);
+ fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
test = 0;
eina_hash_foreach(result->hash, func, &test);
eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
etbt.ihash = eina_hash_string_superfast_new(NULL);
eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
+ etbt.slist = eina_list_prepend(NULL, strdup("test"));
eet_test_setup_eddc(&eddc);
eddc.name = "Eet_Test_Ex_Type";
fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
fail_if(eina_list_data_get(result->ilist) == NULL);
fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
+ fail_if(eina_list_data_get(result->slist) == NULL);
+ fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
test = 0;
eina_hash_foreach(result->hash, func, &test);
eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
etbt.ihash = eina_hash_string_superfast_new(NULL);
eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
+ etbt.slist = eina_list_prepend(NULL, strdup("test"));
eet_test_setup_eddc(&eddc);
eddc.name = "Eet_Test_Ex_Type";
fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
fail_if(eina_list_data_get(result->ilist) == NULL);
fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
+ fail_if(eina_list_data_get(result->slist) == NULL);
+ fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
test = 0;
eina_hash_foreach(result->hash, func, &test);