6#ifdef FLECS_SCRIPT_ASYNC
20#ifndef FLECS_SCRIPT_ASYNC_H
21#define FLECS_SCRIPT_ASYNC_H
36typedef struct ecs_script_future_t ecs_script_future_t;
44typedef struct ecs_script_task_t ecs_script_task_t;
52typedef void(*ecs_async_function_callback_t)(
56 ecs_script_future_t *future);
63typedef void(*ecs_async_function_cancel_t)(
65 ecs_script_future_t *future);
84typedef struct EcsScriptTask {
89typedef enum ecs_script_task_status_t {
93 EcsScriptTaskCancelled
94} ecs_script_task_status_t;
97typedef enum ecs_script_task_loop_t {
98 EcsScriptTaskLoopOnce,
99 EcsScriptTaskLoopCount,
100 EcsScriptTaskLoopForever
101} ecs_script_task_loop_t;
104typedef struct ecs_script_task_desc_t {
112 ecs_script_task_loop_t loop;
115} ecs_script_task_desc_t;
131ecs_script_task_t* ecs_script_task_new(
133 const ecs_script_task_desc_t *desc);
156ecs_script_task_status_t ecs_script_task_resume(
157 ecs_script_task_t *task,
171bool ecs_script_task_is_ready(
172 const ecs_script_task_t *task);
183void ecs_script_task_cancel(
184 ecs_script_task_t *task);
193void ecs_script_task_free(
194 ecs_script_task_t *task);
210int ecs_script_future_resolve(
211 ecs_script_future_t *future,
227int ecs_script_future_reject(
228 ecs_script_future_t *future,
260int ecs_script_future_reject_id(
261 ecs_script_future_t *future,
277bool ecs_script_future_is_cancelled(
278 const ecs_script_future_t *future);
294ecs_script_future_t* ecs_script_future_retain(
295 ecs_script_future_t *future);
306void ecs_script_future_release(
307 ecs_script_future_t *future);
321void ecs_script_future_set_ctx(
322 ecs_script_future_t *future,
333void* ecs_script_future_get_ctx(
334 const ecs_script_future_t *future);
337typedef struct ecs_async_function_desc_t {
352 ecs_async_function_callback_t callback;
356 ecs_async_function_cancel_t cancel;
360} ecs_async_function_desc_t;
379 const ecs_async_function_desc_t *desc);
381#define ecs_async_function(world, ...)\
382 ecs_async_function_init(world, &(ecs_async_function_desc_t)__VA_ARGS__)
ecs_id_t ecs_entity_t
An entity identifier.
struct ecs_world_t ecs_world_t
A world is the container for all ECS data and supporting features.
script_builder script(const char *name=nullptr) const
Build a script.
#define ECS_COMPONENT_DECLARE(id)
Forward declare a component.
void(* ecs_ctx_free_t)(void *ctx)
Function to clean up context data.
Used to capture error output from script evaluation.