Cours 7
This commit is contained in:
52
cours/inverted-pendulum/hept_ffi.h
Normal file
52
cours/inverted-pendulum/hept_ffi.h
Normal file
@@ -0,0 +1,52 @@
|
||||
#ifndef HEPT_FFI_H
|
||||
#define HEPT_FFI_H
|
||||
|
||||
#define UNPAREN(...) __VA_ARGS__
|
||||
|
||||
#define DECLARE_HEPT_FUN(module, name, inputs, outputs) \
|
||||
typedef struct { outputs; } module ## __ ## name ## _out; \
|
||||
void module ## __ ## name ##_step(UNPAREN inputs, \
|
||||
module ## __ ## name ## _out *)
|
||||
|
||||
#define DECLARE_HEPT_FUN_NULLARY(module, name, outputs) \
|
||||
typedef struct { outputs; } module ## __ ## name ## _out; \
|
||||
void module ## __ ## name ##_step(module ## __ ## name ## _out *)
|
||||
|
||||
#define DEFINE_HEPT_FUN(module, name, inputs) \
|
||||
void module ## __ ## name ##_step(UNPAREN inputs, \
|
||||
module ## __ ## name ## _out *out)
|
||||
|
||||
#define DEFINE_HEPT_FUN_NULLARY(module, name, inputs) \
|
||||
void module ## __ ## name ##_step(module ## __ ## name ## _out *out)
|
||||
|
||||
#define DECLARE_HEPT_NODE(module, name, inputs, outputs, state) \
|
||||
typedef struct { outputs; } module ## __ ## name ## _out; \
|
||||
typedef struct { state; } module ## __ ## name ## _mem; \
|
||||
void module ## __ ## name ##_step(UNPAREN inputs, \
|
||||
module ## __ ## name ## _out *, \
|
||||
module ## __ ## name ## _mem *); \
|
||||
void module ## __ ## name ##_reset(module ## __ ## name ## _mem *)
|
||||
|
||||
#define DECLARE_HEPT_NODE_NULLARY(module, name, outputs, state) \
|
||||
typedef struct { outputs; } module ## __ ## name ## _out; \
|
||||
typedef struct { state; } module ## __ ## name ## _mem; \
|
||||
void module ## __ ## name ##_step(module ## __ ## name ## _out *, \
|
||||
module ## __ ## name ## _mem *); \
|
||||
void module ## __ ## name ##_reset(module ## __ ## name ## _mem *)
|
||||
|
||||
#define DEFINE_HEPT_NODE_RESET(module, name) \
|
||||
void module ## __ ## name ##_reset(module ## __ ## name ## _mem *mem)
|
||||
|
||||
#define DEFINE_HEPT_NODE_STEP(module, name, inputs) \
|
||||
void module ## __ ## name ##_step(UNPAREN inputs, \
|
||||
module ## __ ## name ## _out *out, \
|
||||
module ## __ ## name ## _mem *mem)
|
||||
|
||||
#define DEFINE_HEPT_NODE_NULLARY_STEP(module, name, inputs) \
|
||||
void module ## __ ## name ##_step(module ## __ ## name ## _out *out, \
|
||||
module ## __ ## name ## _mem *mem)
|
||||
|
||||
/* FIXME remove when Heptagon's pervasives.h has been fixed. */
|
||||
typedef char * string;
|
||||
|
||||
#endif /* HEPT_FFI */
|
||||
Reference in New Issue
Block a user