1 module des.util.helpers;
2
3 import core.runtime;
4 import std.file;
5 import std.path;
6 import std.algorithm;
7
8
9 /// `buildNormalizedPath`
10 string bnPath( string[] path... )
11 { return buildNormalizedPath( path ); }
12
13 /++
14 normalized path from executable dir,
15 no matter where the program was launched, result stable
16
17 code:
18 return bnPath( dirName( thisExePath ) ~ path );
19 +/
20 string appPath( string[] path... )
21 { return bnPath( dirName( thisExePath ) ~ path ); }
22
23 /// read text from app path file
24 string readAPF( string[] path... )
25 { return readText( appPath( path ) ); }
26
27 /// convert array of values to bit fields
28 auto packBitMask(T)( T[] list... )
29 { return reduce!((a,b)=>a|=b)(0,list); }
30
31 ///
32 unittest
33 {
34 assert( packBitMask!uint() == 0 );
35 auto a = 0b0001;
36 assert( packBitMask(a) == a );
37 auto b = 0b0010;
38 assert( packBitMask(b) == b );
39 auto c = 0b0011;
40 assert( packBitMask(a,b) == c );
41 }
42