Yume Project 3.0
Touhou-inspired Danmaku game made in C only
Chargement...
Recherche...
Aucune correspondance
cotask_data.h
Aller à la documentation de ce fichier.
1#pragma once
2
3#include "coroutine/coevent.h"
4#include "cotask.h"
5#include "ecs.h"
6#include "list.h"
7
8#include "../include/koishi.h"
9#include <stdint.h>
10#include <sys/types.h>
11
12enum {
17};
18
19#define CO_STACK_SIZE (256 * 1024)
20
21typedef struct CoTaskData CoTaskData;
22
23// "coquille" d'une tache
24struct CoTask {
26 koishi_coroutine_t ko; // Emplacement dans la coroutine dans un endroit de la mémoire bresom
27 // JSP comment ça marche c géré par koishi
28
29 CoTaskData *data; // Pointeur vers le "cerveau"
30
31 uint32_t unique_id;
32 const char * name; // Debug ?
33};
34
35// "cerveau" de la tache
36struct CoTaskData {
38
39 CoTask *task; // pointeur vers sa coquille
41
42 CoTaskData *master; // Le parent
43 LIST_ANCHOR(CoTaskData) slaves; // Les enfants
44
46 CoTaskEvents events;
47
49
50 // bloc pour les wait
51 struct {
53
54 union {
55 // quand on fait des WAIT(60)
56 struct {
59
60 // pour les WAIT_EVENT(..)
61 struct {
65 };
66
67 unsigned int wait_type;
69
70 // Entité/events que la tache crée
71 struct {
74 unsigned int num_events;
76};
77
86
89
96CoTask *cotask_new_internal(koishi_entrypoint_t entry_point);
97
104void *cotask_entry(void *varg);
105
113void *cotask_resume_internal(CoTask *task, void *arg);
114
115static
117 return task->data;
118}
void *(* CoTaskFunc)(void *arg, size_t argsize)
Definition cotask.h:13
void * cotask_resume_internal(CoTask *task, void *arg)
Fonction interne pour le resume.
@ COTASK_WAIT_EVENT
Definition cotask_data.h:15
@ COTASK_WAIT_DELAY
Definition cotask_data.h:14
@ COTASK_WAIT_SUBTASKS
Definition cotask_data.h:16
@ COTASK_WAIT_NONE
Definition cotask_data.h:13
void * cotask_entry(void *varg)
EHH en gros ce qui fait touner la tache.
void cotask_global_shutdown(void)
static CoTaskData * cotask_get_data(CoTask *task)
Definition cotask_data.h:116
void cotask_global_init(void)
CoTask * cotask_new_internal(koishi_entrypoint_t entry_point)
Pour créer une nouvelle cotask Fonction de "bas" niveau.
Types et déclarations utilisés dans l'ECS.
uint32_t Entity
Une entité est un indice.
Definition ecs.h:20
Référence unique pour identifier une entité même après qu'elle ai quitté l'ECS.
Definition ecs.h:26
Definition coevent.h:22
Definition coevent.h:14
Definition cosched.h:8
Definition cotask_data.h:36
Entity ent
Definition cotask_data.h:72
BoxedEntity bound_ent
Definition cotask_data.h:45
struct CoTaskData::@344214017355066137072006137222067322036133005323::@205276071212343000153254303234305123073304347177::@150305360052222114366367361370103300300012325375 event
CoTaskData * master
Definition cotask_data.h:42
bool finalizing
Definition cotask_data.h:48
int remaining
Definition cotask_data.h:57
unsigned int num_events
Definition cotask_data.h:74
LIST_INTERFACE(CoTaskData)
CoEvent * p_event
Definition cotask_data.h:62
struct CoTaskData::@344214017355066137072006137222067322036133005323::@205276071212343000153254303234305123073304347177::@242372364122102022177072017113253041177224123115 delay
CoTask * task
Definition cotask_data.h:39
LIST_ANCHOR(CoTaskData) slaves
CoSched * sched
Definition cotask_data.h:40
struct CoTaskData::@030044071375344037122247050130246056106223067242 hosted
CoEventSnapshot snapshot
Definition cotask_data.h:63
CoWaitResult result
Definition cotask_data.h:52
struct CoTaskData::@344214017355066137072006137222067322036133005323 wait
unsigned int wait_type
Definition cotask_data.h:67
CoTaskEvents events
Definition cotask_data.h:46
Definition cotask_data.h:78
size_t func_arg_size
Definition cotask_data.h:83
CoTask * task
Definition cotask_data.h:79
CoSched * sched
Definition cotask_data.h:80
CoTaskFunc func
Definition cotask_data.h:81
void * func_arg
Definition cotask_data.h:82
CoTaskData * master_task_data
Definition cotask_data.h:84
Definition cotask_data.h:24
koishi_coroutine_t ko
Definition cotask_data.h:26
CoTaskData * data
Definition cotask_data.h:29
const char * name
Definition cotask_data.h:32
uint32_t unique_id
Definition cotask_data.h:31
LIST_INTERFACE(CoTask)
Definition cotask.h:33