Final by default?
Rikki Cattermole
alphaglosined at gmail.com
Fri Mar 14 04:25:50 PDT 2014
On Friday, 14 March 2014 at 10:30:47 UTC, Rikki Cattermole wrote:
> Another option is using pure functions and static if's.
>
> const bool ProgrammingSections = getProgrammingSections;
> const bool PasteBinFullSection = getPasteBinFullSection;
>
> pure bool getProgrammingSections() {
> if (CompleteSite) {
> return true;
> } else {
> return false;
> }
> }
>
> pure bool getPasteBinFullSection() {
> if (CompleteSite || ProgrammingSections) {
> return true;
> } else {
> return false;
> }
> }
>
> static if (ProgrammingSections) {
> // yay programming
> }
>
>
> static if (PasteBinFullSection) {
> // Ooo pastebin!
> }
>
>
> Also works rather well through different modules.
Or for more advanced usage that could be quite useful in phobos:
pure bool isVersionDefinedAnd(ARGS...)() {
foreach(name; ARGS) {
mixin("version(" ~ name ~ ") {} else return false;");
}
return true;
}
enum isLinux1And = isVersionDefinedAnd!("linux");
enum isLinux2And = isVersionDefinedAnd!("linux", "Posix");
pragma(msg, isLinux1And);
pragma(msg, isLinux2And);
pure bool isVersionDefinedOr(ARGS...)() {
foreach(name; ARGS) {
mixin("version(" ~ name ~ ") return true;");
}
return false;
}
enum isMainPlatform = isVersionDefinedOr!("linux", "Windows",
"Posix", "Android", "OSX");
pragma(msg, isMainPlatform);
More information about the Digitalmars-d
mailing list