Cthulhu  0.2.10
Cthulhu compiler collection
schema.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 #pragma once
3 
4 #include <ctu_schema_api.h>
5 
6 #include <stddef.h>
7 
9 
11 typedef struct schema_type_t schema_type_t;
12 typedef struct schema_layout_t schema_layout_t;
13 
14 typedef enum schema_status_t
15 {
16 #define SCHEMA_STATUS(id, name) id,
17 #include "schema/schema.inc"
18 
21 
22 typedef enum schema_typeof_t
23 {
24 #define SCHEMA_TYPE(id, name) id,
25 #include "schema/schema.inc"
26 
29 
30 typedef struct schema_field_t
31 {
32  const char *name;
34  size_t offset;
36 
37 typedef struct schema_type_t
38 {
40  const char *name;
41 
42  size_t size;
43  size_t align;
44 
45  union {
46  /* eSchemaTypePointer */
48 
49  /* eSchemaTypeArray */
50  struct {
52  size_t count;
53  } array;
54 
55  /* eSchemaTypeStruct */
56  struct {
58  size_t count;
59  } layout;
60  };
62 
#define CT_BEGIN_API
Definition: compiler.h:129
#define CT_END_API
Definition: compiler.h:130
schema_typeof_t
Definition: schema.h:23
@ eSchemaTypeCount
Definition: schema.h:27
typedefCT_BEGIN_API struct schema_field_info_t schema_field_info_t
Definition: schema.h:10
schema_status_t
Definition: schema.h:15
@ eSchemaStatusCount
Definition: schema.h:19
struct schema_layout_t schema_layout_t
Definition: schema.h:12
const char * name
Definition: schema.h:32
const schema_type_t * type
Definition: schema.h:33
size_t offset
Definition: schema.h:34
schema_typeof_t type
Definition: schema.h:39
const schema_type_t * element
Definition: schema.h:51
const char * name
Definition: schema.h:40
size_t size
Definition: schema.h:42
size_t align
Definition: schema.h:43
const schema_field_t * fields
Definition: schema.h:57
size_t count
Definition: schema.h:52
struct schema_type_t::@8::@10 array
const schema_type_t * pointer
Definition: schema.h:47
struct schema_type_t::@8::@11 layout