root/trunk/src/semitwist/util/os.d

Revision 202, 1.2 kB (checked in by Abscissa, 1 year ago)

(NB) all: Fixed: In D2, compile-time constants use the 'enum' abomination, not 'const'.

  • Property svn:eol-style set to native
Line 
1 // SemiTwist D Tools: Library
2 // Written in the D programming language.
3
4 module semitwist.util.os;
5
6 import semitwist.util.all;
7
8 private string genOSParam(string name, string[] values)
9 {
10     assert(values.length == OS_length, "Wrong number of OSes provided for OS param '"~name~"'");
11    
12     string str = "";
13     foreach(int i, string value; values)
14     {
15         string osStr = enumOSToString(cast(OS)i);
16
17         str ~=
18             "enum string "~name~"_"~osStr~" = "~escapeDDQS!string(value)~";\n"~
19             "static if(os == OS."~osStr~")\n"~
20             "    enum string "~name~" = "~name~"_"~osStr~";\n";
21     }
22     return str;
23 }
24
25 mixin(genEnum("OS", ["Windows"[], "Linux", "BSD", "OSX"]));
26 version(Windows) enum OS os = OS.Windows;
27 version(linux)   enum OS os = OS.Linux;
28 version(freebsd) enum OS os = OS.BSD;
29 version(OSX)     enum OS os = OS.OSX;
30
31 mixin(genOSParam("objExt",  [ ".obj" [], ".o", ".o", ".o" ]));
32 mixin(genOSParam("libExt",  [ ".lib" [], ".a", ".a", ".a" ]));
33 mixin(genOSParam("exeExt",  [ ".exe" [], "",   "",   ""   ]));
34 mixin(genOSParam("pathSep", [ "\\"   [], "/",  "/",  "/"  ]));
35 mixin(genOSParam("nlStr",   [ "\r\n" [], "\n", "\n", "\n" ]));
36 enum nlStr_Mac9 = "\r";
37
38 mixin(genOSParam("selfExeLink", [ ""[], "/proc/self/exe", "/proc/curproc/file", "/proc/curproc/file" ]));
Note: See TracBrowser for help on using the browser.