www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Export statement?

reply Piotr Szturmaj <bncrbme jadamspam.pl> writes:
We have:

ImportExpression:
     import ( AssignExpression )

Why not also add this:

ExportStatement:
     export ( AssignExpression, AssignExpression )

Both of the AssignExpressions must evaluate at compile time to a 
constant string. The text contents of the first string are interpreted 
as a file name. The text contents of the second string are written to 
the file specified in the first argument, overwriting previous content 
if the file exists.

Implementations may restrict the file name in order to avoid security 
vulnerabilities. A possible restriction might be to allow only paths 
specified in the compiler option.

(the above was shamelessly copied from D docs and then modified)

Export keyword already exist, it's used only as protection attribute, so 
this proposal would not cause ambiguity.

About some use cases, off the top of my head:
- generating build scripts or their parts from the code.
- generating code to instantiate C++ templates when linking with C++ code.
- debugging complex ctfe function output, f.i. string to be mixed in 
(pragma(msg, ...) is a half solution).

What do you think?
Oct 16 2012
parent Nick Sabalausky <SeeWebsiteToContactMe semitwist.com> writes:
On Tue, 16 Oct 2012 23:43:52 +0200
Piotr Szturmaj <bncrbme jadamspam.pl> wrote:

 We have:
 
 ImportExpression:
      import ( AssignExpression )
 
 Why not also add this:
 
 ExportStatement:
      export ( AssignExpression, AssignExpression )
 
 Both of the AssignExpressions must evaluate at compile time to a 
 constant string. The text contents of the first string are
 interpreted as a file name. The text contents of the second string
 are written to the file specified in the first argument, overwriting
 previous content if the file exists.
 
 Implementations may restrict the file name in order to avoid security 
 vulnerabilities. A possible restriction might be to allow only paths 
 specified in the compiler option.
 
 (the above was shamelessly copied from D docs and then modified)
 
 Export keyword already exist, it's used only as protection attribute,
 so this proposal would not cause ambiguity.
 
 About some use cases, off the top of my head:
 - generating build scripts or their parts from the code.
 - generating code to instantiate C++ templates when linking with C++
 code.
 - debugging complex ctfe function output, f.i. string to be mixed in 
 (pragma(msg, ...) is a half solution).
 
 What do you think?

Yea, CTFE definitely could use better IO ability.
Oct 16 2012