On Thursday, 12 April 2018 at 11:43:51 UTC, John Colvin wrote:
On Wednesday, 11 April 2018 at 18:36:56 UTC, Walter Bright
wrote:
On 4/11/2018 3:25 AM, Atila Neves wrote:
[...]
That's right. There is no general solution. One can only look
for common patterns and do those. For example,
#define X 15
is a common pattern and can be reliably rewritten as:
enum X = 15;
If I understand it correctly, dpp doesn't do that.
Instead, it runs the pre-processor on the source code, just
like in C, so
// test.dpp
#define X 15
int foo() { return X; }
becomes
// test.d
int foo() { return 15; }
The upside of this approach: all macros just work, unless they
use C (not C pre-processor, C proper) features that dpp can't
handle. `sizeof(...)` is a special case that is handled in
dpp.cursor.macro.translateToD and more could be added.
The downside: macros can't be directly used outside .dpp files.
Yes, I assumed it actually "expands" the macros, whereas it
actually runs
the preprocessor on dpp files:
https://github.com/atilaneves/dpp/issues/30
I can see it perfectly matches the Atila's usecase, and I'm
curious
what are the other usecases for dpp?