|
282 | 282 | #define LF_DEFINE_ACTION_STRUCT(ReactorName, ActionName, ActionType, EffectSize, SourceSize, ObserverSize, \ |
283 | 283 | MaxPendingEvents, BufferType) \ |
284 | 284 | typedef struct { \ |
285 | | - Action super; \ |
| 285 | + ActionType super; \ |
286 | 286 | BufferType value; \ |
287 | 287 | BufferType payload_buf[(MaxPendingEvents)]; \ |
288 | 288 | bool payload_used_buf[(MaxPendingEvents)]; \ |
|
294 | 294 | #define LF_DEFINE_ACTION_STRUCT_ARRAY(ReactorName, ActionName, ActionType, EffectSize, SourceSize, ObserverSize, \ |
295 | 295 | MaxPendingEvents, BufferType, ArrayLength) \ |
296 | 296 | typedef struct { \ |
297 | | - Action super; \ |
| 297 | + ActionType super; \ |
298 | 298 | BufferType value[(ArrayLength)]; \ |
299 | 299 | BufferType payload_buf[(ArrayLength)][(MaxPendingEvents)]; \ |
300 | 300 | bool payload_used_buf[(MaxPendingEvents)]; \ |
|
306 | 306 | #define LF_DEFINE_ACTION_STRUCT_VOID(ReactorName, ActionName, ActionType, EffectSize, SourceSize, ObserverSize, \ |
307 | 307 | MaxPendingEvents) \ |
308 | 308 | typedef struct { \ |
309 | | - Action super; \ |
| 309 | + ActionType super; \ |
310 | 310 | Reaction *sources[(SourceSize)]; \ |
311 | 311 | Reaction *effects[(EffectSize)]; \ |
312 | 312 | Reaction *observers[(ObserverSize)]; \ |
|
316 | 316 | MaxPendingEvents, BufferType) \ |
317 | 317 | void ReactorName##_##ActionName##_ctor(ReactorName##_##ActionName *self, Reactor *parent, interval_t min_delay, \ |
318 | 318 | interval_t min_spacing) { \ |
319 | | - Action_ctor(&self->super, ActionType, min_delay, min_spacing, parent, self->sources, (SourceSize), self->effects, \ |
320 | | - (EffectSize), self->observers, ObserverSize, &self->value, sizeof(self->value), \ |
321 | | - (void *)&self->payload_buf, self->payload_used_buf, (MaxPendingEvents)); \ |
| 319 | + ActionType##_ctor(&self->super, min_delay, min_spacing, parent, self->sources, (SourceSize), self->effects, \ |
| 320 | + (EffectSize), self->observers, ObserverSize, &self->value, sizeof(self->value), \ |
| 321 | + (void *)&self->payload_buf, self->payload_used_buf, (MaxPendingEvents)); \ |
322 | 322 | } |
323 | 323 |
|
324 | 324 | #define LF_DEFINE_ACTION_CTOR_VOID(ReactorName, ActionName, ActionType, EffectSize, SourceSize, ObserverSize, \ |
325 | 325 | MaxPendingEvents) \ |
326 | 326 | void ReactorName##_##ActionName##_ctor(ReactorName##_##ActionName *self, Reactor *parent, interval_t min_delay, \ |
327 | 327 | interval_t min_spacing) { \ |
328 | | - Action_ctor(&self->super, ActionType, min_delay, min_spacing, parent, self->sources, (SourceSize), self->effects, \ |
329 | | - (EffectSize), self->observers, ObserverSize, NULL, 0, NULL, NULL, (MaxPendingEvents)); \ |
| 328 | + ActionType##_ctor(&self->super, min_delay, min_spacing, parent, self->sources, (SourceSize), self->effects, \ |
| 329 | + (EffectSize), self->observers, ObserverSize, NULL, 0, NULL, NULL, (MaxPendingEvents)); \ |
330 | 330 | } |
331 | 331 |
|
332 | 332 | #define LF_ACTION_INSTANCE(ReactorName, ActionName) ReactorName##_##ActionName ActionName |
|
0 commit comments