Back to Mame

0.9.8: setup.hpp Source File

3rdparty/glm/doc/api/a00098_source.html

latest31.8 KB
Original Source

| | 0.9.8 |

setup.hpp

Go to the documentation of this file.

1

4 #pragma once

5

6 #if (defined(GLM_FORCE_SWIZZLE) || defined(GLM_SWIZZLE)) && defined(GLM_FORCE_UNRESTRICTED_GENTYPE)

7 # error "Both GLM_FORCE_SWIZZLE and GLM_FORCE_UNRESTRICTED_GENTYPE can't be defined at the same time"

8 #endif

9

11 // Messages

12

13 #ifdef GLM_MESSAGES

14 # pragma message("GLM: GLM_MESSAGES is deprecated, use GLM_FORCE_MESSAGES instead")

15 #endif

16

17 #define GLM_MESSAGES_ENABLED 1

18 #define GLM_MESSAGES_DISABLE 0

19

20 #if defined(GLM_FORCE_MESSAGES) || defined(GLM_MESSAGES)

21 # undef GLM_MESSAGES

22 # define GLM_MESSAGES GLM_MESSAGES_ENABLED

23 #else

24 # undef GLM_MESSAGES

25 # define GLM_MESSAGES GLM_MESSAGES_DISABLE

26 #endif

27

28 #include <cassert>

29 #include <cstddef>

30 #include "../simd/platform.h"

31

33 // Version

34

35 #define GLM_VERSION 98

36 #define GLM_VERSION_MAJOR 0

37 #define GLM_VERSION_MINOR 9

38 #define GLM_VERSION_PATCH 8

39 #define GLM_VERSION_REVISION 0

40

41 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_VERSION_DISPLAYED)

42 # define GLM_MESSAGE_VERSION_DISPLAYED

43 # pragma message ("GLM: version 0.9.8.0")

44 #endif//GLM_MESSAGES

45

46 // Report compiler detection

47 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_COMPILER_DISPLAYED)

48 # define GLM_MESSAGE_COMPILER_DISPLAYED

49 # if GLM_COMPILER & GLM_COMPILER_CUDA

50 # pragma message("GLM: CUDA compiler detected")

51 # elif GLM_COMPILER & GLM_COMPILER_VC

52 # pragma message("GLM: Visual C++ compiler detected")

53 # elif GLM_COMPILER & GLM_COMPILER_CLANG

54 # pragma message("GLM: Clang compiler detected")

55 # elif GLM_COMPILER & GLM_COMPILER_INTEL

56 # pragma message("GLM: Intel Compiler detected")

57 # elif GLM_COMPILER & GLM_COMPILER_GCC

58 # pragma message("GLM: GCC compiler detected")

59 # else

60 # pragma message("GLM: Compiler not detected")

61 # endif

62 #endif//GLM_MESSAGES

63

65 // Build model

66

67 #if defined(__arch64__) || defined(__LP64__) || defined(_M_X64) || defined(__ppc64__) || defined(__x86_64__)

68 # define GLM_MODEL GLM_MODEL_64

69 #elif defined(__i386__) || defined(__ppc__)

70 # define GLM_MODEL GLM_MODEL_32

71 #else

72 # define GLM_MODEL GLM_MODEL_32

73 #endif//

74

75 #if !defined(GLM_MODEL) && GLM_COMPILER != 0

76 # error "GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message."

77 #endif//GLM_MODEL

78

79 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_MODEL_DISPLAYED)

80 # define GLM_MESSAGE_MODEL_DISPLAYED

81 # if(GLM_MODEL == GLM_MODEL_64)

82 # pragma message("GLM: 64 bits model")

83 # elif(GLM_MODEL == GLM_MODEL_32)

84 # pragma message("GLM: 32 bits model")

85 # endif//GLM_MODEL

86 #endif//GLM_MESSAGES

87

88 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_ARCH_DISPLAYED)

89 # define GLM_MESSAGE_ARCH_DISPLAYED

90 # if(GLM_ARCH == GLM_ARCH_PURE)

91 # pragma message("GLM: Platform independent code")

92 # elif(GLM_ARCH == GLM_ARCH_AVX2)

93 # pragma message("GLM: AVX2 instruction set")

94 # elif(GLM_ARCH == GLM_ARCH_AVX)

95 # pragma message("GLM: AVX instruction set")

96 # elif(GLM_ARCH == GLM_ARCH_SSE42)

97 # pragma message("GLM: SSE4.2 instruction set")

98 # elif(GLM_ARCH == GLM_ARCH_SSE41)

99 # pragma message("GLM: SSE4.1 instruction set")

100 # elif(GLM_ARCH == GLM_ARCH_SSSE3)

