JabberWerxC  2015.1.1
states.h
Go to the documentation of this file.
1 
23 #ifndef JABBERWERX_UTIL_STATES_H
24 #define JABBERWERX_UTIL_STATES_H
25 
26 
27 #include "../eventing.h"
28 #include "mem.h"
29 #include "workq.h"
30 
31 
36 #define JW_STATES_EVENT "stateChanged"
37 
42 #define JW_STATES_NAME(num) #num
43 
44 
46 typedef uint8_t jw_state_val;
47 
49 typedef struct _jw_states jw_states;
50 
55 typedef struct _jw_states_event_data jw_states_event_data;
56 
57 
58 #ifdef __cplusplus
59 extern "C"
60 {
61 #endif
62 
91 JABBERWERX_API bool jw_states_create(const char **names,
92  jw_state_val initial,
93  jw_workq *workq,
94  jw_states **states,
95  jw_err *err);
96 
107 
122 
135 JABBERWERX_API const char * jw_states_get_name_for(jw_states *states,
136  jw_state_val state_val);
137 
174  jw_state_val current,
175  jw_event *evt,
177  void *arg,
178  jw_err *err);
179 
202  jw_state_val next,
203  void *extra,
204  jw_data_free_func extra_cleaner,
205  jw_err *err);
206 
220 JABBERWERX_API jw_event *jw_states_event(jw_states *states, const char *name);
221 
230  jw_states_event_data *event_data);
231 
240  jw_states_event_data *event_data);
241 
250  jw_states_event_data *event_data);
251 
252 #ifdef __cplusplus
253 }
254 #endif
255 
256 #endif /* JABBERWERX_UTIL_STATES_H */
JABBERWERX_API void * jw_states_event_data_get_extra(jw_states_event_data *event_data)
#define JABBERWERX_API
Definition: basics.h:32
This file contains JabberWerxC allocation related functions and jw_pool objects.
void(* jw_event_notify_callback)(jw_event_data evt, void *arg)
Definition: eventing.h:75
JABBERWERX_API const char * jw_states_get_name_for(jw_states *states, jw_state_val state_val)
void(* jw_data_free_func)(void *ptr)
Definition: mem.h:85
struct _jw_states jw_states
Definition: states.h:49
JABBERWERX_API bool jw_states_register_for(jw_states *states, jw_state_val current, jw_event *evt, jw_event_notify_callback cb, void *arg, jw_err *err)
JABBERWERX_API jw_state_val jw_states_get_current(jw_states *states)
JABBERWERX_API jw_state_val jw_states_event_data_get_prev(jw_states_event_data *event_data)
JABBERWERX_API bool jw_states_change(jw_states *states, jw_state_val next, void *extra, jw_data_free_func extra_cleaner, jw_err *err)
JABBERWERX_API jw_event * jw_states_event(jw_states *states, const char *name)
struct jw_workq_t jw_workq
Definition: workq.h:30
JABBERWERX_API void jw_states_destroy(jw_states *states)
JABBERWERX_API jw_state_val jw_states_event_data_get_next(jw_states_event_data *event_data)
uint8_t jw_state_val
Definition: states.h:46
This file contains JabberWerxC Work Queue types and functions.
JABBERWERX_API bool jw_states_create(const char **names, jw_state_val initial, jw_workq *workq, jw_states **states, jw_err *err)
Definition: basics.h:157
struct _jw_states_event_data jw_states_event_data
Definition: states.h:55
struct _jw_event_t jw_event
Definition: eventing.h:39