1 #include "e.h"
2 
3 #ifdef USE_IPC
4 /* local subsystem functions */
5 
6 /* encode functions, Should these be global? */
7 
8 /* local subsystem globals */
9 static Eet_Data_Descriptor *_e_ipc_int_edd = NULL;
10 static Eet_Data_Descriptor *_e_ipc_double_edd = NULL;
11 static Eet_Data_Descriptor *_e_ipc_2int_edd = NULL;
12 static Eet_Data_Descriptor *_e_ipc_str_edd = NULL;
13 static Eet_Data_Descriptor *_e_ipc_str_list_edd = NULL;
14 static Eet_Data_Descriptor *_e_ipc_2str_edd = NULL;
15 static Eet_Data_Descriptor *_e_ipc_2str_list_edd = NULL;
16 static Eet_Data_Descriptor *_e_ipc_str_int_edd = NULL;
17 static Eet_Data_Descriptor *_e_ipc_str_int_list_edd = NULL;
18 static Eet_Data_Descriptor *_e_ipc_2str_int_edd = NULL;
19 static Eet_Data_Descriptor *_e_ipc_2str_int_list_edd = NULL;
20 static Eet_Data_Descriptor *_e_ipc_4int_2str_edd = NULL;
21 static Eet_Data_Descriptor *_e_ipc_4int_2str_list_edd = NULL;
22 static Eet_Data_Descriptor *_e_ipc_5int_2str_edd = NULL;
23 static Eet_Data_Descriptor *_e_ipc_5int_2str_list_edd = NULL;
24 static Eet_Data_Descriptor *_e_ipc_3int_4str_edd = NULL;
25 static Eet_Data_Descriptor *_e_ipc_3int_4str_list_edd = NULL;
26 static Eet_Data_Descriptor *_e_ipc_3int_3str_edd = NULL;
27 static Eet_Data_Descriptor *_e_ipc_3int_3str_list_edd = NULL;
28 static Eet_Data_Descriptor *_e_ipc_str_4int_edd = NULL;
29 static Eet_Data_Descriptor *_e_ipc_str_4int_list_edd = NULL;
30 
31 #define E_IPC_DD(Edd, Eddc, Name, Type) \
32   Eddc.name = Name;                     \
33   Eddc.size = sizeof (Type);            \
34   Edd = eet_data_descriptor_stream_new(&Eddc);
35 
36 /* externally accessible functions */
37 EINTERN int
e_ipc_codec_init(void)38 e_ipc_codec_init(void)
39 {
40    Eet_Data_Descriptor_Class eddc;
41 
42    if (!eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "int", sizeof (E_Ipc_Int)))
43      return 0;
44    _e_ipc_int_edd = eet_data_descriptor_stream_new(&eddc);
45    E_CONFIG_VAL(_e_ipc_int_edd, E_Ipc_Int, val, INT);
46 
47    E_IPC_DD(_e_ipc_double_edd, eddc, "double", E_Ipc_Double);
48    E_CONFIG_VAL(_e_ipc_double_edd, E_Ipc_Double, val, DOUBLE);
49 
50    E_IPC_DD(_e_ipc_2int_edd, eddc, "2int", E_Ipc_2Int);
51    E_CONFIG_VAL(_e_ipc_2int_edd, E_Ipc_2Int, val1, INT);
52    E_CONFIG_VAL(_e_ipc_2int_edd, E_Ipc_2Int, val2, INT);
53 
54    E_IPC_DD(_e_ipc_str_edd, eddc, "str", E_Ipc_Str);
55    E_CONFIG_VAL(_e_ipc_str_edd, E_Ipc_Str, str, STR);
56 
57    E_IPC_DD(_e_ipc_str_list_edd, eddc, "str_list", E_Ipc_List);
58    E_CONFIG_LIST(_e_ipc_str_list_edd, E_Ipc_List, list, _e_ipc_str_edd);
59 
60    E_IPC_DD(_e_ipc_2str_edd, eddc, "2str", E_Ipc_2Str);
61    E_CONFIG_VAL(_e_ipc_2str_edd, E_Ipc_2Str, str1, STR);
62    E_CONFIG_VAL(_e_ipc_2str_edd, E_Ipc_2Str, str2, STR);
63 
64    E_IPC_DD(_e_ipc_2str_list_edd, eddc, "2str_list", E_Ipc_List);
65    E_CONFIG_LIST(_e_ipc_2str_list_edd, E_Ipc_List, list, _e_ipc_2str_edd);
66 
67    E_IPC_DD(_e_ipc_str_int_edd, eddc, "str_int", E_Ipc_Str_Int);
68    E_CONFIG_VAL(_e_ipc_str_int_edd, E_Ipc_Str_Int, str, STR);
69    E_CONFIG_VAL(_e_ipc_str_int_edd, E_Ipc_Str_Int, val, INT);
70 
71    E_IPC_DD(_e_ipc_str_int_list_edd, eddc, "str_int_list", E_Ipc_List);
72    E_CONFIG_LIST(_e_ipc_str_int_list_edd, E_Ipc_List, list, _e_ipc_str_int_edd);
73 
74    E_IPC_DD(_e_ipc_2str_int_edd, eddc, "2str_int", E_Ipc_2Str_Int);
75    E_CONFIG_VAL(_e_ipc_2str_int_edd, E_Ipc_2Str_Int, str1, STR);
76    E_CONFIG_VAL(_e_ipc_2str_int_edd, E_Ipc_2Str_Int, str2, STR);
77    E_CONFIG_VAL(_e_ipc_2str_int_edd, E_Ipc_2Str_Int, val, INT);
78 
79    E_IPC_DD(_e_ipc_2str_int_list_edd, eddc, "2str_int_list", E_Ipc_List);
80    E_CONFIG_LIST(_e_ipc_2str_int_list_edd, E_Ipc_List, list, _e_ipc_2str_int_edd);
81 
82    E_IPC_DD(_e_ipc_4int_2str_edd, eddc, "4int_2str", E_Ipc_4Int_2Str);
83    E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, val1, INT);
84    E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, val2, INT);
85    E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, val3, INT);
86    E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, val4, INT);
87    E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, str1, STR);
88    E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, str2, STR);
89 
90    E_IPC_DD(_e_ipc_4int_2str_list_edd, eddc, "4int_2str_list", E_Ipc_List);
91    E_CONFIG_LIST(_e_ipc_4int_2str_list_edd, E_Ipc_List, list, _e_ipc_4int_2str_edd);
92 
93    E_IPC_DD(_e_ipc_5int_2str_edd, eddc, "5int_2str", E_Ipc_5Int_2Str);
94    E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, val1, INT);
95    E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, val2, INT);
96    E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, val3, INT);
97    E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, val4, INT);
98    E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, val5, INT);
99    E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, str1, STR);
100    E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, str2, STR);
101 
102    E_IPC_DD(_e_ipc_5int_2str_list_edd, eddc, "5int_2str_list", E_Ipc_List);
103    E_CONFIG_LIST(_e_ipc_5int_2str_list_edd, E_Ipc_List, list, _e_ipc_5int_2str_edd);
104 
105    E_IPC_DD(_e_ipc_3int_4str_edd, eddc, "3int_4str", E_Ipc_3Int_4Str);
106    E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, val1, INT);
107    E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, val2, INT);
108    E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, val3, INT);
109    E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, str1, STR);
110    E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, str2, STR);
111    E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, str3, STR);
112    E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, str4, STR);
113 
114    E_IPC_DD(_e_ipc_3int_4str_list_edd, eddc, "3int_4str_list", E_Ipc_List);
115    E_CONFIG_LIST(_e_ipc_3int_4str_list_edd, E_Ipc_List, list, _e_ipc_3int_4str_edd);
116 
117    E_IPC_DD(_e_ipc_3int_3str_edd, eddc, "3int_3str", E_Ipc_3Int_3Str);
118    E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, val1, INT);
119    E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, val2, INT);
120    E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, val3, INT);
121    E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, str1, STR);
122    E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, str2, STR);
123    E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, str3, STR);
124 
125    E_IPC_DD(_e_ipc_3int_3str_list_edd, eddc, "3int_3str_list", E_Ipc_List);
126    E_CONFIG_LIST(_e_ipc_3int_3str_list_edd, E_Ipc_List, list, _e_ipc_3int_3str_edd);
127 
128    E_IPC_DD(_e_ipc_str_4int_edd, eddc, "str_4int", E_Ipc_Str_4Int);
129    E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, str, STR);
130    E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val1, INT);
131    E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val2, INT);
132    E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val3, INT);
133    E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val4, INT);
134 
135    E_IPC_DD(_e_ipc_str_4int_list_edd, eddc, "str_4int_list", E_Ipc_List);
136    E_CONFIG_LIST(_e_ipc_str_4int_list_edd, E_Ipc_List, list, _e_ipc_str_4int_edd);
137 
138    return 1;
139 }
140 
141 EINTERN void
e_ipc_codec_shutdown(void)142 e_ipc_codec_shutdown(void)
143 {
144    E_CONFIG_DD_FREE(_e_ipc_int_edd);
145    E_CONFIG_DD_FREE(_e_ipc_double_edd);
146    E_CONFIG_DD_FREE(_e_ipc_2int_edd);
147    E_CONFIG_DD_FREE(_e_ipc_str_edd);
148    E_CONFIG_DD_FREE(_e_ipc_str_list_edd);
149    E_CONFIG_DD_FREE(_e_ipc_2str_edd);
150    E_CONFIG_DD_FREE(_e_ipc_2str_list_edd);
151    E_CONFIG_DD_FREE(_e_ipc_str_int_edd);
152    E_CONFIG_DD_FREE(_e_ipc_str_int_list_edd);
153    E_CONFIG_DD_FREE(_e_ipc_2str_int_edd);
154    E_CONFIG_DD_FREE(_e_ipc_2str_int_list_edd);
155    E_CONFIG_DD_FREE(_e_ipc_4int_2str_edd);
156    E_CONFIG_DD_FREE(_e_ipc_4int_2str_list_edd);
157    E_CONFIG_DD_FREE(_e_ipc_5int_2str_edd);
158    E_CONFIG_DD_FREE(_e_ipc_5int_2str_list_edd);
159    E_CONFIG_DD_FREE(_e_ipc_3int_4str_edd);
160    E_CONFIG_DD_FREE(_e_ipc_3int_4str_list_edd);
161    E_CONFIG_DD_FREE(_e_ipc_3int_3str_edd);
162    E_CONFIG_DD_FREE(_e_ipc_3int_3str_list_edd);
163    E_CONFIG_DD_FREE(_e_ipc_str_4int_edd);
164    E_CONFIG_DD_FREE(_e_ipc_str_4int_list_edd);
165 }
166 
167 E_API int
e_ipc_codec_int_dec(char * data,int bytes,int * dest)168 e_ipc_codec_int_dec(char *data, int bytes, int *dest)
169 {
170    E_Ipc_Int *dat;
171 
172    if (!data) return 0;
173    dat = eet_data_descriptor_decode(_e_ipc_int_edd, data, bytes);
174    if (!dat) return 0;
175    if (dest) *dest = dat->val;
176    free(dat);
177    return 1;
178 }
179 
180 E_API void *
e_ipc_codec_int_enc(int val,int * size_ret)181 e_ipc_codec_int_enc(int val, int *size_ret)
182 {
183    E_Ipc_Int dat;
184 
185    dat.val = val;
186    return eet_data_descriptor_encode(_e_ipc_int_edd, &dat, size_ret);
187 }
188 
189 E_API int
e_ipc_codec_double_dec(char * data,int bytes,double * dest)190 e_ipc_codec_double_dec(char *data, int bytes, double *dest)
191 {
192    E_Ipc_Double *dat;
193 
194    if (!data) return 0;
195    dat = eet_data_descriptor_decode(_e_ipc_double_edd, data, bytes);
196    if (!dat) return 0;
197    if (dest) *dest = dat->val;
198    free(dat);
199    return 1;
200 }
201 
202 E_API void *
e_ipc_codec_double_enc(double val,int * size_ret)203 e_ipc_codec_double_enc(double val, int *size_ret)
204 {
205    E_Ipc_Double dat;
206 
207    dat.val = val;
208    return eet_data_descriptor_encode(_e_ipc_double_edd, &dat, size_ret);
209 }
210 
211 E_API int
e_ipc_codec_2int_dec(char * data,int bytes,int * dest,int * dest2)212 e_ipc_codec_2int_dec(char *data, int bytes, int *dest, int *dest2)
213 {
214    E_Ipc_2Int *dat;
215 
216    if (!data) return 0;
217    dat = eet_data_descriptor_decode(_e_ipc_2int_edd, data, bytes);
218    if (!dat) return 0;
219    if (dest) *dest = dat->val1;
220    if (dest2) *dest2 = dat->val2;
221    free(dat);
222    return 1;
223 }
224 
225 E_API void *
e_ipc_codec_2int_enc(int val1,int val2,int * size_ret)226 e_ipc_codec_2int_enc(int val1, int val2, int *size_ret)
227 {
228    E_Ipc_2Int dat;
229 
230    dat.val1 = val1;
231    dat.val2 = val2;
232    return eet_data_descriptor_encode(_e_ipc_2int_edd, &dat, size_ret);
233 }
234 
235 E_API int
e_ipc_codec_str_dec(char * data,int bytes,char ** dest)236 e_ipc_codec_str_dec(char *data, int bytes, char **dest)
237 {
238    E_Ipc_Str *dat;
239 
240    if (!data) return 0;
241    dat = eet_data_descriptor_decode(_e_ipc_str_edd, data, bytes);
242    if (!dat) return 0;
243    if (dest) *dest = dat->str;
244    free(dat);
245    return 1;
246 }
247 
248 E_API void *
e_ipc_codec_str_enc(const char * str,int * size_ret)249 e_ipc_codec_str_enc(const char *str, int *size_ret)
250 {
251    E_Ipc_Str dat;
252 
253    dat.str = (char *)str;
254    return eet_data_descriptor_encode(_e_ipc_str_edd, &dat, size_ret);
255 }
256 
257 E_API int
e_ipc_codec_2str_dec(char * data,int bytes,E_Ipc_2Str ** dest)258 e_ipc_codec_2str_dec(char *data, int bytes, E_Ipc_2Str **dest)
259 {
260    E_Ipc_2Str *dat;
261 
262    if (!data) return 0;
263    dat = eet_data_descriptor_decode(_e_ipc_2str_edd, data, bytes);
264    if (!dat) return 0;
265    if (dest) *dest = dat;
266    return 1;
267 }
268 
269 E_API void *
e_ipc_codec_2str_enc(const char * str1,const char * str2,int * size_ret)270 e_ipc_codec_2str_enc(const char *str1, const char *str2, int *size_ret)
271 {
272    E_Ipc_2Str dat;
273 
274    dat.str1 = (char *)str1;
275    dat.str2 = (char *)str2;
276    return eet_data_descriptor_encode(_e_ipc_2str_edd, &dat, size_ret);
277 }
278 
279 E_API int
e_ipc_codec_2str_list_dec(char * data,int bytes,Eina_List ** dest)280 e_ipc_codec_2str_list_dec(char *data, int bytes, Eina_List **dest)
281 {
282    E_Ipc_List *dat;
283 
284    if (!data) return 0;
285    dat = eet_data_descriptor_decode(_e_ipc_2str_list_edd, data, bytes);
286    if (!dat) return 0;
287    if (dest) *dest = dat->list;
288    free(dat);
289    return 1;
290 }
291 
292 E_API void *
e_ipc_codec_2str_list_enc(Eina_List * list,int * size_ret)293 e_ipc_codec_2str_list_enc(Eina_List *list, int *size_ret)
294 {
295    E_Ipc_List dat;
296    dat.list = list;
297    return eet_data_descriptor_encode(_e_ipc_2str_list_edd, &dat, size_ret);
298 }
299 
300 E_API int
e_ipc_codec_str_list_dec(char * data,int bytes,Eina_List ** dest)301 e_ipc_codec_str_list_dec(char *data, int bytes, Eina_List **dest)
302 {
303    E_Ipc_List *dat;
304    Eina_List *list = NULL, *l;
305    E_Ipc_Str *str_node;
306 
307    if (!data) return 0;
308    dat = eet_data_descriptor_decode(_e_ipc_str_list_edd, data, bytes);
309    if (!dat) return 0;
310    EINA_LIST_FOREACH(dat->list, l, str_node)
311      {
312         list = eina_list_append(list, str_node->str);
313      }
314    if (dest) *dest = list;
315    E_FREE_LIST(dat->list, free);
316    free(dat);
317    return 1;
318 }
319 
320 E_API void *
e_ipc_codec_str_list_enc(Eina_List * list,int * size_ret)321 e_ipc_codec_str_list_enc(Eina_List *list, int *size_ret)
322 {
323    E_Ipc_List dat;
324    Eina_List *l;
325    E_Ipc_Str *str_node;
326    char *str;
327    void *data;
328 
329    dat.list = NULL;
330    EINA_LIST_FOREACH(list, l, str)
331      {
332         str_node = malloc(sizeof(E_Ipc_Str));
333         str_node->str = str;
334         dat.list = eina_list_append(dat.list, str_node);
335      }
336    data = eet_data_descriptor_encode(_e_ipc_str_list_edd, &dat, size_ret);
337    E_FREE_LIST(dat.list, free);
338    return data;
339 }
340 
341 E_API int
e_ipc_codec_str_int_dec(char * data,int bytes,E_Ipc_Str_Int ** dest)342 e_ipc_codec_str_int_dec(char *data, int bytes, E_Ipc_Str_Int **dest)
343 {
344    E_Ipc_Str_Int *dat;
345 
346    if (!data) return 0;
347    dat = eet_data_descriptor_decode(_e_ipc_str_int_edd, data, bytes);
348    if (!dat) return 0;
349    if (dest) *dest = dat;
350    return 1;
351 }
352 
353 E_API void *
e_ipc_codec_str_int_enc(const char * str,int val,int * size_ret)354 e_ipc_codec_str_int_enc(const char *str, int val, int *size_ret)
355 {
356    E_Ipc_Str_Int dat;
357 
358    dat.str = (char *)str;
359    dat.val = val;
360    return eet_data_descriptor_encode(_e_ipc_str_int_edd, &dat, size_ret);
361 }
362 
363 E_API int
e_ipc_codec_str_int_list_dec(char * data,int bytes,Eina_List ** dest)364 e_ipc_codec_str_int_list_dec(char *data, int bytes, Eina_List **dest)
365 {
366    E_Ipc_List *dat;
367 
368    if (!data) return 0;
369    dat = eet_data_descriptor_decode(_e_ipc_str_int_list_edd, data, bytes);
370    if (!dat) return 0;
371    if (dest) *dest = dat->list;
372    free(dat);
373    return 1;
374 }
375 
376 E_API void *
e_ipc_codec_str_int_list_enc(Eina_List * list,int * size_ret)377 e_ipc_codec_str_int_list_enc(Eina_List *list, int *size_ret)
378 {
379    E_Ipc_List dat;
380    dat.list = list;
381    return eet_data_descriptor_encode(_e_ipc_str_int_list_edd, &dat, size_ret);
382 }
383 
384 E_API int
e_ipc_codec_2str_int_dec(char * data,int bytes,E_Ipc_2Str_Int ** dest)385 e_ipc_codec_2str_int_dec(char *data, int bytes, E_Ipc_2Str_Int **dest)
386 {
387    E_Ipc_2Str_Int *dat;
388 
389    if (!data) return 0;
390    dat = eet_data_descriptor_decode(_e_ipc_2str_int_edd, data, bytes);
391    if (!dat) return 0;
392    if (dest) *dest = dat;
393    return 1;
394 }
395 
396 E_API void *
e_ipc_codec_2str_int_enc(const char * str1,const char * str2,int val,int * size_ret)397 e_ipc_codec_2str_int_enc(const char *str1, const char *str2, int val, int *size_ret)
398 {
399    E_Ipc_2Str_Int dat;
400 
401    dat.str1 = (char *)str1;
402    dat.str2 = (char *)str2;
403    dat.val = val;
404    return eet_data_descriptor_encode(_e_ipc_2str_int_edd, &dat, size_ret);
405 }
406 
407 E_API int
e_ipc_codec_2str_int_list_dec(char * data,int bytes,Eina_List ** dest)408 e_ipc_codec_2str_int_list_dec(char *data, int bytes, Eina_List **dest)
409 {
410    E_Ipc_List *dat;
411 
412    if (!data) return 0;
413    dat = eet_data_descriptor_decode(_e_ipc_2str_int_list_edd, data, bytes);
414    if (!dat) return 0;
415    if (dest) *dest = dat->list;
416    free(dat);
417    return 1;
418 }
419 
420 E_API void *
e_ipc_codec_2str_int_list_enc(Eina_List * list,int * size_ret)421 e_ipc_codec_2str_int_list_enc(Eina_List *list, int *size_ret)
422 {
423    E_Ipc_List dat;
424    dat.list = list;
425    return eet_data_descriptor_encode(_e_ipc_2str_int_list_edd, &dat, size_ret);
426 }
427 
428 E_API int
e_ipc_codec_4int_2str_dec(char * data,int bytes,E_Ipc_4Int_2Str ** dest)429 e_ipc_codec_4int_2str_dec(char *data, int bytes, E_Ipc_4Int_2Str **dest)
430 {
431    E_Ipc_4Int_2Str *dat;
432 
433    if (!data) return 0;
434    dat = eet_data_descriptor_decode(_e_ipc_4int_2str_edd, data, bytes);
435    if (!dat) return 0;
436    if (dest) *dest = dat;
437    return 1;
438 }
439 
440 E_API void *
e_ipc_codec_4int_2str_enc(int val1,int val2,int val3,int val4,const char * str1,const char * str2,int * size_ret)441 e_ipc_codec_4int_2str_enc(int val1, int val2, int val3, int val4, const char *str1, const char *str2, int *size_ret)
442 {
443    E_Ipc_4Int_2Str dat;
444 
445    dat.val1 = val1;
446    dat.val2 = val2;
447    dat.val3 = val3;
448    dat.val4 = val4;
449    dat.str1 = (char *)str1;
450    dat.str2 = (char *)str2;
451    return eet_data_descriptor_encode(_e_ipc_4int_2str_edd, &dat, size_ret);
452 }
453 
454 E_API int
e_ipc_codec_4int_2str_list_dec(char * data,int bytes,Eina_List ** dest)455 e_ipc_codec_4int_2str_list_dec(char *data, int bytes, Eina_List **dest)
456 {
457    E_Ipc_List *dat;
458 
459    if (!data) return 0;
460    dat = eet_data_descriptor_decode(_e_ipc_4int_2str_list_edd, data, bytes);
461    if (!dat) return 0;
462    if (dest) *dest = dat->list;
463    free(dat);
464    return 1;
465 }
466 
467 E_API void *
e_ipc_codec_4int_2str_list_enc(Eina_List * list,int * size_ret)468 e_ipc_codec_4int_2str_list_enc(Eina_List *list, int *size_ret)
469 {
470    E_Ipc_List dat;
471    dat.list = list;
472    return eet_data_descriptor_encode(_e_ipc_4int_2str_list_edd, &dat, size_ret);
473 }
474 
475 E_API int
e_ipc_codec_5int_2str_dec(char * data,int bytes,E_Ipc_5Int_2Str ** dest)476 e_ipc_codec_5int_2str_dec(char *data, int bytes, E_Ipc_5Int_2Str **dest)
477 {
478    E_Ipc_5Int_2Str *dat;
479 
480    if (!data) return 0;
481    dat = eet_data_descriptor_decode(_e_ipc_5int_2str_edd, data, bytes);
482    if (!dat) return 0;
483    if (dest) *dest = dat;
484    return 1;
485 }
486 
487 E_API void *
e_ipc_codec_5int_2str_enc(int val1,int val2,int val3,int val4,int val5,const char * str1,const char * str2,int * size_ret)488 e_ipc_codec_5int_2str_enc(int val1, int val2, int val3, int val4, int val5, const char *str1, const char *str2, int *size_ret)
489 {
490    E_Ipc_5Int_2Str dat;
491 
492    dat.val1 = val1;
493    dat.val2 = val2;
494    dat.val3 = val3;
495    dat.val4 = val4;
496    dat.val5 = val5;
497    dat.str1 = (char *)str1;
498    dat.str2 = (char *)str2;
499    return eet_data_descriptor_encode(_e_ipc_5int_2str_edd, &dat, size_ret);
500 }
501 
502 E_API int
e_ipc_codec_5int_2str_list_dec(char * data,int bytes,Eina_List ** dest)503 e_ipc_codec_5int_2str_list_dec(char *data, int bytes, Eina_List **dest)
504 {
505    E_Ipc_List *dat;
506 
507    if (!data) return 0;
508    dat = eet_data_descriptor_decode(_e_ipc_5int_2str_list_edd, data, bytes);
509    if (!dat) return 0;
510    if (dest) *dest = dat->list;
511    free(dat);
512    return 1;
513 }
514 
515 E_API void *
e_ipc_codec_5int_2str_list_enc(Eina_List * list,int * size_ret)516 e_ipc_codec_5int_2str_list_enc(Eina_List *list, int *size_ret)
517 {
518    E_Ipc_List dat;
519    dat.list = list;
520    return eet_data_descriptor_encode(_e_ipc_5int_2str_list_edd, &dat, size_ret);
521 }
522 
523 E_API int
e_ipc_codec_3int_4str_dec(char * data,int bytes,E_Ipc_3Int_4Str ** dest)524 e_ipc_codec_3int_4str_dec(char *data, int bytes, E_Ipc_3Int_4Str **dest)
525 {
526    E_Ipc_3Int_4Str *dat;
527 
528    if (!data) return 0;
529    dat = eet_data_descriptor_decode(_e_ipc_3int_4str_edd, data, bytes);
530    if (!dat) return 0;
531    if (dest) *dest = dat;
532    return 1;
533 }
534 
535 E_API void *
e_ipc_codec_3int_4str_enc(int val1,int val2,int val3,const char * str1,const char * str2,const char * str3,const char * str4,int * size_ret)536 e_ipc_codec_3int_4str_enc(int val1, int val2, int val3, const char *str1, const char *str2, const char *str3, const char *str4, int *size_ret)
537 {
538    E_Ipc_3Int_4Str dat;
539 
540    dat.val1 = val1;
541    dat.val2 = val2;
542    dat.val3 = val3;
543    dat.str1 = (char *)str1;
544    dat.str2 = (char *)str2;
545    dat.str3 = (char *)str3;
546    dat.str4 = (char *)str4;
547    return eet_data_descriptor_encode(_e_ipc_3int_4str_edd, &dat, size_ret);
548 }
549 
550 E_API int
e_ipc_codec_3int_4str_list_dec(char * data,int bytes,Eina_List ** dest)551 e_ipc_codec_3int_4str_list_dec(char *data, int bytes, Eina_List **dest)
552 {
553    E_Ipc_List *dat;
554 
555    if (!data) return 0;
556    dat = eet_data_descriptor_decode(_e_ipc_3int_4str_list_edd, data, bytes);
557    if (!dat) return 0;
558    if (dest) *dest = dat->list;
559    free(dat);
560    return 1;
561 }
562 
563 E_API void *
e_ipc_codec_3int_4str_list_enc(Eina_List * list,int * size_ret)564 e_ipc_codec_3int_4str_list_enc(Eina_List *list, int *size_ret)
565 {
566    E_Ipc_List dat;
567    dat.list = list;
568    return eet_data_descriptor_encode(_e_ipc_3int_4str_list_edd, &dat, size_ret);
569 }
570 
571 E_API int
e_ipc_codec_3int_3str_dec(char * data,int bytes,E_Ipc_3Int_3Str ** dest)572 e_ipc_codec_3int_3str_dec(char *data, int bytes, E_Ipc_3Int_3Str **dest)
573 {
574    E_Ipc_3Int_3Str *dat;
575 
576    if (!data) return 0;
577    dat = eet_data_descriptor_decode(_e_ipc_3int_3str_edd, data, bytes);
578    if (!dat) return 0;
579    if (dest) *dest = dat;
580    return 1;
581 }
582 
583 E_API void *
e_ipc_codec_3int_3str_enc(int val1,int val2,int val3,const char * str1,const char * str2,const char * str3,int * size_ret)584 e_ipc_codec_3int_3str_enc(int val1, int val2, int val3, const char *str1, const char *str2, const char *str3, int *size_ret)
585 {
586    E_Ipc_3Int_3Str dat;
587 
588    dat.val1 = val1;
589    dat.val2 = val2;
590    dat.val3 = val3;
591    dat.str1 = (char *)str1;
592    dat.str2 = (char *)str2;
593    dat.str3 = (char *)str3;
594    return eet_data_descriptor_encode(_e_ipc_3int_3str_edd, &dat, size_ret);
595 }
596 
597 E_API int
e_ipc_codec_3int_3str_list_dec(char * data,int bytes,Eina_List ** dest)598 e_ipc_codec_3int_3str_list_dec(char *data, int bytes, Eina_List **dest)
599 {
600    E_Ipc_List *dat;
601 
602    if (!data) return 0;
603    dat = eet_data_descriptor_decode(_e_ipc_3int_3str_list_edd, data, bytes);
604    if (!dat) return 0;
605    if (dest) *dest = dat->list;
606    free(dat);
607    return 1;
608 }
609 
610 E_API void *
e_ipc_codec_3int_3str_list_enc(Eina_List * list,int * size_ret)611 e_ipc_codec_3int_3str_list_enc(Eina_List *list, int *size_ret)
612 {
613    E_Ipc_List dat;
614    dat.list = list;
615    return eet_data_descriptor_encode(_e_ipc_3int_3str_list_edd, &dat, size_ret);
616 }
617 
618 E_API int
e_ipc_codec_str_4int_dec(char * data,int bytes,E_Ipc_Str_4Int ** dest)619 e_ipc_codec_str_4int_dec(char *data, int bytes, E_Ipc_Str_4Int **dest)
620 {
621    E_Ipc_Str_4Int *dat;
622 
623    if (!data) return 0;
624    dat = eet_data_descriptor_decode(_e_ipc_str_4int_edd, data, bytes);
625    if (!dat) return 0;
626    if (dest) *dest = dat;
627    return 1;
628 }
629 
630 E_API void *
e_ipc_codec_str_4int_enc(const char * str1,int val1,int val2,int val3,int val4,int * size_ret)631 e_ipc_codec_str_4int_enc(const char *str1, int val1, int val2, int val3, int val4, int *size_ret)
632 {
633    E_Ipc_Str_4Int dat;
634 
635    dat.str = (char *)str1;
636    dat.val1 = val1;
637    dat.val2 = val2;
638    dat.val3 = val3;
639    dat.val4 = val4;
640 
641    return eet_data_descriptor_encode(_e_ipc_str_4int_edd, &dat, size_ret);
642 }
643 
644 E_API int
e_ipc_codec_str_4int_list_dec(char * data,int bytes,Eina_List ** dest)645 e_ipc_codec_str_4int_list_dec(char *data, int bytes, Eina_List **dest)
646 {
647    E_Ipc_List *dat;
648 
649    if (!data) return 0;
650    dat = eet_data_descriptor_decode(_e_ipc_str_4int_list_edd, data, bytes);
651    if (!dat) return 0;
652    if (dest) *dest = dat->list;
653    free(dat);
654    return 1;
655 }
656 
657 E_API void *
e_ipc_codec_str_4int_list_enc(Eina_List * list,int * size_ret)658 e_ipc_codec_str_4int_list_enc(Eina_List *list, int *size_ret)
659 {
660    E_Ipc_List dat;
661    dat.list = list;
662    return eet_data_descriptor_encode(_e_ipc_str_4int_list_edd, &dat, size_ret);
663 }
664 
665 /* local subsystem globals */
666 
667 #endif
668