On Saturday, 14 April 2018 at 04:07:12 UTC, Petar Kirov
[ZombineDev] wrote:
On Friday, 13 April 2018 at 10:31:43 UTC, Atila Neves wrote:
On Wednesday, 11 April 2018 at 14:33:26 UTC, Jacob Carlborg
wrote:
On Monday, 9 April 2018 at 11:03:48 UTC, Atila Neves wrote:
Here's my blog post about my project that allows directly
#including C headers in D*
I don't know the exact details of your project but can't you
just:
1. Copy the includes
2. Paste them into a C file
3. Run DStep on the C file
4. Replace the includes in the first file with the result
from DStep
This would require changing DStep to always return `false`
here [1]. Or perhaps run the preprocessor to expand the
includes and then run DStep.
[1]
https://github.com/jacob-carlborg/dstep/blob/master/dstep/translator/Translator.d#L326
--
/Jacob Carlborg
That wouldn't have the same semantics as I want.
I tried using dstep as a library. It didn't work.
You also mentioned this in the reddit thread, though I'm still
curious to understand what's difference in the semantics
between the approach you have taken and the approach Jacob
proposed.
You can use the C macros in the headers that you #include in your
dpp file.
dstep has a lot of code for translating macros. I don't want to
translate macros at all, but it's deeply intertwined with
translating everything else. This bug just can't happen with the
dpp approach:
https://github.com/jacob-carlborg/dstep/issues/166
In the idea above it assumes that all #include directives are
together at the top of the file. They probably are, but they
might not be for some reason. I can't remember the specifics, but
dstep by default ignores declarations from other headers because
the idea is to translate this one particular header. I don't want
that either. I also don't want D code generated that has an
`import` to a D file that's actually a translation of another C
header.
I want it to work like it does in C++. dstep doesn't set out to
do that, which is fine, but contorting it to make it do what I
wanted it to was more trouble than it was worth.
Believe me, if I can avoid writing code, I do. Writing
translations from scratch was not a decision I made lightly. In
the end it turned out to be a lot less work than I thought though
(just over 500 SLOC).
Atila