GATE
|
Encapsulation of executable codes by runnable interface. More...
#include "gate/gate_core_api.h"
#include "gate/delegates.h"
#include "gate/objects.h"
#include "gate/synchronization.h"
Classes | |
struct | gate_runnable_storage_class |
struct | gate_task_storage_class |
Macros | |
#define | GATE_RUNNABLE_DISPATCHER_FUNC_NAME(disp_name) disp_name ## _gate_func_runnable_dispatcher |
#define | GATE_RUNNABLE_DISPATCHER_DECLARE_3(disp_name, type1, type2, type3) |
#define | GATE_RUNNABLE_DISPATCHER_CREATE_3(disp_name, func_ptr, arg1, arg2, arg3) |
#define | GATE_INTERFACE_NAME_TASK GATE_INTERFACE_NAME_RUNNABLE GATE_INTERFACE_NAME_SEPARATOR "task" |
#define | GATE_TASK_STATUS_PREPARED 1 |
#define | GATE_TASK_STATUS_RUNNING 2 |
#define | GATE_TASK_STATUS_COMPLETED 3 |
#define | GATE_TASK_STATUS_CANCELED 4 |
#define | GATE_TASK_STATUS_FAILED 5 |
#define | gate_task_run(obj) (obj)->vtbl->run((obj)) |
#define | gate_task_cancel(obj) (obj)->vtbl->cancel((obj)) |
#define | gate_task_get_status(obj) (obj)->vtbl->get_status((obj)) |
#define | gate_task_completed(obj) (obj)->vtbl->completed((obj)) |
#define | gate_task_get_result(obj, ptr_task_result, ptr_task_data) (obj)->vtbl->get_result((obj), (ptr_task_result), (ptr_task_data)) |
#define | gate_task_wait(obj) (obj)->vtbl->wait((obj)) |
#define | gate_task_timed_wait(obj, timeout_ms) (obj)->vtbl->timed_wait((obj), (timeout_ms)) |
#define | GATE_TASK_DISPATCHER_FUNC_NAME(disp_name) disp_name ## _gate_func_task_dispatcher |
#define | GATE_TASK_DISPATCHER_DECLARE_2(disp_name, out_type, t1, t2) |
#define | GATE_TASK_DISPATCHER_CREATE_2(disp_name, func_ptr, out_type, a1, a2) |
#define | GATE_TASK_DISPATCHER_DECLARE_3(disp_name, out_type, t1, t2, t3) |
#define | GATE_TASK_DISPATCHER_CREATE_3(disp_name, func_ptr, out_type, a1, a2, a3) |
Typedefs | |
typedef struct gate_runnable_storage_class | gate_runnable_storage_t |
typedef gate_result_t(* | gate_runnable_dispatcher_t) (gate_runnable_storage_t const *runnable_storage_ptr) |
typedef struct gate_task_storage_class | gate_task_storage_t |
typedef gate_result_t(* | gate_task_dispatcher_t) (gate_task_storage_t const *task_storage_ptr) |
typedef void(* | gate_task_dispatcher_destructor_t) (gate_task_storage_t *task_destructor_ptr) |
Functions | |
GATE_CORE_API gate_runnable_t * | gate_runnable_dispatcher_create (void *func_ptr, gate_size_t func_ptr_size, gate_runnable_dispatcher_t dispatcher,...) |
Creates a. | |
GATE_INTERFACE (gate_task) | |
GATE_CORE_API gate_task_t * | gate_task_dispatcher_create (void *func_ptr, gate_size_t func_ptr_size, gate_task_dispatcher_t dispatcher, gate_size_t ret_type_size,...) |
GATE_CORE_API gate_result_t | gate_runasync (gate_runnable_t *ptr_runnable) |
Encapsulation of executable codes by runnable interface.
#define GATE_RUNNABLE_DISPATCHER_CREATE_3 | ( | disp_name, | |
func_ptr, | |||
arg1, | |||
arg2, | |||
arg3 ) |
#define GATE_RUNNABLE_DISPATCHER_DECLARE_3 | ( | disp_name, | |
type1, | |||
type2, | |||
type3 ) |
#define GATE_TASK_DISPATCHER_CREATE_2 | ( | disp_name, | |
func_ptr, | |||
out_type, | |||
a1, | |||
a2 ) |
#define GATE_TASK_DISPATCHER_CREATE_3 | ( | disp_name, | |
func_ptr, | |||
out_type, | |||
a1, | |||
a2, | |||
a3 ) |
#define GATE_TASK_DISPATCHER_DECLARE_2 | ( | disp_name, | |
out_type, | |||
t1, | |||
t2 ) |
#define GATE_TASK_DISPATCHER_DECLARE_3 | ( | disp_name, | |
out_type, | |||
t1, | |||
t2, | |||
t3 ) |
GATE_CORE_API gate_runnable_t * gate_runnable_dispatcher_create | ( | void * | func_ptr, |
gate_size_t | func_ptr_size, | ||
gate_runnable_dispatcher_t | dispatcher, | ||
... ) |
Creates a.
This function stores all given arguments in a runnable object and uses a dispatcher function generated by GATE_RUNNABLE_DISPATCHER_DECLARE_N() to invoke a target function with the preserved arguments.
[in] | func_ptr | Pointer to target function pointer to be called by runnable instance |
[in] | func_ptr_size | Size of target function pointer to be called |
[in] | dispatcher | Pointer to dispatcher function that calls target function with stored parameters |
[in] | ... | Pairs of pointers to arguments and their sizes, e.g.: (int)1, sizeof(int), "hello", sizeof(char const*) |