10 #define _POST_DEC __attribute__((naked)) 15 #define _EMBED_DECORATE(FUNC) _PRE_DEC FUNC _POST_DEC 21 #define _PRECOMPILED_WORDS 27 #define POP_WORD(TYPE) \ 28 _EMBED_DECORATE(TYPE pop_ ## TYPE()); 30 #define PUSH_WORD(TYPE) \ 31 _EMBED_DECORATE(void push_ ## TYPE(TYPE value)); 33 #define _MATH_OP(TYPE, NAME, OP) \ 34 _EMBED_DECORATE(void M_CONC(_, M_CONC(NAME, M_CONC(_, TYPE))) ()); 36 #define _FIVE_MATH_OPS(TYPE) \ 37 _MATH_OP(TYPE, add, +) \ 38 _MATH_OP(TYPE, sub, -) \ 39 _MATH_OP(TYPE, mul, *) \ 40 _MATH_OP(TYPE, div, /) \ 41 _MATH_OP(TYPE, mod, %) 43 #define _COMPARE_OP(TYPE, NAME, OP) \ 44 _EMBED_DECORATE(void M_CONC(_, M_CONC(NAME, M_CONC(_, TYPE))) ()); 46 #define _COMPARISON_OPS(TYPE) \ 47 _COMPARE_OP(TYPE, gt, >) \ 48 _COMPARE_OP(TYPE, lt, <) \ 49 _COMPARE_OP(TYPE, ge, >=) \ 50 _COMPARE_OP(TYPE, le, <=) \ 51 _COMPARE_OP(TYPE, eq, ==) \ 52 _COMPARE_OP(TYPE, neq, !=) 54 #define _TRUE_OP(TYPE) \ 55 _EMBED_DECORATE(int M_CONC(_, M_CONC(true, M_CONC(_, TYPE))) ()); 57 #define PUSH_POP_WORD(TYPE) PUSH_WORD(TYPE) POP_WORD(TYPE) 58 #define PUSH_POP_WORDS(...) PUSH_POP_WORD(__VA_ARGS__) 60 #define EVAL0(...) __VA_ARGS__ 61 #define EVAL1(...) EVAL0(EVAL0(EVAL0(__VA_ARGS__))) 62 #define EVAL2(...) EVAL1(EVAL1(EVAL1(__VA_ARGS__))) 63 #define EVAL3(...) EVAL2(EVAL2(EVAL2(__VA_ARGS__))) 64 #define EVAL4(...) EVAL3(EVAL3(EVAL3(__VA_ARGS__))) 65 #define EVAL(...) EVAL4(EVAL4(EVAL4(__VA_ARGS__))) 68 #define MAP_GET_END() 0, MAP_END 69 #define MAP_NEXT0(test, next, ...) next MAP_OUT 70 #define MAP_NEXT1(test, next) MAP_NEXT0(test, next, 0) 71 #define MAP_NEXT(test, next) MAP_NEXT1(MAP_GET_END test, next) 72 #define MAP0(f, x, peek, ...) f(x) MAP_NEXT(peek, MAP1) (f, peek, __VA_ARGS__) 73 #define MAP1(f, x, peek, ...) f(x) MAP_NEXT(peek, MAP0) (f, peek, __VA_ARGS__) 74 #define MAP(f, ...) EVAL(MAP1(f, __VA_ARGS__, (), 0)) 76 #define M_CONC(A, B) M_CONC_(A, B) 77 #define M_CONC_(A, B) A ## B 79 #define _TYPED_GENERIC_WORD(TYPE, NAME) \ 80 _EMBED_DECORATE(void M_CONC(_, M_CONC(NAME, M_CONC(_, TYPE))) ()); 82 #define _GENERIC_WORD(NAME) _TYPED_GENERIC_WORD(FORTH_TYPE, NAME) 84 #define POP M_CONC(pop_, FORTH_TYPE) (); 114 #include "generators_run.h" void register_precompiled()
Definition: words.c:314
void _drop(size_t size)
Definition: words.c:40
#define FORTH_TYPE
Definition: pforth.h:38
int size
Definition: pforth.h:105
void _push(void *data, size_t size)
Definition: words.c:18
#define _GENERIC_WORD(NAME)
Definition: words.h:82
pforth_word_ptr create_variable(const char *name)
Definition: words.c:340
FORTH_TYPE _depth()
Definition: words.c:29
#define _EMBED_DECORATE(FUNC)
Definition: words.h:15