On Saturday, 14 October 2017 at 14:35:53 UTC, Shriramana Sharma
wrote:
Hello. I prepared a utility/library to output ANSI escape codes
for terminal text attributes with capabilities as advertised at
https://sites.google.com/site/jamadagni/files/temp/textattr-usage.html. (AFAIK this set of capabilities does not exist already in any existing package.)
This was first written in D and ported with much effort to C.
This is the utility/library I refer to at
http://forum.dlang.org/post/n6362a$1t7u$1...@digitalmars.com.
Now I would prefer to keep the single C source and just write a
thin D wrapper to call the C library because C is also callable
from many other languages (and people can write wrappers for
their favourite one).
However the only disadvantage (as discussed in the above
thread) is that the C library function is not CTFE-able in D
and thus I cannot write a D template in the wrapper to evaluate
the colour codes at compile time.
On the other hand, I am not sure whether it is really useful to
evaluate colour codes at compile time because it is tantamount
to hardcoding them, and this means that any program using the
library is not able to switch off colour output at will if
stdout is not connected to a terminal.
If the library is only called at runtime, I am able to add a
boolean switch to just make the library always output an empty
string for all calls effectively switching off colour code
output which is useful when stdout is not a terminal.
My question: do people agree that there is not much point in
enabling CTFE of colour codes?
Why not simply add extern (C) wrappers for your D code? I see no
point of using C, unless you want to be portable to arcane
architectures.
With this approach you'll have both the portability of C and the
advantages of using D.