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