maug
Quick and dirty C mini-augmentation library.
Loading...
Searching...
No Matches
Serialization/Deserialization API

Tools for serializing memory structures to on-disk formats. More...

Collaboration diagram for Serialization/Deserialization API:

Topics

 Serialize Code Generation Tool
 

Files

file  mserial.h
 Functions and macros related to the serialization/deserialization API.
 

Macros

#define MSERIALIZE_TRACE_LVL   0
 
#define MSERIALIZE_TYPE_OBJECT   1
 Parameter type for mserialize_header() for objects.
 
#define MSERIALIZE_TYPE_STRING   2
 Parameter type for mserialize_header() for character strings.
 
#define MSERIALIZE_TYPE_INTEGER   3
 Parameter type for mserialize_header() for integers.
 
#define MSERIALIZE_TYPE_FLOAT   4
 Parameter type for mserialize_header() for floating-point numbers.
 
#define MSERIALIZE_TYPE_ARRAY   5
 Parameter type for mserialize_header() for arrays.
 
#define MSERIALIZE_TYPE_BLOB   6
 Parameter type for mserialize_header() for opaque binary blobs.
 

Typedefs

typedef MERROR_RETVAL(* mserialize_cb_t) (mfile_t *ser_out, const void *p_ser_val, int array)
 Serialization function for a struct or primative type.
 
typedef MERROR_RETVAL(* mdeserialize_cb_t) (mfile_t *ser_out, void *p_ser_int, int array, ssize_t *p_ser_sz)
 

Functions

MERROR_RETVAL mserialize_int (mfile_t *ser_out, const int32_t value, int array)
 
MERROR_RETVAL mserialize_vector (mfile_t *ser_out, struct MDATA_VECTOR *p_ser_vec, int array, mserialize_cb_t cb)
 
MERROR_RETVAL mserialize_table (mfile_t *ser_out, struct MDATA_TABLE *p_ser_tab, int array, mserialize_cb_t cb)
 
MERROR_RETVAL mserialize_block (mfile_t *ser_out, const void *p_block, size_t block_sz)
 
off_t mserialize_header (mfile_t *ser_out, uint8_t type, uint8_t flags)
 
MERROR_RETVAL mserialize_footer (mfile_t *ser_out, off_t header, uint8_t flags)
 