101 # pragma message("GLM: SSSE3 instruction set")

102 # elif(GLM_ARCH == GLM_ARCH_SSE3)

103 # pragma message("GLM: SSE3 instruction set")

104 # elif(GLM_ARCH == GLM_ARCH_SSE2)

105 # pragma message("GLM: SSE2 instruction set")

106 # elif(GLM_ARCH == GLM_ARCH_X86)

107 # pragma message("GLM: x86 instruction set")

108 # elif(GLM_ARCH == GLM_ARCH_NEON)

109 # pragma message("GLM: NEON instruction set")

110 # elif(GLM_ARCH == GLM_ARCH_ARM)

111 # pragma message("GLM: ARM instruction set")

112 # elif(GLM_ARCH == GLM_ARCH_MIPS)

113 # pragma message("GLM: MIPS instruction set")

114 # elif(GLM_ARCH == GLM_ARCH_PPC)

115 # pragma message("GLM: PowerPC architechture")

116 # endif//GLM_ARCH

117 #endif//GLM_MESSAGES

118

120 // C++ Version

121

122 // User defines: GLM_FORCE_CXX98, GLM_FORCE_CXX03, GLM_FORCE_CXX11, GLM_FORCE_CXX14

123

124 #define GLM_LANG_CXX98_FLAG (1 << 1)

125 #define GLM_LANG_CXX03_FLAG (1 << 2)

126 #define GLM_LANG_CXX0X_FLAG (1 << 3)

127 #define GLM_LANG_CXX11_FLAG (1 << 4)

128 #define GLM_LANG_CXX1Y_FLAG (1 << 5)

129 #define GLM_LANG_CXX14_FLAG (1 << 6)

130 #define GLM_LANG_CXX1Z_FLAG (1 << 7)

131 #define GLM_LANG_CXXMS_FLAG (1 << 8)

132 #define GLM_LANG_CXXGNU_FLAG (1 << 9)

133

134 #define GLM_LANG_CXX98 GLM_LANG_CXX98_FLAG

135 #define GLM_LANG_CXX03 (GLM_LANG_CXX98 | GLM_LANG_CXX03_FLAG)

136 #define GLM_LANG_CXX0X (GLM_LANG_CXX03 | GLM_LANG_CXX0X_FLAG)

137 #define GLM_LANG_CXX11 (GLM_LANG_CXX0X | GLM_LANG_CXX11_FLAG)

138 #define GLM_LANG_CXX1Y (GLM_LANG_CXX11 | GLM_LANG_CXX1Y_FLAG)

139 #define GLM_LANG_CXX14 (GLM_LANG_CXX1Y | GLM_LANG_CXX14_FLAG)

140 #define GLM_LANG_CXX1Z (GLM_LANG_CXX14 | GLM_LANG_CXX1Z_FLAG)

141 #define GLM_LANG_CXXMS GLM_LANG_CXXMS_FLAG

142 #define GLM_LANG_CXXGNU GLM_LANG_CXXGNU_FLAG

143

144 #if defined(GLM_FORCE_CXX14)

145 # undef GLM_FORCE_CXX11

146 # undef GLM_FORCE_CXX03

147 # undef GLM_FORCE_CXX98

148 # define GLM_LANG GLM_LANG_CXX14

149 #elif defined(GLM_FORCE_CXX11)

150 # undef GLM_FORCE_CXX03

151 # undef GLM_FORCE_CXX98

152 # define GLM_LANG GLM_LANG_CXX11

153 #elif defined(GLM_FORCE_CXX03)

154 # undef GLM_FORCE_CXX98

155 # define GLM_LANG GLM_LANG_CXX03

156 #elif defined(GLM_FORCE_CXX98)

157 # define GLM_LANG GLM_LANG_CXX98

158 #else

159 # if GLM_COMPILER & GLM_COMPILER_CLANG

160 # if __cplusplus >= 201402L // GLM_COMPILER_CLANG34 + -std=c++14

161 # define GLM_LANG GLM_LANG_CXX14

162 # elif __has_feature(cxx_decltype_auto) && __has_feature(cxx_aggregate_nsdmi) // GLM_COMPILER_CLANG33 + -std=c++1y

163 # define GLM_LANG GLM_LANG_CXX1Y

164 # elif __cplusplus >= 201103L // GLM_COMPILER_CLANG33 + -std=c++11

165 # define GLM_LANG GLM_LANG_CXX11

166 # elif __has_feature(cxx_static_assert) // GLM_COMPILER_CLANG29 + -std=c++11

167 # define GLM_LANG GLM_LANG_CXX0X

168 # elif __cplusplus >= 199711L

