Re: ImportC has improved macro support
On Friday, 8 December 2023 at 05:17:30 UTC, Ki Rill wrote: On Wednesday, 6 December 2023 at 19:59:54 UTC, Walter Bright wrote: Macros with the pattern: #define BOO ( expression ) are now translated to: auto BOO()() { return expression; } and are available for importing! This is amazing! It should solve the disappearing of enum-like definitions in code. I encountered this in Raylib. It has colors defined as macros: ```c #define WHITE (Color){255, 255, 255, 255} ``` I preprocessed the file and all color definitions were gone. I had to redefine them manually. Nuklear does the same too for their Flags. Same situation here, with RayLib! I really really like the way importC is improving, kudos to Walter! /Paolo
Re: ImportC has improved macro support
On 12/7/2023 9:17 PM, Ki Rill wrote: This is amazing! All in a day's work! It should solve the disappearing of enum-like definitions in code. I encountered this in Raylib. It has colors defined as macros: ```c #define WHITE (Color){255, 255, 255, 255} ``` I preprocessed the file and all color definitions were gone. I had to redefine them manually. Give it a try, it should work now!
Re: ImportC has improved macro support
On Wednesday, 6 December 2023 at 19:59:54 UTC, Walter Bright wrote: Macros with the pattern: #define BOO ( expression ) are now translated to: auto BOO()() { return expression; } and are available for importing! This is amazing! It should solve the disappearing of enum-like definitions in code. I encountered this in Raylib. It has colors defined as macros: ```c #define WHITE (Color){255, 255, 255, 255} ``` I preprocessed the file and all color definitions were gone. I had to redefine them manually. Nuklear does the same too for their Flags.
Re: ImportC has improved macro support
On 12/6/2023 12:43 PM, Dave P. wrote: Does this work for function-like macros? Not yet. It just lays the groundwork for that.
Re: ImportC has improved macro support
On Wednesday, 6 December 2023 at 19:59:54 UTC, Walter Bright wrote: Macros with the pattern: #define BOO ( expression ) are now translated to: auto BOO()() { return expression; } and are available for importing! Does this work for function-like macros?
Re: ImportC has improved macro support
On Wednesday, 6 December 2023 at 20:26:38 UTC, Walter Bright wrote: The interesting thing here is `expression` does not need to be translated to D. It's still a C expression, and has C semantics. D templates with C semantics just falls out of the way ImportC was implemented. Indeed, I've seen that the other day, the [PR](https://github.com/dlang/dmd/pull/15871/files) only modifies the parser.
Re: ImportC has improved macro support
On 12/6/2023 11:59 AM, Walter Bright wrote: Macros with the pattern: #define BOO ( expression ) are now translated to: auto BOO()() { return expression; } and are available for importing! The interesting thing here is `expression` does not need to be translated to D. It's still a C expression, and has C semantics. D templates with C semantics just falls out of the way ImportC was implemented.
ImportC has improved macro support
Macros with the pattern: #define BOO ( expression ) are now translated to: auto BOO()() { return expression; } and are available for importing!