maug
Quick and dirty C mini-augmentation library.
Loading...
Searching...
No Matches
mserial.h
Go to the documentation of this file.
1
2#ifndef MSERIAL_H
3#define MSERIAL_H
4
12
49
50#ifndef MSERIALIZE_TRACE_LVL
51# define MSERIALIZE_TRACE_LVL 0
52#endif /* !MSERIALIZE_TRACE_LVL */
53
54#include "mrapiser.h"
55
57#define MSERIALIZE_TYPE_OBJECT 1
59#define MSERIALIZE_TYPE_STRING 2
61#define MSERIALIZE_TYPE_INTEGER 3
63#define MSERIALIZE_TYPE_FLOAT 4
65#define MSERIALIZE_TYPE_ARRAY 5
67#define MSERIALIZE_TYPE_BLOB 6
68
87 mfile_t* ser_out, const void* p_ser_val, int array );
88
89typedef MERROR_RETVAL (*mdeserialize_cb_t)(
90 mfile_t* ser_out, void* p_ser_int, int array, ssize_t* p_ser_sz );
91
92MERROR_RETVAL mserialize_int(
93 mfile_t* ser_out, const int32_t value, int array );
94
100 mfile_t* ser_out, struct MDATA_VECTOR* p_ser_vec, int array,
101 mserialize_cb_t cb );
102
108 mfile_t* ser_out, struct MDATA_TABLE* p_ser_tab, int array,
109 mserialize_cb_t cb );
110
111MERROR_RETVAL mserialize_block(
112 mfile_t* ser_out, const void* p_block, size_t block_sz );
113
114off_t mserialize_header( mfile_t* ser_out, uint8_t type, uint8_t flags );
115
116MERROR_RETVAL mserialize_footer(
117 mfile_t* ser_out, off_t header, uint8_t flags );
118
119MERROR_RETVAL mserialize_size_t(
120 mfile_t* ser_out, const size_t* p_ser_int, int array );
121
122MERROR_RETVAL mserialize_ssize_t(
123 mfile_t* ser_out, const ssize_t* p_ser_int, int array );
124
125MERROR_RETVAL mserialize_uint8_t(
126 mfile_t* ser_out, const uint8_t* p_ser_int, int array );
127
128MERROR_RETVAL mserialize_int8_t(
129 mfile_t* ser_out, const int8_t* p_ser_int, int array );
130
131MERROR_RETVAL mserialize_uint16_t(
132 mfile_t* ser_out, const uint16_t* p_ser_int, int array );
133
134MERROR_RETVAL mserialize_int16_t(
135 mfile_t* ser_out, const int16_t* p_ser_int, int array );
136
137MERROR_RETVAL mserialize_uint32_t(
138 mfile_t* ser_out, const uint32_t* p_ser_int, int array );
139
140MERROR_RETVAL mserialize_int32_t(
141 mfile_t* ser_out, const int32_t* p_ser_int, int array );
142
143MERROR_RETVAL mserialize_float(
144 mfile_t* ser_out, const float* p_ser_float, int array );
145
146MERROR_RETVAL mserialize_mfix_t(
147 mfile_t* ser_out, const mfix_t* p_ser_int, int array );
148
149MERROR_RETVAL mserialize_char(
150 mfile_t* ser_out, const char* p_ser_char, int array );
151
152MERROR_RETVAL mserialize_mdata_strpool_idx_t(
153 mfile_t* ser_out, const mdata_strpool_idx_t* p_ser_int, int array );
154
155#ifndef MAUG_NO_RETRO
156
157MERROR_RETVAL mserialize_retroflat_asset_path(
158 mfile_t* ser_out, const retroflat_asset_path* p_ser_char, int array );
159
160MERROR_RETVAL mserialize_retrotile_coord_t(
161 mfile_t* ser_out, const retrotile_coord_t* p_ser_int, int array );
162
163MERROR_RETVAL mserialize_retroflat_dir4_t(
164 mfile_t* ser_out, const retroflat_dir4_t* p_ser_int, int array );
165
166MERROR_RETVAL mserialize_retroflat_ms_t(
167 mfile_t* ser_out, const retroflat_ms_t* p_ser_int, int array );
168
169#endif /* !MAUG_NO_RETRO */
170
171MERROR_RETVAL mserialize_struct_MLISP_ENV_NODE(
172 mfile_t* ser_out, const struct MLISP_ENV_NODE* p_ser_struct, int array );
173
174MERROR_RETVAL mserialize_union_MLISP_VAL(
175 mfile_t* ser_out, const union MLISP_VAL* p_ser_val, int array );
176
177MERROR_RETVAL mserialize_struct_MDATA_TABLE_KEY(
178 mfile_t* ser_out, const struct MDATA_TABLE_KEY* p_ser_struct, int array );
179
180/* === */
181
187 mfile_t* ser_in, uint8_t* p_type, ssize_t* p_sz, size_t* p_header_sz );
188
189MERROR_RETVAL mdeserialize_int(
190 mfile_t* ser_in, int32_t* p_ser_int, int array, ssize_t* p_ser_sz );
191
192MERROR_RETVAL mdeserialize_vector(
193 mfile_t* ser_in, struct MDATA_VECTOR* p_ser_vec, int array,
194 mdeserialize_cb_t cb, uint8_t* buf, size_t buf_sz, ssize_t* p_ser_sz );
195
196MERROR_RETVAL mdeserialize_table(
197 mfile_t* ser_in, struct MDATA_TABLE* p_ser_vec, int array,
198 mdeserialize_cb_t cb, uint8_t* buf, size_t buf_sz, ssize_t* p_ser_sz );
199
200MERROR_RETVAL mdeserialize_size_t(
201 mfile_t* ser_in, size_t* p_ser_int, int array, ssize_t* p_ser_sz );
202
203MERROR_RETVAL mdeserialize_ssize_t(
204 mfile_t* ser_in, ssize_t* p_ser_int, int array, ssize_t* p_ser_sz );
205
206MERROR_RETVAL mdeserialize_uint8_t(
207 mfile_t* ser_in, uint8_t* p_ser_int, int array, ssize_t* p_ser_sz );
208
209MERROR_RETVAL mdeserialize_int8_t(
210 mfile_t* ser_in, int8_t* p_ser_int, int array, ssize_t* p_ser_sz );
211
212MERROR_RETVAL mdeserialize_uint16_t(
213 mfile_t* ser_in, uint16_t* p_ser_int, int array, ssize_t* p_ser_sz );
214
215MERROR_RETVAL mdeserialize_int16_t(
216 mfile_t* ser_in, int16_t* p_ser_int, int array, ssize_t* p_ser_sz );
217
218MERROR_RETVAL mdeserialize_uint32_t(
219 mfile_t* ser_in, uint32_t* p_ser_int, int array, ssize_t* p_ser_sz );
220
221MERROR_RETVAL mdeserialize_int32_t(
222 mfile_t* ser_in, int32_t* p_ser_int, int array, ssize_t* p_ser_sz );
223
224MERROR_RETVAL mdeserialize_float(
225 mfile_t* ser_in, float* p_ser_float, int array, ssize_t* p_ser_sz );
226
227MERROR_RETVAL mdeserialize_mfix_t(
228 mfile_t* ser_in, mfix_t* p_ser_int, int array, ssize_t* p_ser_sz );
229
230MERROR_RETVAL mdeserialize_char(
231 mfile_t* ser_in, char* p_ser_char, int array, ssize_t* p_ser_sz );
232
233MERROR_RETVAL mdeserialize_mdata_strpool_idx_t(
234 mfile_t* ser_in, mdata_strpool_idx_t* p_ser_int, int array, ssize_t* p_ser_sz );
235
236#ifndef MAUG_NO_RETRO
237
238MERROR_RETVAL mdeserialize_retroflat_asset_path(
239 mfile_t* ser_in, retroflat_asset_path* p_ser_char, int array, ssize_t* p_ser_sz );
240
241MERROR_RETVAL mdeserialize_retrotile_coord_t(
242 mfile_t* ser_in, retrotile_coord_t* p_ser_int, int array, ssize_t* p_ser_sz );
243
244MERROR_RETVAL mdeserialize_retroflat_dir4_t(
245 mfile_t* ser_in, retroflat_dir4_t* p_ser_int, int array, ssize_t* p_ser_sz );
246
247MERROR_RETVAL mdeserialize_retroflat_ms_t(
248 mfile_t* ser_in, retroflat_ms_t* p_ser_int, int array, ssize_t* p_ser_sz );
249
250#endif /* !MAUG_NO_RETRO */
251
252MERROR_RETVAL mdeserialize_struct_MLISP_ENV_NODE(
253 mfile_t* ser_in, struct MLISP_ENV_NODE* p_ser_struct, int array, ssize_t* p_ser_sz );
254
255MERROR_RETVAL mdeserialize_union_MLISP_VAL(
256 mfile_t* ser_in, union MLISP_VAL* p_ser_val, int array, ssize_t* p_ser_sz );
257
258MERROR_RETVAL mdeserialize_struct_MDATA_TABLE_KEY(
259 mfile_t* ser_in, struct MDATA_TABLE_KEY* p_ser_struct, int array,
260 ssize_t* p_ser_sz );
261
262#include "mrapiser.h"
263
264#ifdef MSERIAL_C
265
266MERROR_RETVAL mserialize_size_t(
267 mfile_t* ser_out, const size_t* p_ser_int, int array
268) {
269 return mserialize_int( ser_out, *p_ser_int, array );
270}
271
272MERROR_RETVAL mserialize_ssize_t(
273 mfile_t* ser_out, const ssize_t* p_ser_int, int array
274) {
275 return mserialize_int( ser_out, *p_ser_int, array );
276}
277
278MERROR_RETVAL mserialize_uint8_t(
279 mfile_t* ser_out, const uint8_t* p_ser_int, int array
280) {
281 return mserialize_int( ser_out, *p_ser_int, array );
282}
283
284MERROR_RETVAL mserialize_int8_t(
285 mfile_t* ser_out, const int8_t* p_ser_int, int array
286) {
287 return mserialize_int( ser_out, *p_ser_int, array );
288}
289
290MERROR_RETVAL mserialize_uint16_t(
291 mfile_t* ser_out, const uint16_t* p_ser_int, int array
292) {
293 return mserialize_int( ser_out, *p_ser_int, array );
294}
295
296MERROR_RETVAL mserialize_int16_t(
297 mfile_t* ser_out, const int16_t* p_ser_int, int array
298) {
299 return mserialize_int( ser_out, *p_ser_int, array );
300}
301
302MERROR_RETVAL mserialize_uint32_t(
303 mfile_t* ser_out, const uint32_t* p_ser_int, int array
304) {
305 return mserialize_int( ser_out, *p_ser_int, array );
306}
307
308MERROR_RETVAL mserialize_int32_t(
309 mfile_t* ser_out, const int32_t* p_ser_int, int array
310) {
311 return mserialize_int( ser_out, *p_ser_int, array );
312}
313
314MERROR_RETVAL mserialize_mfix_t(
315 mfile_t* ser_out, const mfix_t* p_ser_int, int array
316) {
317 return mserialize_int( ser_out, *p_ser_int, array );
318}
319
320#ifndef MAUG_NO_RETRO
321
322MERROR_RETVAL mserialize_retrotile_coord_t(
323 mfile_t* ser_out, const retrotile_coord_t* p_ser_int, int array
324) {
325 return mserialize_int( ser_out, *p_ser_int, array );
326}
327
328MERROR_RETVAL mserialize_retroflat_dir4_t(
329 mfile_t* ser_out, const retroflat_dir4_t* p_ser_int, int array
330) {
331 return mserialize_int( ser_out, *p_ser_int, array );
332}
333
334MERROR_RETVAL mserialize_retroflat_ms_t(
335 mfile_t* ser_out, const retroflat_ms_t* p_ser_int, int array
336) {
337 return mserialize_int( ser_out, *p_ser_int, array );
338}
339
340#endif /* !MAUG_NO_RETRO */
341
342MERROR_RETVAL mserialize_mdata_strpool_idx_t (
343 mfile_t* ser_out, const mdata_strpool_idx_t* p_ser_int, int array
344) {
345 return mserialize_int( ser_out, *p_ser_int, array );
346}
347
348/* === */
349
350MERROR_RETVAL mdeserialize_size_t(
351 mfile_t* ser_out, size_t* p_ser_int, int array, ssize_t* p_ser_sz
352) {
353 MERROR_RETVAL retval = MERROR_OK;
354 int32_t value = 0;
355 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
356 maug_cleanup_if_not_ok();
357 *p_ser_int = value;
358cleanup:
359 return retval;
360}
361
362MERROR_RETVAL mdeserialize_ssize_t(
363 mfile_t* ser_out, ssize_t* p_ser_int, int array, ssize_t* p_ser_sz
364) {
365 MERROR_RETVAL retval = MERROR_OK;
366 int32_t value = 0;
367 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
368 maug_cleanup_if_not_ok();
369 *p_ser_int = value;
370cleanup:
371 return retval;
372}
373
374MERROR_RETVAL mdeserialize_uint8_t(
375 mfile_t* ser_out, uint8_t* p_ser_int, int array, ssize_t* p_ser_sz
376) {
377 MERROR_RETVAL retval = MERROR_OK;
378 int32_t value = 0;
379 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
380 maug_cleanup_if_not_ok();
381 *p_ser_int = value;
382cleanup:
383 return retval;
384}
385
386MERROR_RETVAL mdeserialize_int8_t(
387 mfile_t* ser_out, int8_t* p_ser_int, int array, ssize_t* p_ser_sz
388) {
389 MERROR_RETVAL retval = MERROR_OK;
390 int32_t value = 0;
391 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
392 maug_cleanup_if_not_ok();
393 *p_ser_int = value;
394cleanup:
395 return retval;
396}
397
398MERROR_RETVAL mdeserialize_uint16_t(
399 mfile_t* ser_out, uint16_t* p_ser_int, int array, ssize_t* p_ser_sz
400) {
401 MERROR_RETVAL retval = MERROR_OK;
402 int32_t value = 0;
403 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
404 maug_cleanup_if_not_ok();
405 *p_ser_int = value;
406cleanup:
407 return retval;
408}
409
410MERROR_RETVAL mdeserialize_int16_t(
411 mfile_t* ser_out, int16_t* p_ser_int, int array, ssize_t* p_ser_sz
412) {
413 MERROR_RETVAL retval = MERROR_OK;
414 int32_t value = 0;
415 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
416 maug_cleanup_if_not_ok();
417 *p_ser_int = value;
418cleanup:
419 return retval;
420}
421
422MERROR_RETVAL mdeserialize_uint32_t(
423 mfile_t* ser_out, uint32_t* p_ser_int, int array, ssize_t* p_ser_sz
424) {
425 MERROR_RETVAL retval = MERROR_OK;
426 int32_t value = 0;
427 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
428 maug_cleanup_if_not_ok();
429 *p_ser_int = value;
430cleanup:
431 return retval;
432}
433
434MERROR_RETVAL mdeserialize_int32_t(
435 mfile_t* ser_out, int32_t* p_ser_int, int array, ssize_t* p_ser_sz
436) {
437 MERROR_RETVAL retval = MERROR_OK;
438 int32_t value = 0;
439 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
440 maug_cleanup_if_not_ok();
441 *p_ser_int = value;
442cleanup:
443 return retval;
444}
445
446MERROR_RETVAL mdeserialize_mfix_t(
447 mfile_t* ser_out, mfix_t* p_ser_int, int array, ssize_t* p_ser_sz
448) {
449 MERROR_RETVAL retval = MERROR_OK;
450 int32_t value = 0;
451 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
452 maug_cleanup_if_not_ok();
453 *p_ser_int = value;
454cleanup:
455 return retval;
456}
457
458MERROR_RETVAL mdeserialize_mdata_strpool_idx_t(
459 mfile_t* ser_out, mdata_strpool_idx_t* p_ser_int, int array, ssize_t* p_ser_sz
460) {
461 MERROR_RETVAL retval = MERROR_OK;
462 int32_t value = 0;
463 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
464 maug_cleanup_if_not_ok();
465 *p_ser_int = value;
466cleanup:
467 return retval;
468}
469
470#ifndef MAUG_NO_RETRO
471
472MERROR_RETVAL mdeserialize_retrotile_coord_t(
473 mfile_t* ser_out, retrotile_coord_t* p_ser_int, int array, ssize_t* p_ser_sz
474) {
475 MERROR_RETVAL retval = MERROR_OK;
476 int32_t value = 0;
477 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
478 maug_cleanup_if_not_ok();
479 *p_ser_int = value;
480cleanup:
481 return retval;
482}
483
484MERROR_RETVAL mdeserialize_retroflat_dir4_t(
485 mfile_t* ser_out, retroflat_dir4_t* p_ser_int, int array, ssize_t* p_ser_sz
486) {
487 MERROR_RETVAL retval = MERROR_OK;
488 int32_t value = 0;
489 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
490 maug_cleanup_if_not_ok();
491 *p_ser_int = value;
492cleanup:
493 return retval;
494}
495
496MERROR_RETVAL mdeserialize_retroflat_ms_t(
497 mfile_t* ser_out, retroflat_ms_t* p_ser_int, int array, ssize_t* p_ser_sz
498) {
499 MERROR_RETVAL retval = MERROR_OK;
500 int32_t value = 0;
501 retval = mdeserialize_int( ser_out, &value, array, p_ser_sz );
502 maug_cleanup_if_not_ok();
503 *p_ser_int = value;
504cleanup:
505 return retval;
506}
507
508#endif /* !MAUG_NO_RETRO */
509
510#endif /* MSERIAL_C */
511 /* maug_serial */
513
514#endif /* !MSERIAL_H */
515
uint16_t MERROR_RETVAL
Return type indicating function returns a value from this list.
Definition merror.h:19
char retroflat_asset_path[MAUG_PATH_SZ_MAX+1]
Path/name used to load an asset from disk.
Definition mfile.h:129
MERROR_RETVAL mserialize_table(mfile_t *ser_out, struct MDATA_TABLE *p_ser_tab, int array, mserialize_cb_t cb)
MERROR_RETVAL(* mserialize_cb_t)(mfile_t *ser_out, const void *p_ser_val, int array)
Serialization function for a struct or primative type.
Definition mserial.h:86
MERROR_RETVAL mserialize_vector(mfile_t *ser_out, struct MDATA_VECTOR *p_ser_vec, int array, mserialize_cb_t cb)
MERROR_RETVAL mdeserialize_header(mfile_t *ser_in, uint8_t *p_type, ssize_t *p_sz, size_t *p_header_sz)
Definition mdata.h:121
Definition mdata.h:127
A vector of uniformly-sized objects, stored contiguously.
Definition mdata.h:93
Definition mlisps.h:107
Definition mlisps.h:103