169 # define GLM_LANG GLM_LANG_CXX98

170 # else

171 # define GLM_LANG GLM_LANG_CXX

172 # endif

173 # elif GLM_COMPILER & GLM_COMPILER_GCC

174 # if __cplusplus >= 201402L

175 # define GLM_LANG GLM_LANG_CXX14

176 # elif __cplusplus >= 201103L

177 # define GLM_LANG GLM_LANG_CXX11

178 # elif defined(__GXX_EXPERIMENTAL_CXX0X__)

179 # define GLM_LANG GLM_LANG_CXX0X

180 # else

181 # define GLM_LANG GLM_LANG_CXX98

182 # endif

183 # elif GLM_COMPILER & GLM_COMPILER_VC

184 # ifdef _MSC_EXTENSIONS

185 # if __cplusplus >= 201402L

186 # define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_CXXMS_FLAG)

187 //# elif GLM_COMPILER >= GLM_COMPILER_VC2015

188 //# define GLM_LANG (GLM_LANG_CXX1Y | GLM_LANG_CXXMS_FLAG)

189 # elif __cplusplus >= 201103L

190 # define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_CXXMS_FLAG)

191 # elif GLM_COMPILER >= GLM_COMPILER_VC2010

192 # define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_CXXMS_FLAG)

193 # elif __cplusplus >= 199711L

194 # define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_CXXMS_FLAG)

195 # else

196 # define GLM_LANG (GLM_LANG_CXX | GLM_LANG_CXXMS_FLAG)

197 # endif

198 # else

199 # if __cplusplus >= 201402L

200 # define GLM_LANG GLM_LANG_CXX14

201 # elif __cplusplus >= 201103L

202 # define GLM_LANG GLM_LANG_CXX11

203 # elif GLM_COMPILER >= GLM_COMPILER_VC2010

204 # define GLM_LANG GLM_LANG_CXX0X

205 # elif __cplusplus >= 199711L

206 # define GLM_LANG GLM_LANG_CXX98

207 # else

208 # define GLM_LANG GLM_LANG_CXX

209 # endif

210 # endif

211 # elif GLM_COMPILER & GLM_COMPILER_INTEL

212 # ifdef _MSC_EXTENSIONS

213 # define GLM_MSC_EXT GLM_LANG_CXXMS_FLAG

214 # else

215 # define GLM_MSC_EXT 0

216 # endif

217 # if __cplusplus >= 201402L

218 # define GLM_LANG (GLM_LANG_CXX14 | GLM_MSC_EXT)

219 # elif __cplusplus >= 201103L

220 # define GLM_LANG (GLM_LANG_CXX11 | GLM_MSC_EXT)

221 # elif __INTEL_CXX11_MODE__

222 # define GLM_LANG (GLM_LANG_CXX0X | GLM_MSC_EXT)

223 # elif __cplusplus >= 199711L

224 # define GLM_LANG (GLM_LANG_CXX98 | GLM_MSC_EXT)

225 # else

226 # define GLM_LANG (GLM_LANG_CXX | GLM_MSC_EXT)

227 # endif

228 # elif GLM_COMPILER & GLM_COMPILER_CUDA

229 # ifdef _MSC_EXTENSIONS

230 # define GLM_MSC_EXT GLM_LANG_CXXMS_FLAG

231 # else

232 # define GLM_MSC_EXT 0

233 # endif

234 # if GLM_COMPILER >= GLM_COMPILER_CUDA75

235 # define GLM_LANG (GLM_LANG_CXX0X | GLM_MSC_EXT)

236 # else

237 # define GLM_LANG (GLM_LANG_CXX98 | GLM_MSC_EXT)

238 # endif

239 # else // Unknown compiler

240 # if __cplusplus >= 201402L

241 # define GLM_LANG GLM_LANG_CXX14

242 # elif __cplusplus >= 201103L

243 # define GLM_LANG GLM_LANG_CXX11

244 # elif __cplusplus >= 199711L

245 # define GLM_LANG GLM_LANG_CXX98

246 # else

247 # define GLM_LANG GLM_LANG_CXX // Good luck with that!

248 # endif

249 # ifndef GLM_FORCE_PURE

250 # define GLM_FORCE_PURE

251 # endif

252 # endif

253 #endif

254

255 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_LANG_DISPLAYED)

256 # define GLM_MESSAGE_LANG_DISPLAYED

257

258 # if GLM_LANG & GLM_LANG_CXX1Z_FLAG

259 # pragma message("GLM: C++1z")

260 # elif GLM_LANG & GLM_LANG_CXX14_FLAG

261 # pragma message("GLM: C++14")

