Flecs v4.0
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
json.h
Go to the documentation of this file.
1
11#ifdef FLECS_JSON
12
13#ifndef FLECS_META
14#define FLECS_META
15#endif
16
17#ifndef FLECS_DOC
18#define FLECS_DOC
19#endif
20
21#ifndef FLECS_QUERY_DSL
22#define FLECS_QUERY_DSL /* For parsing component id expressions */
23#endif
24
25#ifndef FLECS_JSON_H
26#define FLECS_JSON_H
27
36#ifdef __cplusplus
37extern "C" {
38#endif
39
41typedef struct ecs_from_json_desc_t {
42 const char *name;
43 const char *expr;
48 const ecs_world_t*,
49 const char *value,
50 void *ctx);
51 void *lookup_ctx;
52
55 bool strict;
57
69FLECS_API
71 const ecs_world_t *world,
72 ecs_entity_t type,
73 void *ptr,
74 const char *json,
75 const ecs_from_json_desc_t *desc);
76
87FLECS_API
89 ecs_world_t *world,
90 ecs_entity_t entity,
91 const char *json,
92 const ecs_from_json_desc_t *desc);
93
102FLECS_API
104 ecs_world_t *world,
105 const char *json,
106 const ecs_from_json_desc_t *desc);
107
115FLECS_API
117 ecs_world_t *world,
118 const char *filename,
119 const ecs_from_json_desc_t *desc);
120
135FLECS_API
137 const ecs_world_t *world,
138 ecs_entity_t type,
139 const void *data,
140 int32_t count);
141
152FLECS_API
154 const ecs_world_t *world,
155 ecs_entity_t type,
156 const void *data,
157 int32_t count,
158 ecs_strbuf_t *buf_out);
159
168FLECS_API
170 const ecs_world_t *world,
171 ecs_entity_t type,
172 const void *data);
173
183FLECS_API
185 const ecs_world_t *world,
186 ecs_entity_t type,
187 const void *data,
188 ecs_strbuf_t *buf_out);
189
200FLECS_API
202 const ecs_world_t *world,
203 ecs_entity_t type);
204
213FLECS_API
215 const ecs_world_t *world,
216 ecs_entity_t type,
217 ecs_strbuf_t *buf_out);
218
232
234#ifndef __cplusplus
235#define ECS_ENTITY_TO_JSON_INIT (ecs_entity_to_json_desc_t){\
236 .serialize_entity_id = false, \
237 .serialize_doc = false, \
238 .serialize_full_paths = true, \
239 .serialize_inherited = false, \
240 .serialize_values = true, \
241 .serialize_builtin = false, \
242 .serialize_type_info = false, \
243 .serialize_alerts = false, \
244 .serialize_refs = 0, \
245 .serialize_matches = false, \
246}
247#else
248#define ECS_ENTITY_TO_JSON_INIT {\
249 false, \
250 false, \
251 true, \
252 false, \
253 true, \
254 false, \
255 false, \
256 false, \
257 0, \
258 false, \
259}
260#endif
261
272FLECS_API
274 const ecs_world_t *world,
275 ecs_entity_t entity,
276 const ecs_entity_to_json_desc_t *desc);
277
286FLECS_API
288 const ecs_world_t *world,
289 ecs_entity_t entity,
290 ecs_strbuf_t *buf_out,
291 const ecs_entity_to_json_desc_t *desc);
292
314
316#ifndef __cplusplus
317#define ECS_ITER_TO_JSON_INIT (ecs_iter_to_json_desc_t){\
318 .serialize_entity_ids = false, \
319 .serialize_values = true, \
320 .serialize_builtin = false, \
321 .serialize_doc = false, \
322 .serialize_full_paths = true, \
323 .serialize_fields = true, \
324 .serialize_inherited = false, \
325 .serialize_table = false, \
326 .serialize_type_info = false, \
327 .serialize_field_info = false, \
328 .serialize_query_info = false, \
329 .serialize_query_plan = false, \
330 .serialize_query_profile = false, \
331 .dont_serialize_results = false, \
332 .serialize_alerts = false, \
333 .serialize_refs = false, \
334 .serialize_matches = false, \
335 .query = NULL \
336}
337#else
338#define ECS_ITER_TO_JSON_INIT {\
339 false, \
340 true, \
341 false, \
342 false, \
343 true, \
344 true, \
345 false, \
346 false, \
347 false, \
348 false, \
349 false, \
350 false, \
351 false, \
352 false, \
353 false, \
354 false, \
355 false, \
356 nullptr \
357}
358#endif
359
367FLECS_API
369 ecs_iter_t *iter,
370 const ecs_iter_to_json_desc_t *desc);
371
379FLECS_API
381 ecs_iter_t *iter,
382 ecs_strbuf_t *buf_out,
383 const ecs_iter_to_json_desc_t *desc);
384
390
408FLECS_API
410 ecs_world_t *world,
411 const ecs_world_to_json_desc_t *desc);
412
420FLECS_API
422 ecs_world_t *world,
423 ecs_strbuf_t *buf_out,
424 const ecs_world_to_json_desc_t *desc);
425
426#ifdef __cplusplus
427}
428#endif
429
430#endif
431
434#endif
FLECS_API const char * ecs_entity_from_json(ecs_world_t *world, ecs_entity_t entity, const char *json, const ecs_from_json_desc_t *desc)
Parse JSON object with multiple component values into entity.
struct ecs_entity_to_json_desc_t ecs_entity_to_json_desc_t
Used with ecs_iter_to_json().
FLECS_API const char * ecs_world_from_json(ecs_world_t *world, const char *json, const ecs_from_json_desc_t *desc)
Parse JSON object with multiple entities into the world.
struct ecs_from_json_desc_t ecs_from_json_desc_t
Used with ecs_ptr_from_json(), ecs_entity_from_json().
FLECS_API int ecs_type_info_to_json_buf(const ecs_world_t *world, ecs_entity_t type, ecs_strbuf_t *buf_out)
Serialize type info into JSON string buffer.
FLECS_API int ecs_iter_to_json_buf(ecs_iter_t *iter, ecs_strbuf_t *buf_out, const ecs_iter_to_json_desc_t *desc)
Serialize iterator into JSON string buffer.
struct ecs_world_to_json_desc_t ecs_world_to_json_desc_t
Used with ecs_iter_to_json().
FLECS_API int ecs_ptr_to_json_buf(const ecs_world_t *world, ecs_entity_t type, const void *data, ecs_strbuf_t *buf_out)
Serialize value into JSON string buffer.
struct ecs_iter_to_json_desc_t ecs_iter_to_json_desc_t
Used with ecs_iter_to_json().
FLECS_API const char * ecs_world_from_json_file(ecs_world_t *world, const char *filename, const ecs_from_json_desc_t *desc)
Same as ecs_world_from_json(), but loads JSON from file.
FLECS_API char * ecs_entity_to_json(const ecs_world_t *world, ecs_entity_t entity, const ecs_entity_to_json_desc_t *desc)
Serialize entity into JSON string.
FLECS_API char * ecs_ptr_to_json(const ecs_world_t *world, ecs_entity_t type, const void *data)
Serialize value into JSON string.
FLECS_API char * ecs_type_info_to_json(const ecs_world_t *world, ecs_entity_t type)
Serialize type info to JSON.
FLECS_API int ecs_world_to_json_buf(ecs_world_t *world, ecs_strbuf_t *buf_out, const ecs_world_to_json_desc_t *desc)
Serialize world into JSON string buffer.
FLECS_API char * ecs_world_to_json(ecs_world_t *world, const ecs_world_to_json_desc_t *desc)
Serialize world into JSON string.
FLECS_API char * ecs_iter_to_json(ecs_iter_t *iter, const ecs_iter_to_json_desc_t *desc)
Serialize iterator into JSON string.
FLECS_API const char * ecs_ptr_from_json(const ecs_world_t *world, ecs_entity_t type, void *ptr, const char *json, const ecs_from_json_desc_t *desc)
Parse JSON string into value.
FLECS_API int ecs_array_to_json_buf(const ecs_world_t *world, ecs_entity_t type, const void *data, int32_t count, ecs_strbuf_t *buf_out)
Serialize array into JSON string buffer.
FLECS_API char * ecs_array_to_json(const ecs_world_t *world, ecs_entity_t type, const void *data, int32_t count)
Serialize array into JSON string.
FLECS_API int ecs_entity_to_json_buf(const ecs_world_t *world, ecs_entity_t entity, ecs_strbuf_t *buf_out, const ecs_entity_to_json_desc_t *desc)
Serialize entity into JSON string buffer.
ecs_id_t ecs_entity_t
An entity identifier.
Definition flecs.h:375
struct ecs_world_t ecs_world_t
A world is the container for all ECS data and supporting features.
Definition flecs.h:419
void ecs_poly_t
A poly object.
Definition flecs.h:508
Used with ecs_iter_to_json().
Definition json.h:220
bool serialize_values
Serialize component values.
Definition json.h:225
bool serialize_builtin
Serialize builtin data as components (e.g.
Definition json.h:226
bool serialize_alerts
Serialize active alerts for entity.
Definition json.h:228
ecs_entity_t serialize_refs
Serialize references (incoming edges) for relationship.
Definition json.h:229
bool serialize_matches
Serialize which queries entity matches with.
Definition json.h:230
bool serialize_type_info
Serialize type info (requires serialize_values)
Definition json.h:227
bool serialize_inherited
Serialize base components.
Definition json.h:224
bool serialize_full_paths
Serialize full paths for tags, components and pairs.
Definition json.h:223
bool serialize_entity_id
Serialize entity id.
Definition json.h:221
bool serialize_doc
Serialize doc attributes.
Definition json.h:222
Used with ecs_ptr_from_json(), ecs_entity_from_json().
Definition json.h:41
const char * name
Name of expression (used for logging)
Definition json.h:42
ecs_entity_t(* lookup_action)(const ecs_world_t *, const char *value, void *ctx)
Callback that allows for specifying a custom lookup function.
Definition json.h:47
const char * expr
Full expression (used for logging)
Definition json.h:43
bool strict
Require components to be registered with reflection data.
Definition json.h:55
Iterator.
Definition flecs.h:1128
Used with ecs_iter_to_json().
Definition json.h:294
bool serialize_full_paths
Serialize full paths for tags, components and pairs.
Definition json.h:299
bool serialize_query_plan
Serialize query plan.
Definition json.h:306
bool serialize_fields
Serialize field data.
Definition json.h:300
bool serialize_doc
Serialize doc attributes.
Definition json.h:298
bool serialize_query_profile
Profile query performance.
Definition json.h:307
bool serialize_query_info
Serialize query terms.
Definition json.h:305
bool dont_serialize_results
If true, query won't be evaluated.
Definition json.h:308
bool serialize_field_info
Serialize metadata for fields returned by query.
Definition json.h:304
bool serialize_builtin
Serialize builtin data as components (e.g.
Definition json.h:297
bool serialize_table
Serialize entire table vs.
Definition json.h:302
ecs_entity_t serialize_refs
Serialize references (incoming edges) for relationship.
Definition json.h:310
bool serialize_inherited
Serialize inherited components.
Definition json.h:301
ecs_poly_t * query
Query object (required for serialize_query_[plan|profile]).
Definition json.h:312
bool serialize_alerts
Serialize active alerts for entity.
Definition json.h:309
bool serialize_values
Serialize component values.
Definition json.h:296
bool serialize_type_info
Serialize type information.
Definition json.h:303
bool serialize_entity_ids
Serialize entity ids.
Definition json.h:295
bool serialize_matches
Serialize which queries entity matches with.
Definition json.h:311
Used with ecs_iter_to_json().
Definition json.h:386
bool serialize_builtin
Exclude flecs modules & contents.
Definition json.h:387
bool serialize_modules
Exclude modules & contents.
Definition json.h:388