On Friday, 12 July 2013 at 21:54:02 UTC, Walter Bright wrote:
On 7/12/2013 1:42 PM, Tofu Ninja wrote:
So I had an idea recently, wouldn't it be cool to have the ability to call an executable at compile time and capture its output. Something like the string imports but instead of opening and reading a text file, it run an executable,
waits for it to finish, and grabs its output.

It would get really cool if you could pass this executable some args and then mix in its out put into your own code. It could be used similarly to how CTFE are used but with out the overhead of trying to compile that function and what
not and with out the limitations on what it can do.

I could imagine all sorts of things that would be possible with this that is
currently not.

Not sure if this is something that could be implemented easily, but seems like something that could be done and something that would be really cool.

This is actually done in the makefile that builds DMD. A program (optabgen) is compiled and then run. Optabgen's output is several .c files which are then compiled into DMD's binary. The programs impcnvgen and idgen do similar things.

It is a very powerful technique.

I did similar stuff for a mixed D/C++ program. The build contained some intermediary utilities used to spit out infos about the C++ code (typically sizeof and other characteristics like that) that could then be used to generate part of the binding in D.

Reply via email to