262 # elif GLM_LANG & GLM_LANG_CXX1Y_FLAG

263 # pragma message("GLM: C++1y")

264 # elif GLM_LANG & GLM_LANG_CXX11_FLAG

265 # pragma message("GLM: C++11")

266 # elif GLM_LANG & GLM_LANG_CXX0X_FLAG

267 # pragma message("GLM: C++0x")

268 # elif GLM_LANG & GLM_LANG_CXX03_FLAG

269 # pragma message("GLM: C++03")

270 # elif GLM_LANG & GLM_LANG_CXX98_FLAG

271 # pragma message("GLM: C++98")

272 # else

273 # pragma message("GLM: C++ language undetected")

274 # endif//GLM_LANG

275

276 # if GLM_LANG & (GLM_LANG_CXXGNU_FLAG | GLM_LANG_CXXMS_FLAG)

277 # pragma message("GLM: Language extensions enabled")

278 # endif//GLM_LANG

279 #endif//GLM_MESSAGES

280

282 // Has of C++ features

283

284 // http://clang.llvm.org/cxx\_status.html

285 // http://gcc.gnu.org/projects/cxx0x.html

286 // http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx

287

288 #if GLM_COMPILER & GLM_COMPILER_CLANG

289 # if defined(_LIBCPP_VERSION) && GLM_LANG & GLM_LANG_CXX11_FLAG

290 # define GLM_HAS_CXX11_STL 1

291 # else

292 # define GLM_HAS_CXX11_STL 0

293 # endif

294 #else

295 # define GLM_HAS_CXX11_STL ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

296 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC48)) || \

297 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)) || \

298 ((GLM_PLATFORM != GLM_PLATFORM_WINDOWS) && (GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL15))))

299 #endif

300

301 // N1720

302 #if GLM_COMPILER & GLM_COMPILER_CLANG

303 # define GLM_HAS_STATIC_ASSERT __has_feature(cxx_static_assert)

304 #elif GLM_LANG & GLM_LANG_CXX11_FLAG

305 # define GLM_HAS_STATIC_ASSERT 1

306 #else

307 # define GLM_HAS_STATIC_ASSERT ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

308 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC43)) || \

309 ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \

310 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2010))))

311 #endif

312

313 // N1988

314 #if GLM_LANG & GLM_LANG_CXX11_FLAG

315 # define GLM_HAS_EXTENDED_INTEGER_TYPE 1

316 #else

317 # define GLM_HAS_EXTENDED_INTEGER_TYPE (\

318 ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012)) || \

319 ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CUDA)) || \

320 ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC43)) || \

321 ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CLANG) && (GLM_COMPILER >= GLM_COMPILER_CLANG30)))

322 #endif

323

324 // N2235

325 #if GLM_COMPILER & GLM_COMPILER_CLANG

326 # define GLM_HAS_CONSTEXPR __has_feature(cxx_constexpr)

327 # define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR

328 #elif GLM_LANG & GLM_LANG_CXX11_FLAG

329 # define GLM_HAS_CONSTEXPR 1

330 # define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR

331 #else

332 # define GLM_HAS_CONSTEXPR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

333 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC48)))) // GCC 4.6 support constexpr but there is a compiler bug causing a crash

334 # define GLM_HAS_CONSTEXPR_PARTIAL (GLM_HAS_CONSTEXPR || ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2015)))

335 #endif

336

337 // N2672

338 #if GLM_COMPILER & GLM_COMPILER_CLANG

339 # define GLM_HAS_INITIALIZER_LISTS __has_feature(cxx_generalized_initializers)

340 #elif GLM_LANG & GLM_LANG_CXX11_FLAG

341 # define GLM_HAS_INITIALIZER_LISTS 1

342 #else

343 # define GLM_HAS_INITIALIZER_LISTS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

344 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC44)) || \

345 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)) || \

346 ((GLM_COMPILER & GLM_COMPILER_CUDA) && (GLM_COMPILER >= GLM_COMPILER_CUDA75))))

347 #endif

348

349 // N2544 Unrestricted unions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf

350 #if GLM_COMPILER & GLM_COMPILER_CLANG

351 # define GLM_HAS_UNRESTRICTED_UNIONS __has_feature(cxx_unrestricted_unions)

352 #elif GLM_LANG & (GLM_LANG_CXX11_FLAG | GLM_LANG_CXXMS_FLAG)

353 # define GLM_HAS_UNRESTRICTED_UNIONS 1

354 #else

355 # define GLM_HAS_UNRESTRICTED_UNIONS (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

356 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_LANG & GLM_LANG_CXXMS_FLAG)) || \

357 ((GLM_COMPILER & GLM_COMPILER_CUDA) && (GLM_COMPILER >= GLM_COMPILER_CUDA75)) || \

