Update README.md
[nemesis.git] / Platform / PlatformBase.h
1 /*
2  Copyright (c) 2008-2010 TrueCrypt Developers Association. All rights reserved.
3
4  Governed by the TrueCrypt License 3.0 the full text of which is contained in
5  the file License.txt included in TrueCrypt binary and source code distribution
6  packages.
7 */
8
9 #ifndef TC_HEADER_Platform_PlatformBase
10 #define TC_HEADER_Platform_PlatformBase
11
12 #include <cstddef>
13 #include <list>
14 #include <map>
15 #include <memory>
16 #include <sstream>
17 #include <string>
18 #include <vector>
19
20 #ifndef _MSC_VER
21 #include <inttypes.h>
22 #endif
23
24 using namespace std;
25
26 #ifdef nullptr
27 #undef nullptr
28 #endif
29
30 #if !(defined(_MSC_VER) && _MSC_VER >= 1600)
31 #define nullptr 0
32 #endif
33
34 namespace TrueCrypt
35 {
36 #ifdef _MSC_VER
37 #       ifndef TC_INT_TYPES_DEFINED
38         typedef __int8 int8;
39         typedef __int16 int16;
40         typedef __int32 int32;
41         typedef __int64 int64;
42         typedef unsigned __int8 byte;
43         typedef unsigned __int16 uint16;
44         typedef unsigned __int32 uint32;
45         typedef unsigned __int64 uint64;
46 #       endif
47 #else
48         typedef int8_t int8;
49         typedef int16_t int16;
50         typedef int32_t int32;
51         typedef int64_t int64;
52         typedef uint8_t byte;
53         typedef uint16_t uint16;
54         typedef uint32_t uint32;
55         typedef uint64_t uint64;
56 #endif
57 }
58
59 #if (defined(_WIN32) || defined(_WIN64)) && !defined(TC_WINDOWS)
60 #       define TC_WINDOWS
61 #endif
62
63 #if defined(_DEBUG) && !defined(DEBUG)
64 #       define DEBUG
65 #endif
66
67 #ifndef TC_TO_STRING
68 #       define TC_TO_STRING2(n) #n
69 #       define TC_TO_STRING(n) TC_TO_STRING2(n)
70 #endif
71
72 #define TC_JOIN_ARGS(a,b) a##b
73 #define TC_JOIN(a,b) TC_JOIN_ARGS(a,b)
74
75 #ifdef __GNUC__
76         template <class T> string GetFunctionName (T pos)
77         {
78                 string s (pos);
79                 size_t p = s.find ('(');
80                 if (p == string::npos)
81                         return s;
82                 s = s.substr (0, p);
83                 p = s.find_last_of (" ");
84                 if (p == string::npos)
85                         return s;
86                 return s.substr (p + 1);
87         }
88 #       define SRC_POS (GetFunctionName (__PRETTY_FUNCTION__) += ":" TC_TO_STRING(__LINE__))
89 #       define TC_UNUSED_VAR __attribute__ ((unused))
90 #else
91 #       define SRC_POS (__FUNCTION__ ":" TC_TO_STRING(__LINE__))
92 #       define TC_UNUSED_VAR
93 #endif
94
95 #ifdef trace_point
96 #       undef trace_point
97 #endif
98
99 #ifdef trace_msg
100 #       undef trace_msg
101 #endif
102
103 #ifdef DEBUG
104 #       define if_debug(...) __VA_ARGS__
105
106 #       ifdef TC_WINDOWS
107 #               define trace_point OutputDebugStringA ((string (SRC_POS) + "\n").c_str())
108 #               define trace_msg(stream_args) do { stringstream s; s << (SRC_POS) << ": " << stream_args << endl; OutputDebugStringA (s.str().c_str()); } while (0)
109 #               define trace_msgw(stream_args) do { wstringstream s; s << (SRC_POS) << L": " << stream_args << endl; OutputDebugStringW (s.str().c_str()); } while (0)
110 #       else
111 #               include <iostream>
112 #               define trace_point cerr << (SRC_POS) << endl
113 #               define trace_msg(stream_args) cerr << (SRC_POS) << ": " << stream_args << endl
114 #               define trace_msgw(stream_args) cerr << (SRC_POS); wcerr << L": " << stream_args << endl
115 #       endif
116
117 #       include "Platform/SystemLog.h"
118 #       define trace_log_point SystemLog::WriteError (SRC_POS)
119 #       define trace_log_msg(stream_args) do { stringstream s; s << (SRC_POS) << ": " << stream_args; SystemLog::WriteError (s.str()); } while (0)
120
121 #else
122 #       define if_debug(...)
123 #       define trace_point
124 #       define trace_msg(...)
125 #       define trace_msgw(...)
126 #       define trace_log_point
127 #       define trace_log_msg(...)
128 #endif
129
130 #define trace_val(VAL) trace_msg (#VAL << '=' << (VAL));
131
132 #define array_capacity(arr) (sizeof (arr) / sizeof ((arr)[0]))
133
134 #endif // TC_HEADER_Platform_PlatformBase
This page took 0.023247 seconds and 3 git commands to generate. Download a nemesis OSX (sierra+high sierra, tested/working) binary, with fuse-ext3 via e2fsprogs, at this link. application and installer are signed by screwjack, llc. must install fuse with macFUSE layer first.