diff options
author | Christophe Sadoine <chris@indefini.org> | 2013-11-04 15:33:12 +0900 |
---|---|---|
committer | Cedric Bail <cedric.bail@samsung.com> | 2013-11-04 15:35:41 +0900 |
commit | 6853dbcf23f71038a14fb4e44c0011dbb475821c (patch) | |
tree | fa4a7a79e55d4c88b79975d3394e3010db7b365d /src/lib/eet/eet_data.c | |
parent | cff3ec04b4d234c8ef59f9d6235e85b725e0bcf3 (diff) |
eet: Adding EET_DATA_DESCRIPTOR_ADD_MAPPING_BASIC to add a basic type to a union.
I added EET_DATA_DESCRIPTOR_ADD_MAPPING_BASIC because I need basic types in unions, and EET_DATA_DESCRIPTOR_ADD_MAPPING is only for structs.
I also modified the example with a float and a string.
Reviewers: cedric
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D313
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
Diffstat (limited to '')
-rw-r--r-- | src/lib/eet/eet_data.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/lib/eet/eet_data.c b/src/lib/eet/eet_data.c index e4a0d26d68..33134b29a0 100644 --- a/src/lib/eet/eet_data.c +++ b/src/lib/eet/eet_data.c | |||
@@ -4060,7 +4060,11 @@ eet_data_put_union(Eet_Dictionary *ed, | |||
4060 | ede->group_type); | 4060 | ede->group_type); |
4061 | 4061 | ||
4062 | sede = &(ede->subtype->elements.set[i]); | 4062 | sede = &(ede->subtype->elements.set[i]); |
4063 | data = _eet_data_descriptor_encode(ed, | 4063 | |
4064 | if (IS_SIMPLE_TYPE(sede->type)) | ||
4065 | data = eet_data_put_type(ed, sede->type, data_in, &size); | ||
4066 | else | ||
4067 | data = _eet_data_descriptor_encode(ed, | ||
4064 | sede->subtype, | 4068 | sede->subtype, |
4065 | data_in, | 4069 | data_in, |
4066 | &size); | 4070 | &size); |
@@ -4126,17 +4130,31 @@ eet_data_get_union(Eet_Free_Context *context, | |||
4126 | 4130 | ||
4127 | /* Yeah we found it ! */ | 4131 | /* Yeah we found it ! */ |
4128 | sede = &(ede->subtype->elements.set[i]); | 4132 | sede = &(ede->subtype->elements.set[i]); |
4129 | EET_ASSERT(sede->subtype, goto on_error); | ||
4130 | 4133 | ||
4131 | data_ret = _eet_data_descriptor_decode(context, | 4134 | if (IS_SIMPLE_TYPE(sede->type)) |
4135 | { | ||
4136 | ret = eet_data_get_type(ed, | ||
4137 | sede->type, | ||
4138 | echnk->data, | ||
4139 | ((char *)echnk->data) + echnk->size, | ||
4140 | (char *)data); | ||
4141 | |||
4142 | if (ret <= 0) | ||
4143 | return ret; | ||
4144 | } | ||
4145 | else | ||
4146 | { | ||
4147 | EET_ASSERT(sede->subtype, goto on_error); | ||
4148 | data_ret = _eet_data_descriptor_decode(context, | ||
4132 | ed, | 4149 | ed, |
4133 | sede->subtype, | 4150 | sede->subtype, |
4134 | echnk->data, | 4151 | echnk->data, |
4135 | echnk->size, | 4152 | echnk->size, |
4136 | data, | 4153 | data, |
4137 | sede->subtype->size); | 4154 | sede->subtype->size); |
4138 | if (!data_ret) | 4155 | if (!data_ret) |
4139 | goto on_error; | 4156 | goto on_error; |
4157 | } | ||
4140 | 4158 | ||
4141 | /* Set union type. */ | 4159 | /* Set union type. */ |
4142 | if ((!ed) || (!ede->subtype->func.str_direct_alloc)) | 4160 | if ((!ed) || (!ede->subtype->func.str_direct_alloc)) |