358 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC46)))

359 #endif

360

361 // N2346

362 #if defined(GLM_FORCE_UNRESTRICTED_GENTYPE)

363 # define GLM_HAS_DEFAULTED_FUNCTIONS 0

364 #elif GLM_COMPILER & GLM_COMPILER_CLANG

365 # define GLM_HAS_DEFAULTED_FUNCTIONS __has_feature(cxx_defaulted_functions)

366 #elif GLM_LANG & GLM_LANG_CXX11_FLAG

367 # define GLM_HAS_DEFAULTED_FUNCTIONS 1

368 #else

369 # define GLM_HAS_DEFAULTED_FUNCTIONS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

370 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC44)) || \

371 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)) || \

372 ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL12)) || \

373 (GLM_COMPILER & GLM_COMPILER_CUDA)))

374 #endif

375

376 // N2118

377 #if GLM_COMPILER & GLM_COMPILER_CLANG

378 # define GLM_HAS_RVALUE_REFERENCES __has_feature(cxx_rvalue_references)

379 #elif GLM_LANG & GLM_LANG_CXX11_FLAG

380 # define GLM_HAS_RVALUE_REFERENCES 1

381 #else

382 # define GLM_HAS_RVALUE_REFERENCES ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

383 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC43)) || \

384 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012)) || \

385 ((GLM_COMPILER & GLM_COMPILER_CUDA) && (GLM_COMPILER >= GLM_COMPILER_CUDA50))))

386 #endif

387

388 // N2437 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf

389 #if GLM_COMPILER & GLM_COMPILER_CLANG

390 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS __has_feature(cxx_explicit_conversions)

391 #elif GLM_LANG & GLM_LANG_CXX11_FLAG

392 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS 1

393 #else

394 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

395 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC45)) || \

396 ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \

397 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)) || \

398 ((GLM_COMPILER & GLM_COMPILER_CUDA) && (GLM_COMPILER >= GLM_COMPILER_CUDA50))))

399 #endif

400

401 // N2258 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf

402 #if GLM_COMPILER & GLM_COMPILER_CLANG

403 # define GLM_HAS_TEMPLATE_ALIASES __has_feature(cxx_alias_templates)

404 #elif GLM_LANG & GLM_LANG_CXX11_FLAG

405 # define GLM_HAS_TEMPLATE_ALIASES 1

406 #else

407 # define GLM_HAS_TEMPLATE_ALIASES ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

408 ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL12_1)) || \

409 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC47)) || \

410 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)) || \

411 ((GLM_COMPILER & GLM_COMPILER_CUDA) && (GLM_COMPILER >= GLM_COMPILER_CUDA50))))

412 #endif

413

414 // N2930 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html

415 #if GLM_COMPILER & GLM_COMPILER_CLANG

416 # define GLM_HAS_RANGE_FOR __has_feature(cxx_range_for)

417 #elif GLM_LANG & GLM_LANG_CXX11_FLAG

418 # define GLM_HAS_RANGE_FOR 1

419 #else

420 # define GLM_HAS_RANGE_FOR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

421 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC46)) || \

422 ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL13)) || \

423 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012)) || \

424 ((GLM_COMPILER & GLM_COMPILER_CUDA) && (GLM_COMPILER >= GLM_COMPILER_CUDA50))))

425 #endif

426

427 //

428 #if GLM_LANG & GLM_LANG_CXX11_FLAG

429 # define GLM_HAS_ASSIGNABLE 1

430 #else

431 # define GLM_HAS_ASSIGNABLE ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

432 ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC49))))

433 #endif

434

435 //

436 #define GLM_HAS_TRIVIAL_QUERIES 0

437

438 //

439 #if GLM_LANG & GLM_LANG_CXX11_FLAG

440 # define GLM_HAS_MAKE_SIGNED 1

441 #else

442 # define GLM_HAS_MAKE_SIGNED ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\

443 ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)) || \

444 ((GLM_COMPILER & GLM_COMPILER_CUDA) && (GLM_COMPILER >= GLM_COMPILER_CUDA50))))

445 #endif

446

447 #if GLM_ARCH == GLM_ARCH_PURE

448 # define GLM_HAS_BITSCAN_WINDOWS 0

449 #else

450 # define GLM_HAS_BITSCAN_WINDOWS ((GLM_PLATFORM & GLM_PLATFORM_WINDOWS) && (\

451 (GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_INTEL))))

452 #endif

453

454 // OpenMP

455 #ifdef _OPENMP

456 # if GLM_COMPILER & GLM_COMPILER_GCC

457 # if GLM_COMPILER >= GLM_COMPILER_GCC61

