Yume Project 3.0
Touhou-inspired Danmaku game made in C only
Chargement...
Recherche...
Aucune correspondance
Référence du fichier coevent.h
#include "dynarray.h"
#include <stdint.h>
#include "cotask.h"

Aller au code source de ce fichier.

Classes

struct  CoEvent
struct  CoEventSnapshot

Macros

#define COEVENTS_ARRAY(...)
#define COEVENT_ARRAY_ACTION(func, array)
#define COEVENT_INIT_ARRAY(array)
#define COEVENT_CANCEL_ARRAY(array)

Définitions de type

typedef enum CoEventStatus CoEventStatus
typedef struct BoxedTask BoxedTask
typedef struct CoEvent CoEvent
typedef struct CoEventSnapshot CoEventSnapshot

Énumérations

enum  CoEventStatus { CO_EVENT_PENDING , CO_EVENT_SIGNALED , CO_EVENT_CANCELED }

Fonctions

typedef COEVENTS_ARRAY (finished) CoTaskEvents
void coevent_init (CoEvent *evt)
 Initialise un événement Lui donne un id unique.
void coevent_signal (CoEvent *evt)
 Signale l'evenement et reveille ses enfants.
CoEventSnapshot coevent_snapshot (const CoEvent *evt)
 Prend une "photo" de l'événement.
CoEventStatus coevent_poll (const CoEvent *evt, const CoEventSnapshot *snap)
 Renvoie l'état de l'evenement par rapport a un snapshot.
void coevent_cleanup_subscribers (CoEvent *evt)
 Nettoie l'evenement en ne gardant dans ses subscribers bien ceux qui le reference correctement.
void coevent_add_subscriber (CoEvent *evt, CoTask *task)
 Ajoute task en subscriber de l'evenement.
void coevent_signal_once (CoEvent *evt)
 Signale l'evenement ssi il n'a jamais ete signale avant.
void coevent_cancel (CoEvent *evt)
 annule un event et reveille tous ses enfants
void _coevent_array_action (unsigned int num, CoEvent *events, void(*func)(CoEvent *))
 Execute func sur chaque evenement d'un tableau de num coevent.

Documentation des macros

◆ COEVENT_ARRAY_ACTION

#define COEVENT_ARRAY_ACTION ( func,
array )
Valeur :
(_coevent_array_action(sizeof(array)/sizeof(CoEvent), &((array)._first_event_), func))
void _coevent_array_action(unsigned int num, CoEvent *events, void(*func)(CoEvent *))
Execute func sur chaque evenement d'un tableau de num coevent.
Definition coevent.h:14

◆ COEVENT_CANCEL_ARRAY

#define COEVENT_CANCEL_ARRAY ( array)
Valeur :
#define COEVENT_ARRAY_ACTION(func, array)
Definition coevent.h:114
void coevent_cancel(CoEvent *evt)
annule un event et reveille tous ses enfants

◆ COEVENT_INIT_ARRAY

#define COEVENT_INIT_ARRAY ( array)
Valeur :
void coevent_init(CoEvent *evt)
Initialise un événement Lui donne un id unique.

◆ COEVENTS_ARRAY

#define COEVENTS_ARRAY ( ...)
Valeur :
union { \
CoEvent _first_event_; \
struct { CoEvent __VA_ARGS__; }; \
}

Documentation des définitions de type

◆ BoxedTask

typedef struct BoxedTask BoxedTask

◆ CoEvent

typedef struct CoEvent CoEvent

◆ CoEventSnapshot

typedef struct CoEventSnapshot CoEventSnapshot

◆ CoEventStatus

Documentation du type de l'énumération

◆ CoEventStatus

Valeurs énumérées
CO_EVENT_PENDING 
CO_EVENT_SIGNALED 
CO_EVENT_CANCELED 

Documentation des fonctions

◆ _coevent_array_action()

void _coevent_array_action ( unsigned int num,
CoEvent * events,
void(* func )(CoEvent *) )

Execute func sur chaque evenement d'un tableau de num coevent.

Paramètres
num
events
func

◆ coevent_add_subscriber()

void coevent_add_subscriber ( CoEvent * evt,
CoTask * task )

Ajoute task en subscriber de l'evenement.

Paramètres
evt
task

◆ coevent_cancel()

void coevent_cancel ( CoEvent * evt)

annule un event et reveille tous ses enfants

Paramètres
evt

◆ coevent_cleanup_subscribers()

void coevent_cleanup_subscribers ( CoEvent * evt)

Nettoie l'evenement en ne gardant dans ses subscribers bien ceux qui le reference correctement.

Paramètres
evt

◆ coevent_init()

void coevent_init ( CoEvent * evt)

Initialise un événement Lui donne un id unique.

Paramètres
evt

◆ coevent_poll()

CoEventStatus coevent_poll ( const CoEvent * evt,
const CoEventSnapshot * snap )

Renvoie l'état de l'evenement par rapport a un snapshot.

il faut comprendre que quand on fait dormir une tache sur un evenement, on fait un snap de l'evenement pour s'en souvenir. Plus tard, le sched va verifier si la tache doit se reveiller en comparant le snap a l evenement actuel ie si il a ete signalé alors on aura sur l evenement un num_signal > au num_signal du snap => on reveille la tache!

Paramètres
evt
snap
Renvoie
CoEventStatus

◆ coevent_signal()

void coevent_signal ( CoEvent * evt)

Signale l'evenement et reveille ses enfants.

Paramètres
evt

◆ coevent_signal_once()

void coevent_signal_once ( CoEvent * evt)

Signale l'evenement ssi il n'a jamais ete signale avant.

Paramètres
evt

◆ coevent_snapshot()

CoEventSnapshot coevent_snapshot ( const CoEvent * evt)

Prend une "photo" de l'événement.

Paramètres
evt
Renvoie
CoEventSnapshot

◆ COEVENTS_ARRAY()

typedef COEVENTS_ARRAY ( finished )