annotate libmlk-core/mlk/core/state.h @ 602:7e168493f0bd

cmake: fix NLS required
author David Demelier <markand@malikania.fr>
date Thu, 10 Aug 2023 21:16:05 +0200
parents 7fb5a859bcb4
children 83781cc87fca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
2 * state.h -- abstract game loop state
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
445
773a082f0b91 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 431
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
19 #ifndef MLK_CORE_STATE_H
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
20 #define MLK_CORE_STATE_H
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
22 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
23 * \file mlk/core/state.h
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
24 * \brief Abstract game loop state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
25 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
26
450
b26dd49f69ff core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
27 union mlk_event;
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
29 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
30 * \struct mlk_state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
31 * \brief State structure
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
32 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
33 * This structure contains only virtual functions that the user can fill and
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
34 * will be called by the main loop.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
35 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
36 * All of the functions can be NULL but usually indicate an useless game.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
37 */
469
0d6206cee6b9 core: state -> mlk_state
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
38 struct mlk_state {
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
39 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
40 * (read-write, borrowed, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
41 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
42 * Optional state data.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
43 */
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
44 void *data;
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
45
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
46 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
47 * (read-write, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
48 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
49 * Invoked when the state starts, which is called only one time.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
50 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
51 * \param self this state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
52 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
53 void (*start)(struct mlk_state *self);
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
54
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
55 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
56 * (read-write, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
57 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
58 * Handle an event.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
59 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
60 * \param self this state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
61 * \param event the event
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
62 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
63 void (*handle)(struct mlk_state *self, const union mlk_event *event);
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
64
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
65 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
66 * (read-write, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
67 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
68 * Update the state.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
69 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
70 * \param self this state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
71 * \param ticks frame ticks
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
72 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
73 void (*update)(struct mlk_state *self, unsigned int ticks);
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
74
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
75 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
76 * (read-write, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
77 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
78 * Draw the state.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
79 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
80 * \param self this state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
81 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
82 void (*draw)(struct mlk_state *self);
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
83
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
84 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
85 * (read-write, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
86 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
87 * Suspend this state.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
88 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
89 * This function is called just before switching to a new state.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
90 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
91 * \param self this state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
92 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
93 void (*suspend)(struct mlk_state *self);
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
94
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
95 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
96 * (read-write, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
97 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
98 * Resume this state.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
99 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
100 * This function is called after the previous state has been left.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
101 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
102 * \param self this state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
103 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
104 void (*resume)(struct mlk_state *self);
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
105
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
106 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
107 * (read-write, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
108 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
109 * Terminate the state.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
110 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
111 * This function is called when the state is terminated.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
112 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
113 * \param self this state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
114 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
115 void (*end)(struct mlk_state *self);
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
116
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
117 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
118 * (read-write, optional)
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
119 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
120 * Cleanup resources allocated by the state.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
121 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
122 * \param self this state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
123 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
124 void (*finish)(struct mlk_state *self);
44
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 };
c97fe725fdeb core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 469
diff changeset
127 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 469
diff changeset
128 extern "C" {
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 469
diff changeset
129 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 253
diff changeset
130
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
131 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
132 * Invoke ::mlk_state::start function if not NULL.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
133 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
134 * \pre state != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
135 * \param state the state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
136 */
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
137 void
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
138 mlk_state_start(struct mlk_state *state);
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
139
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
140 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
141 * Invoke ::mlk_state::handle function if not NULL.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
142 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
143 * \pre state != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
144 * \pre event != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
145 * \param state the state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
146 * \param event the event
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
147 */
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
148 void
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
149 mlk_state_handle(struct mlk_state *state, const union mlk_event *event);
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
150
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
151 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
152 * Invoke ::mlk_state::update function if not NULL.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
153 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
154 * \pre state != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
155 * \param state the state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
156 * \param ticks frame ticks
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
157 */
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
158 void
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
159 mlk_state_update(struct mlk_state *state, unsigned int ticks);
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
160
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
161 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
162 * Invoke ::mlk_state::draw function if not NULL.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
163 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
164 * \pre state != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
165 * \param state the state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
166 */
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
167 void
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
168 mlk_state_draw(struct mlk_state *state);
299
648f5f949afb core: implement stackable states
David Demelier <markand@malikania.fr>
parents: 298
diff changeset
169
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
170 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
171 * Invoke ::mlk_state::suspend function if not NULL.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
172 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
173 * \pre state != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
174 * \param state the state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
175 */
299
648f5f949afb core: implement stackable states
David Demelier <markand@malikania.fr>
parents: 298
diff changeset
176 void
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
177 mlk_state_suspend(struct mlk_state *state);
299
648f5f949afb core: implement stackable states
David Demelier <markand@malikania.fr>
parents: 298
diff changeset
178
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
179 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
180 * Invoke ::mlk_state::resume function if not NULL.
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
181 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
182 * \pre state != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
183 * \param state the state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
184 */
299
648f5f949afb core: implement stackable states
David Demelier <markand@malikania.fr>
parents: 298
diff changeset
185 void
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
186 mlk_state_resume(struct mlk_state *state);
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
187
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
188 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
189 * Invoke ::mlk_state::end function if not NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
190 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
191 * \pre state != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
192 * \param state the state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
193 */
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
194 void
539
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
195 mlk_state_end(struct mlk_state *state);
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
196
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
197 /**
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
198 * Invoke ::mlk_state::finish function if not NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
199 *
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
200 * \pre state != NULL
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
201 * \param state the state
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
202 */
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
203 void
7fb5a859bcb4 core: doxygenize state
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
204 mlk_state_finish(struct mlk_state *state);
162
629f55f3961e core: rework states
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
205
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 469
diff changeset
206 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 469
diff changeset
207 }
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 469
diff changeset
208 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 253
diff changeset
209
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
210 #endif /* !MLK_CORE_STATE_H */