458 # define GLM_HAS_OPENMP 45

459 # elif GLM_COMPILER >= GLM_COMPILER_GCC49

460 # define GLM_HAS_OPENMP 40

461 # elif GLM_COMPILER >= GLM_COMPILER_GCC47

462 # define GLM_HAS_OPENMP 31

463 # elif GLM_COMPILER >= GLM_COMPILER_GCC44

464 # define GLM_HAS_OPENMP 30

465 # elif GLM_COMPILER >= GLM_COMPILER_GCC42

466 # define GLM_HAS_OPENMP 25

467 # else

468 # define GLM_HAS_OPENMP 0

469 # endif

470 # elif GLM_COMPILER & GLM_COMPILER_CLANG

471 # if GLM_COMPILER >= GLM_COMPILER_CLANG38

472 # define GLM_HAS_OPENMP 31

473 # else

474 # define GLM_HAS_OPENMP 0

475 # endif

476 # elif GLM_COMPILER & GLM_COMPILER_VC

477 # if GLM_COMPILER >= GLM_COMPILER_VC2010

478 # define GLM_HAS_OPENMP 20

479 # else

480 # define GLM_HAS_OPENMP 0

481 # endif

482 # elif GLM_COMPILER & GLM_COMPILER_INTEL

483 # if GLM_COMPILER >= GLM_COMPILER_INTEL16

484 # define GLM_HAS_OPENMP 40

485 # elif GLM_COMPILER >= GLM_COMPILER_INTEL12

486 # define GLM_HAS_OPENMP 31

487 # else

488 # define GLM_HAS_OPENMP 0

489 # endif

490 # else

491 # define GLM_HAS_OPENMP 0

492 # endif// GLM_COMPILER & GLM_COMPILER_VC

493 #endif

494

496 // Static assert

497

498 #if GLM_HAS_STATIC_ASSERT

499 # define GLM_STATIC_ASSERT(x, message) static_assert(x, message)

500 #elif defined(BOOST_STATIC_ASSERT)

501 # define GLM_STATIC_ASSERT(x, message) BOOST_STATIC_ASSERT(x)

502 #elif GLM_COMPILER & GLM_COMPILER_VC

503 # define GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1]

504 #else

505 # define GLM_STATIC_ASSERT(x, message)

506 # define GLM_STATIC_ASSERT_NULL

507 #endif//GLM_LANG

508

510 // Qualifiers

511

512 #if GLM_COMPILER & GLM_COMPILER_CUDA

513 # define GLM_CUDA_FUNC_DEF __device__ __host__

514 # define GLM_CUDA_FUNC_DECL __device__ __host__

515 #else

516 # define GLM_CUDA_FUNC_DEF

517 # define GLM_CUDA_FUNC_DECL

518 #endif

519

520 #if GLM_COMPILER & GLM_COMPILER_GCC

521 # define GLM_VAR_USED __attribute__ ((unused))

522 #else

523 # define GLM_VAR_USED

524 #endif

525

526 #if defined(GLM_FORCE_INLINE)

527 # if GLM_COMPILER & GLM_COMPILER_VC

528 # define GLM_INLINE __forceinline

529 # define GLM_NEVER_INLINE __declspec((noinline))

530 # elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)

531 # define GLM_INLINE inline __attribute__((__always_inline__))

532 # define GLM_NEVER_INLINE __attribute__((__noinline__))

533 # elif GLM_COMPILER & GLM_COMPILER_CUDA

534 # define GLM_INLINE __forceinline__

535 # define GLM_NEVER_INLINE __noinline__

536 # else

537 # define GLM_INLINE inline

538 # define GLM_NEVER_INLINE

539 # endif//GLM_COMPILER

540 #else

541 # define GLM_INLINE inline

542 # define GLM_NEVER_INLINE

543 #endif//defined(GLM_FORCE_INLINE)

544

545 #define GLM_FUNC_DECL GLM_CUDA_FUNC_DECL

546 #define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE

547

549 // Swizzle operators

550

551 // User defines: GLM_FORCE_SWIZZLE

552

553 #ifdef GLM_SWIZZLE

554 # pragma message("GLM: GLM_SWIZZLE is deprecated, use GLM_FORCE_SWIZZLE instead")

555 #endif

556

557 #define GLM_SWIZZLE_ENABLED 1

558 #define GLM_SWIZZLE_DISABLE 0

559

560 #if defined(GLM_FORCE_SWIZZLE) || defined(GLM_SWIZZLE)

561 # undef GLM_SWIZZLE

562 # define GLM_SWIZZLE GLM_SWIZZLE_ENABLED

563 #else

