2#define REDUCT_SCHEMA_H 1
26typedef enum reduct_schema_type
41typedef struct reduct_schema
55typedef struct reduct_schema_internal
65#define REDUCT_SCHEMA_INDEX_NONE ((reduct_schema_index_t) - 1)
154#define REDUCT_SCHEMA_FIELD(_key, _struct, _member, _type) \
155 (reduct_schema_t){(_key), offsetof(_struct, _member), sizeof(((_struct*)0)->_member), REDUCT_SCHEMA_TYPE_##_type, \
167#define REDUCT_SCHEMA_FIELD_ARRAY(_key, _struct, _member, _subtype) \
170 (_key), offsetof(_struct, _member), sizeof(((_struct*)0)->_member), REDUCT_SCHEMA_TYPE_ARRAY, \
171 REDUCT_SCHEMA_TYPE_##_subtype, sizeof(((_struct*)0)->_member[0]) \
REDUCT_API reduct_schema_id_t reduct_schema_new(struct reduct *reduct, size_t count,...)
Create a new schema.
REDUCT_API void reduct_schema_global_deinit(reduct_schema_global_t *global)
Deinitialize a global schema state.
REDUCT_API void reduct_schema_apply(struct reduct *reduct, reduct_schema_id_t id, reduct_handle_t listH, void *out)
Apply a schema to an association list and populate a C structure.
REDUCT_API void reduct_schema_global_init(reduct_schema_global_t *global)
Initialize a global schema state.
REDUCT_API size_t reduct_schema_get_count(struct reduct *reduct, reduct_schema_id_t id)
Get the number of fields in a schema.
REDUCT_API reduct_handle_t reduct_schema_serialize(struct reduct *reduct, reduct_schema_id_t id, const void *in)
Transform a C structure into an association list using a schema.
uint32_t reduct_schema_index_t
Schema index type.
REDUCT_API reduct_schema_id_t reduct_schema_new_fields(struct reduct *reduct, size_t count, const reduct_schema_t *fields)
Create a new schema from an array of fields.
uint32_t reduct_schema_id_t
Schema ID type.
reduct_schema_type_t
Schema type flags.
@ REDUCT_SCHEMA_TYPE_HANDLE
A reduct_handle_t.
@ REDUCT_SCHEMA_TYPE_INT
Signed integer.
@ REDUCT_SCHEMA_TYPE_BOOL
A bool.
@ REDUCT_SCHEMA_TYPE_ARRAY
A fixed-size array of primitives.
@ REDUCT_SCHEMA_TYPE_FLOAT
Float or double.
@ REDUCT_SCHEMA_TYPE_STRING
An array of characters.
@ REDUCT_SCHEMA_TYPE_UINT
Unsigned integer.
Read-Write Mutex structure.
Global schema-related state structure.
struct reduct_schema_internal ** schemas
Internal schema structure.
reduct_schema_type_t type
reduct_schema_type_t subtype
Syncronization primitives.