From f68447b1e469efff04647a0e20952144d95f27d7 Mon Sep 17 00:00:00 2001 From: Moon Flower Date: Wed, 26 Feb 2025 12:34:00 +0330 Subject: main.m4 -> moonshine.m4 --- Makefile | 2 +- main.c | 6 +++--- main.m4 | 31 ------------------------------- moonshine.m4 | 31 +++++++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 35 deletions(-) delete mode 100644 main.m4 create mode 100644 moonshine.m4 diff --git a/Makefile b/Makefile index 323ab9e..b73f7a6 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ SIZE_FLAGS = -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -s -fno-u all: m4 c test m4: - m4 main.m4 > moonshine.m4.h + m4 moonshine.m4 > moonshine.m4.h c: clang main.c -o out.bin $(FLAGS) -O3 diff --git a/main.c b/main.c index 0550dc1..de8da5c 100644 --- a/main.c +++ b/main.c @@ -7,12 +7,12 @@ void cleanup_free(var* input) { print("Deallocation logic goes here ", input); } #define auto_free __attribute__((cleanup(cleanup_free))) -#define create(name, ...) \ +#define create(type, name, ...) \ auto_free var cat(name, _parent) = __VA_ARGS__; \ - auto name = cat(name, _parent); + type name = cat(name, _parent); int main() { - create(proof_of_concept, new(int)); + create(t(int), proof_of_concept, new(int)); print("Neat, right? ", proof_of_concept); diff --git a/main.m4 b/main.m4 deleted file mode 100644 index 8b88120..0000000 --- a/main.m4 +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef moonshine_m4_header -#define moonshine_m4_header - -dnl This is m4 preprocessor magic. -dnl You can safely ignore it, as it is toxic and radioactive to humans. -// # Autogenerated by m4 -// # Don't modify this, modify the main.m4 file instead. -dnl -dnl -changequote(`[', `]')dnl -define([set], defn([define]))dnl -undefine([define])dnl - -#define p_cat(a, b) a##b -#define cat(a, b) p_cat(a, b) - -#define dump_or_continue_0(...) -#define dump_or_continue_01(...) __VA_ARGS__ - -set([_expand], [#define EXPAND_$3_$2(x, ...) $3(x); cat(dump_or_continue_0, __VA_OPT__(1))(EXPAND_$3_$1(__VA_ARGS__))])dnl -set([expand], [ifelse([$1], [1], [#define EXPAND_$2_$1(x, ...) $2(x)], [_expand(decr($1), $1, $2)])])dnl -dnl -set([build_expander], [ifelse([$1], [0], [], [expand($1, $2) -build_expander(decr($1), $2)dnl -])])dnl -set([define_expander], [#define EXPAND_$2(...) EXPAND_$2_$1(__VA_ARGS__) -build_expander($1, $2)])dnl -dnl -define_expander([512], [print_local]) - -#endif diff --git a/moonshine.m4 b/moonshine.m4 new file mode 100644 index 0000000..8b88120 --- /dev/null +++ b/moonshine.m4 @@ -0,0 +1,31 @@ +#ifndef moonshine_m4_header +#define moonshine_m4_header + +dnl This is m4 preprocessor magic. +dnl You can safely ignore it, as it is toxic and radioactive to humans. +// # Autogenerated by m4 +// # Don't modify this, modify the main.m4 file instead. +dnl +dnl +changequote(`[', `]')dnl +define([set], defn([define]))dnl +undefine([define])dnl + +#define p_cat(a, b) a##b +#define cat(a, b) p_cat(a, b) + +#define dump_or_continue_0(...) +#define dump_or_continue_01(...) __VA_ARGS__ + +set([_expand], [#define EXPAND_$3_$2(x, ...) $3(x); cat(dump_or_continue_0, __VA_OPT__(1))(EXPAND_$3_$1(__VA_ARGS__))])dnl +set([expand], [ifelse([$1], [1], [#define EXPAND_$2_$1(x, ...) $2(x)], [_expand(decr($1), $1, $2)])])dnl +dnl +set([build_expander], [ifelse([$1], [0], [], [expand($1, $2) +build_expander(decr($1), $2)dnl +])])dnl +set([define_expander], [#define EXPAND_$2(...) EXPAND_$2_$1(__VA_ARGS__) +build_expander($1, $2)])dnl +dnl +define_expander([512], [print_local]) + +#endif -- cgit v1.2.3