564 # undef GLM_SWIZZLE

565 # define GLM_SWIZZLE GLM_SWIZZLE_DISABLE

566 #endif

567

568 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_SWIZZLE_DISPLAYED)

569 # define GLM_MESSAGE_SWIZZLE_DISPLAYED

570 # if GLM_SWIZZLE == GLM_SWIZZLE_ENABLED

571 # pragma message("GLM: Swizzling operators enabled")

572 # else

573 # pragma message("GLM: Swizzling operators disabled, #define GLM_SWIZZLE to enable swizzle operators")

574 # endif

575 #endif//GLM_MESSAGES

576

578 // Allows using not basic types as genType

579

580 // #define GLM_FORCE_UNRESTRICTED_GENTYPE

581

582 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_UNRESTRICTED_GENTYPE_DISPLAYED)

583 # define GLM_MESSAGE_UNRESTRICTED_GENTYPE_DISPLAYED

584 # ifdef GLM_FORCE_UNRESTRICTED_GENTYPE

585 # pragma message("GLM: Use unrestricted genType")

586 # endif

587 #endif//GLM_MESSAGES

588

590 // Clip control

591

592 #ifdef GLM_DEPTH_ZERO_TO_ONE // Legacy 0.9.8 development

593 # error Define GLM_FORCE_DEPTH_ZERO_TO_ONE instead of GLM_DEPTH_ZERO_TO_ONE to use 0 to 1 clip space.

594 #endif

595

596 #define GLM_DEPTH_ZERO_TO_ONE 0x00000001

597 #define GLM_DEPTH_NEGATIVE_ONE_TO_ONE 0x00000002

598

599 #ifdef GLM_FORCE_DEPTH_ZERO_TO_ONE

600 # define GLM_DEPTH_CLIP_SPACE GLM_DEPTH_ZERO_TO_ONE

601 #else

602 # define GLM_DEPTH_CLIP_SPACE GLM_DEPTH_NEGATIVE_ONE_TO_ONE

603 #endif

604

605 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_DEPTH_DISPLAYED)

606 # define GLM_MESSAGE_DEPTH_DISPLAYED

607 # if GLM_DEPTH_CLIP_SPACE == GLM_DEPTH_ZERO_TO_ONE

608 # pragma message("GLM: Depth clip space: Zero to one")

609 # else

610 # pragma message("GLM: Depth clip space: negative one to one")

611 # endif

612 #endif//GLM_MESSAGES

613

615 // Coordinate system, define GLM_FORCE_LEFT_HANDED before including GLM

616 // to use left handed coordinate system by default.

617

618 #ifdef GLM_LEFT_HANDED // Legacy 0.9.8 development

619 # error Define GLM_FORCE_LEFT_HANDED instead of GLM_LEFT_HANDED left handed coordinate system by default.

620 #endif

621

622 #define GLM_LEFT_HANDED 0x00000001 // For DirectX, Metal, Vulkan

623 #define GLM_RIGHT_HANDED 0x00000002 // For OpenGL, default in GLM

624

625 #ifdef GLM_FORCE_LEFT_HANDED

626 # define GLM_COORDINATE_SYSTEM GLM_LEFT_HANDED

627 #else

628 # define GLM_COORDINATE_SYSTEM GLM_RIGHT_HANDED

629 #endif

630

631 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_HANDED_DISPLAYED)

632 # define GLM_MESSAGE_HANDED_DISPLAYED

633 # if GLM_COORDINATE_SYSTEM == GLM_LEFT_HANDED

634 # pragma message("GLM: Coordinate system: left handed")

635 # else

636 # pragma message("GLM: Coordinate system: right handed")

637 # endif

638 #endif//GLM_MESSAGES

639

641 // Qualifiers

642

643 #if (GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS))

644 # define GLM_DEPRECATED __declspec(deprecated)

645 # define GLM_ALIGN(x) __declspec(align(x))

646 # define GLM_ALIGNED_STRUCT(x) struct __declspec(align(x))

647 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef __declspec(align(alignment)) type name

648 # define GLM_RESTRICT_FUNC __declspec(restrict)

649 # define GLM_RESTRICT __restrict

650 # if GLM_COMPILER >= GLM_COMPILER_VC2013

651 # define GLM_VECTOR_CALL __vectorcall

652 # else

653 # define GLM_VECTOR_CALL

654 # endif

655 #elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG | GLM_COMPILER_INTEL)

656 # define GLM_DEPRECATED __attribute__((__deprecated__))

657 # define GLM_ALIGN(x) __attribute__((aligned(x)))

658 # define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x)))

659 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __attribute__((aligned(alignment)))

660 # define GLM_RESTRICT_FUNC __restrict__