MERROR_RETVAL mserialize_size_t (mfile_t *ser_out, const size_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_ssize_t (mfile_t *ser_out, const ssize_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_uint8_t (mfile_t *ser_out, const uint8_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_int8_t (mfile_t *ser_out, const int8_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_uint16_t (mfile_t *ser_out, const uint16_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_int16_t (mfile_t *ser_out, const int16_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_uint32_t (mfile_t *ser_out, const uint32_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_int32_t (mfile_t *ser_out, const int32_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_float (mfile_t *ser_out, const float *p_ser_float, int array)
 
MERROR_RETVAL mserialize_mfix_t (mfile_t *ser_out, const mfix_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_char (mfile_t *ser_out, const char *p_ser_char, int array)
 
MERROR_RETVAL mserialize_mdata_strpool_idx_t (mfile_t *ser_out, const mdata_strpool_idx_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_retroflat_asset_path (mfile_t *ser_out, const retroflat_asset_path *p_ser_char, int array)
 
MERROR_RETVAL mserialize_retrotile_coord_t (mfile_t *ser_out, const retrotile_coord_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_retroflat_dir4_t (mfile_t *ser_out, const retroflat_dir4_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_retroflat_ms_t (mfile_t *ser_out, const retroflat_ms_t *p_ser_int, int array)
 
MERROR_RETVAL mserialize_struct_MLISP_ENV_NODE (mfile_t *ser_out, const struct MLISP_ENV_NODE *p_ser_struct, int array)
 
MERROR_RETVAL mserialize_union_MLISP_VAL (mfile_t *ser_out, const union MLISP_VAL *p_ser_val, int array)
 
MERROR_RETVAL mserialize_struct_MDATA_TABLE_KEY (mfile_t *ser_out, const struct MDATA_TABLE_KEY *p_ser_struct, int array)
 
MERROR_RETVAL mdeserialize_header (mfile_t *ser_in, uint8_t *p_type, ssize_t *p_sz, size_t *p_header_sz)
 
MERROR_RETVAL mdeserialize_int (mfile_t *ser_in, int32_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_vector (mfile_t *ser_in, struct MDATA_VECTOR *p_ser_vec, int array, mdeserialize_cb_t cb, uint8_t *buf, size_t buf_sz, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_table (mfile_t *ser_in, struct MDATA_TABLE *p_ser_vec, int array, mdeserialize_cb_t cb, uint8_t *buf, size_t buf_sz, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_size_t (mfile_t *ser_in, size_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_ssize_t (mfile_t *ser_in, ssize_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_uint8_t (mfile_t *ser_in, uint8_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_int8_t (mfile_t *ser_in, int8_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_uint16_t (mfile_t *ser_in, uint16_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_int16_t (mfile_t *ser_in, int16_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_uint32_t (mfile_t *ser_in, uint32_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_int32_t (mfile_t *ser_in, int32_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_float (mfile_t *ser_in, float *p_ser_float, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_mfix_t (mfile_t *ser_in, mfix_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_char (mfile_t *ser_in, char *p_ser_char, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_mdata_strpool_idx_t (mfile_t *ser_in, mdata_strpool_idx_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_retroflat_asset_path (mfile_t *ser_in, retroflat_asset_path *p_ser_char, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_retrotile_coord_t (mfile_t *ser_in, retrotile_coord_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_retroflat_dir4_t (mfile_t *ser_in, retroflat_dir4_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_retroflat_ms_t (mfile_t *ser_in, retroflat_ms_t *p_ser_int, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_struct_MLISP_ENV_NODE (mfile_t *ser_in, struct MLISP_ENV_NODE *p_ser_struct, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_union_MLISP_VAL (mfile_t *ser_in, union MLISP_VAL *p_ser_val, int array, ssize_t *p_ser_sz)
 
MERROR_RETVAL mdeserialize_struct_MDATA_TABLE_KEY (mfile_t *ser_in, struct MDATA_TABLE_KEY *p_ser_struct, int array, ssize_t *p_ser_sz)
 

Detailed Description

Tools for serializing memory structures to on-disk formats.

Typedef Documentation

◆ mserialize_cb_t

typedef MERROR_RETVAL(* mserialize_cb_t) (mfile_t *ser_out, const void *p_ser_val, int array)

Serialization function for a struct or primative type.

Parameters
ser_outFile object to write serialized struct to.
p_ser_valPointer to the struct to serialize.
arrayNumber of items in the array to serialize.

Code that calls this kind of function generally knows what specific struct it's serializing, as it's called recursively to handle fields that are e.g. pre-defined as arrays.

Warning
Code in callbacks tethered in through Serialize Tool Custom Types should refrain from writing directly to ser_out, unless they are written with a specific format in mind and that format is sure to be the only format linked. They should instead call other mserialize_/mdeserialize_ callbacks defined by the format-specific API!

Function Documentation

◆ mdeserialize_header()

MERROR_RETVAL mdeserialize_header ( mfile_t * ser_in,
uint8_t * p_type,
ssize_t * p_sz,
size_t * p_header_sz )
Parameters
p_szPointer to where to store the size of the received value.
p_header_szPointer to where to store the size of the header, itself.

◆ mserialize_table()

MERROR_RETVAL mserialize_table ( mfile_t * ser_out,
struct MDATA_TABLE * p_ser_tab,
int array,
mserialize_cb_t cb )
Note
We can't accept struct MDATA_TABLE* as const because we have to lock it!

◆ mserialize_vector()

MERROR_RETVAL mserialize_vector ( mfile_t * ser_out,
struct MDATA_VECTOR * p_ser_vec,
int array,
mserialize_cb_t cb )
Note
We can't accept struct MDATA_VECTOR* as const because we have to lock it!