wiremod / wire-cpu

Legacy CPU/GPU/SPU as a separate addon.
Apache License 2.0
8 stars 6 forks source link

User defined macros w/ variables #21

Closed DerelictDrone closed 9 months ago

DerelictDrone commented 10 months ago

Definition syntax: #macro (name) (number of arguments) (code using $(arg num) to refer to argument)\n Use syntax (once defined): (name) a, b, c

Example code that recreates the compiler's own hardcoded vec2f macro gmod_5dGvGmP5ZQ

Generated code comparison gmod_NzyC7wUxl3

Macros can be referenced by other macros, at nearly no slowdown to compile time (tested with a chain of 60 macros referencing the next macro, and 16 uses of 4 defined macros of varied size, all compiles were under 1s) unless the macro is self-referencing infinitely, I can't seem to find a way to solve that one and am open to suggestions for solving before this is considered merge-worthy

The plan was to replace the inbuilt vector types with an include to a file containing definitions that recreate their use, so you can replace their names with structs to use them in C-style syntax w/ variables, but eh, that can come later.