661 # define GLM_RESTRICT __restrict__

662 # if GLM_COMPILER & GLM_COMPILER_CLANG

663 # if GLM_COMPILER >= GLM_COMPILER_CLANG37

664 # define GLM_VECTOR_CALL __vectorcall

665 # else

666 # define GLM_VECTOR_CALL

667 # endif

668 # else

669 # define GLM_VECTOR_CALL

670 # endif

671 #elif GLM_COMPILER & GLM_COMPILER_CUDA

672 # define GLM_DEPRECATED

673 # define GLM_ALIGN(x) __align__(x)

674 # define GLM_ALIGNED_STRUCT(x) struct __align__(x)

675 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __align__(x)

676 # define GLM_RESTRICT_FUNC __restrict__

677 # define GLM_RESTRICT __restrict__

678 # define GLM_VECTOR_CALL

679 #else

680 # define GLM_DEPRECATED

681 # define GLM_ALIGN

682 # define GLM_ALIGNED_STRUCT(x) struct

683 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name

684 # define GLM_RESTRICT_FUNC

685 # define GLM_RESTRICT

686 # define GLM_VECTOR_CALL

687 #endif//GLM_COMPILER

688

689 #if GLM_HAS_DEFAULTED_FUNCTIONS

690 # define GLM_DEFAULT = default

691 # ifdef GLM_FORCE_NO_CTOR_INIT

692 # define GLM_DEFAULT_CTOR = default

693 # else

694 # define GLM_DEFAULT_CTOR

695 # endif

696 #else

697 # define GLM_DEFAULT

698 # define GLM_DEFAULT_CTOR

699 #endif

700

701 #if GLM_HAS_CONSTEXPR

702 # define GLM_CONSTEXPR constexpr

703 # define GLM_CONSTEXPR_CTOR constexpr

704 # define GLM_RELAXED_CONSTEXPR constexpr

705 #elif GLM_HAS_CONSTEXPR_PARTIAL

706 # define GLM_CONSTEXPR constexpr

707 # define GLM_CONSTEXPR_CTOR

708 # define GLM_RELAXED_CONSTEXPR const

709 #else

710 # define GLM_CONSTEXPR

711 # define GLM_CONSTEXPR_CTOR

712 # define GLM_RELAXED_CONSTEXPR const

713 #endif

714

715 #if GLM_ARCH == GLM_ARCH_PURE

716 # define GLM_CONSTEXPR_SIMD GLM_CONSTEXPR

717 #else

718 # define GLM_CONSTEXPR_SIMD

719 #endif

720

721 #ifdef GLM_FORCE_EXPLICIT_CTOR

722 # define GLM_EXPLICIT explicit

723 #else

724 # define GLM_EXPLICIT

725 #endif

726

728

729 #define GLM_HAS_ALIGNED_TYPE GLM_HAS_UNRESTRICTED_UNIONS

730

732 // Length type

733

734 // User defines: GLM_FORCE_SIZE_T_LENGTH GLM_FORCE_SIZE_FUNC

735

736 namespace glm

737 {

738using std::size_t;

739 # if defined(GLM_FORCE_SIZE_T_LENGTH)

740typedef size_t length_t;

741 # else

742typedef int length_t;

743 # endif

744 }//namespace glm

745

746 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_FORCE_SIZE_T_LENGTH)

747 # define GLM_MESSAGE_FORCE_SIZE_T_LENGTH

748 # if defined GLM_FORCE_SIZE_T_LENGTH

749 # pragma message("GLM: .length() returns glm::length_t, a typedef of std::size_t")

750 # else

751 # pragma message("GLM: .length() returns glm::length_t, a typedef of int following the GLSL specification")

752 # endif

753 #endif//GLM_MESSAGES

754

756 // countof

757

758 #ifndef __has_feature

759 # define __has_feature(x) 0 // Compatibility with non-clang compilers.

760 #endif

761

762 #if GLM_HAS_CONSTEXPR_PARTIAL

763namespace glm

764 {

765template <typename T, std::size_t N>

766 constexpr std::size_t countof(T const (&)[N])

767 {

768return N;

769 }

770 }//namespace glm

771 # define GLM_COUNTOF(arr) glm::countof(arr)

772 #elif defined(_MSC_VER)

773 # define GLM_COUNTOF(arr) _countof(arr)

774 #else

775 # define GLM_COUNTOF(arr) sizeof(arr) / sizeof(arr[0])

776 #endif

777

779 // Uninitialize constructors

780

781 namespace glm

782 {

783enum ctor{uninitialize};

784 }//namespace glm

glm

Definition: _noise.hpp:11


Generated by 1.8.10