-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdefs.h
217 lines (182 loc) · 5.77 KB
/
defs.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
/******************************************************************************
*
* defs.h - Global defines, mostly platform-specific stuff
*
* $Id$
*
* Copyright 2000-2013 CrossWire Bible Society (http://www.crosswire.org)
* CrossWire Bible Society
* P. O. Box 2528
* Tempe, AZ 85280-2528
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation version 2.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
*/
// ----------------------------------------------------------------------------
//
// ----------------------------------------------------------------------------
#ifndef SWORDDEFS_H
#define SWORDDEFS_H
// support for compilers with no namespace support
// TODO: What is this? jansorg, why does NO_SWORD_NAMESPACE still define
// a C++ namespace, and then force using it? This makes no sense to me.
// see commit 1195
#ifdef NO_SWORD_NAMESPACE
#define SWORD_NAMESPACE_START namespace sword {
#define SWORD_NAMESPACE_END }; using namespace sword;
#elif defined(__cplusplus)
#define SWORD_NAMESPACE_START namespace sword {
#define SWORD_NAMESPACE_END }
#else
#define SWORD_NAMESPACE_START
#define SWORD_NAMESPACE_END
#endif
SWORD_NAMESPACE_START
// support for compilers with no RTTI
#define SWDYNAMIC_CAST(className, object) dynamic_cast<className *>(object)
#ifdef NODYNCAST
// avoid redefined warnings
#undef SWDYNAMIC_CAST
#define SWDYNAMIC_CAST(className, object) (className *)((object)?((object->getClass()->isAssignableFrom(#className))?object:0):0)
#endif
// support for compilers with no exception support
#define SWTRY try
#define SWCATCH(x) catch (x)
#ifdef _WIN32_WCE
#define SWTRY
#define SWCATCH(x) if (0)
#define GLOBCONFPATH "/Program Files/sword/sword.conf"
#endif
#ifdef ANDROID
#define _NO_IOSTREAM_
#undef SWTRY
#undef SWCATCH
#define SWTRY
#define SWCATCH(x) if (0)
#endif
// support for export / import of symbols from shared objects
// _declspec works in BC++ 5 and later, as well as VC++
#if defined(_MSC_VER)
# ifdef SWMAKINGDLL
# define SWDLLEXPORT _declspec( dllexport )
# define SWDLLEXPORT_DATA(type) _declspec( dllexport ) type
# define SWDLLEXPORT_CTORFN
# elif defined(SWUSINGDLL)
# define SWDLLEXPORT _declspec( dllimport )
# define SWDLLEXPORT_DATA(type) _declspec( dllimport ) type
# define SWDLLEXPORT_CTORFN
# else
# define SWDLLEXPORT
# define SWDLLEXPORT_DATA(type) type
# define SWDLLEXPORT_CTORFN
# endif
// support for deprecated annotation
# define SWDEPRECATED __declspec(deprecated("** WARNING: deprecated method **"))
#elif defined(__SWPM__)
# ifdef SWMAKINGDLL
# define SWDLLEXPORT _Export
# define SWDLLEXPORT_DATA(type) _Export type
# define SWDLLEXPORT_CTORFN
# elif defined(SWUSINGDLL)
# define SWDLLEXPORT _Export
# define SWDLLEXPORT_DATA(type) _Export type
# define SWDLLEXPORT_CTORFN
# else
# define SWDLLEXPORT
# define SWDLLEXPORT_DATA(type) type
# define SWDLLEXPORT_CTORFN
# endif
# define SWDEPRECATED
#elif defined(__GNUWIN32__)
# ifdef SWMAKINGDLL
# define SWDLLEXPORT __declspec( dllexport )
# define SWDLLEXPORT_DATA(type) __declspec( dllexport ) type
# define SWDLLEXPORT_CTORFN
# elif defined(SWUSINGDLL)
# define SWDLLEXPORT __declspec( dllimport )
# define SWDLLEXPORT_DATA(type) __declspec( dllimport ) type
# define SWDLLEXPORT_CTORFN
# else
# define SWDLLEXPORT
# define SWDLLEXPORT_DATA(type) type
# define SWDLLEXPORT_CTORFN
# endif
# define SWDEPRECATED __attribute__((__deprecated__))
#elif defined(__BORLANDC__)
#define NOVARMACS
# ifdef SWMAKINGDLL
# define SWDLLEXPORT _export
# define SWDLLEXPORT_DATA(type) __declspec( dllexport ) type
# define SWDLLEXPORT_CTORFN
# elif defined(SWUSINGDLL)
# define SWDLLEXPORT __declspec( dllimport )
# define SWDLLEXPORT_DATA(type) __declspec( dllimport ) type
# define SWDLLEXPORT_CTORFN
# else
# define SWDLLEXPORT
# define SWDLLEXPORT_DATA(type) type
# define SWDLLEXPORT_CTORFN
# endif
#define COMMENT SLASH(/)
#define SLASH(s) /##s
/* Use the following line to comment out all deprecation declarations so you
* get "no such method" errors in your code when you want to find them.
* Use the next line to put them back in.
*/
//# define SWDEPRECATED COMMENT
# define SWDEPRECATED
#define va_copy(dest, src) (dest = src)
#define unorm2_getNFKDInstance(x) unorm2_getInstance(NULL, "nfkc", UNORM2_DECOMPOSE, x)
#elif defined(__GNUC__)
# define SWDLLEXPORT
# define SWDLLEXPORT_DATA(type) type
# define SWDLLEXPORT_CTORFN
# define SWDEPRECATED __attribute__((__deprecated__))
#else
# define SWDLLEXPORT
# define SWDLLEXPORT_DATA(type) type
# define SWDLLEXPORT_CTORFN
# define SWDEPRECATED
#endif
// For ostream, istream ofstream
#if defined(__BORLANDC__) && defined( _RTLDLL )
# define SWDLLIMPORT __import
#else
# define SWDLLIMPORT
#endif
#ifndef NOVARMACS
#ifndef STRIPLOGD
#define SWLOGD(...) SWLog::getSystemLog()->logDebug(__VA_ARGS__)
#else
#define SWLOGD(...) (void)0
#endif
#ifndef STRIPLOGI
#define SWLOGI(...) SWLog::getSystemLog()->logInformation(__VA_ARGS__)
#define SWLOGTI(...) SWLog::getSystemLog()->logTimedInformation(__VA_ARGS__)
#else
#define SWLOGI(...) (void)0
#define SWLOGTI(...) (void)0
#endif
#else
#ifndef STRIPLOGD
#define SWLOGD SWLog::getSystemLog()->logDebug
#else
#define SWLOGD COMMENT
#endif
#ifndef STRIPLOGI
#define SWLOGI SWLog::getSystemLog()->logInformation
#define SWLOGTI SWLog::getSystemLog()->logTimedInformation
#else
#define SWLOGI COMMENT
#define SWLOGTI COMMENT
#endif
#endif
SWORD_NAMESPACE_END
#endif //SWORDDEFS_H