Improving version(...)
Vladimir Panteleev
vladimir at thecybershadow.net
Mon Oct 18 09:47:50 PDT 2010
On Mon, 18 Oct 2010 19:15:47 +0300, F. Almeida
<francisco.m.almeida at gmail.com> wrote:
> The version() { ... } blocks would greatly improve from support of
> boolean operators, which would make code much more readable.
>
> Let us assume, for example, that I have several version identifiers
> (VERSION1, VERSION2, VERSION3, VERSION4, etc.) and that a block of
> code may be compiled in the cases of VERSION1 or VERSION3. It would
> prove the simplest if one could simply use boolean operators to
> express combinations of valid versions and thus be able to do
>
>
> version(VERSION1 || VERSION3)
> {
> // ...
> }
I remember reading somewhere that this limitation is deliberate.
I believe the reason for this is that programmers with a C background will
tend to abuse this feature to create near-unreadable code (#ifdef mess).
The solution (workaround) for this, is to create new versions for specific
features you wish to enable/disable. For example:
version(Demo) {} else version(Lite) {} else { version = EnableFeatureX; }
version(EnableFeatureX) { ... }
One thing people seem to agree with is that version statements could use
the negation (!) operator. Then the above could be written as:
version(!Demo) version(!Lite) { version = EnableFeatureX; }
--
Best regards,
Vladimir mailto:vladimir at thecybershadow.net
More information about the Digitalmars-d
mailing list