No sooner did I send out this question I have found the D feature I've
been looking for. This is what I have:
module log;
version(alternate_logger) {
mixin("public import " ~ import("alternate_logger.txt") ~ ";");
} else {
// Default implementation goes here
}
Can't say I'm thrilled with this, but it does get the job done.
Suggestions more than welcome.
Shachar
On 03/08/17 13:46, Shachar Shemesh wrote:
The problem: I'm writing a library. This library has logging facilities,
but where it's going to be used there are better logging facilities.
Under C, that wouldn't be a big issue:
log.h:
#ifdef REAL_LOG_LIBRARY
#include REAL_LOG_LIBRARY
#else
// Declarations go here
#endif
I can now inject from my build system -DREAL_LOG_LIBRARY=real/impl/log.h
into the compilation command line, and I'm done.
Under D, there is no facility to transfer a string from the command line
to the code, so I can't use that approach.
I seem to remember that D had an option of importing an external file as
something (string? code? anything would do for my purposes). I cannot
seem to find it, however. A search for "string import" and "import
mixin" brought back nothing useful.
Help?
Shachar