Chris@16
|
1 // Boost.Units - A C++ library for zero-overhead dimensional analysis and
|
Chris@16
|
2 // unit/quantity manipulation and conversion
|
Chris@16
|
3 //
|
Chris@16
|
4 // Copyright (C) 2003-2008 Matthias Christian Schabel
|
Chris@16
|
5 // Copyright (C) 2008 Steven Watanabe
|
Chris@16
|
6 //
|
Chris@16
|
7 // Distributed under the Boost Software License, Version 1.0. (See
|
Chris@16
|
8 // accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
9 // http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
10
|
Chris@16
|
11 #ifndef BOOST_UNITS_CONFIG_HPP
|
Chris@16
|
12 #define BOOST_UNITS_CONFIG_HPP
|
Chris@16
|
13
|
Chris@16
|
14 #include <boost/config.hpp>
|
Chris@16
|
15 #include <boost/version.hpp>
|
Chris@16
|
16
|
Chris@16
|
17 #ifndef BOOST_UNITS_HAS_BOOST_TYPEOF
|
Chris@16
|
18 #if (BOOST_VERSION >= 103400)
|
Chris@16
|
19 ///INTERNAL ONLY
|
Chris@16
|
20 #define BOOST_UNITS_HAS_BOOST_TYPEOF 1
|
Chris@16
|
21 #else
|
Chris@16
|
22 ///INTERNAL ONLY
|
Chris@16
|
23 #define BOOST_UNITS_HAS_BOOST_TYPEOF 0
|
Chris@16
|
24 #endif
|
Chris@16
|
25 #endif
|
Chris@16
|
26
|
Chris@16
|
27 #if (BOOST_UNITS_HAS_BOOST_TYPEOF)
|
Chris@16
|
28 #include <boost/typeof/typeof.hpp>
|
Chris@16
|
29 ///INTERNAL ONLY
|
Chris@16
|
30 #define BOOST_UNITS_HAS_TYPEOF 1
|
Chris@16
|
31 #else
|
Chris@101
|
32 #if (__GNUC__ && __cplusplus)
|
Chris@16
|
33 ///INTERNAL ONLY
|
Chris@16
|
34 #define BOOST_UNITS_HAS_TYPEOF 1
|
Chris@16
|
35 ///INTERNAL ONLY
|
Chris@16
|
36 #define BOOST_UNITS_HAS_GNU_TYPEOF 1
|
Chris@16
|
37 #elif defined(__MWERKS__)
|
Chris@16
|
38 ///INTERNAL ONLY
|
Chris@16
|
39 #define BOOST_UNITS_HAS_TYPEOF 1
|
Chris@16
|
40 ///INTERNAL ONLY
|
Chris@16
|
41 #define BOOST_UNITS_HAS_MWERKS_TYPEOF 1
|
Chris@16
|
42 #else
|
Chris@16
|
43 ///INTERNAL ONLY
|
Chris@16
|
44 #define BOOST_UNITS_HAS_TYPEOF 0
|
Chris@16
|
45 #endif
|
Chris@16
|
46 #endif
|
Chris@16
|
47
|
Chris@16
|
48 // uncomment this to test without typeof support at all
|
Chris@16
|
49 //#undef BOOST_UNITS_HAS_TYPEOF
|
Chris@16
|
50 //#define BOOST_UNITS_HAS_TYPEOF 0
|
Chris@16
|
51
|
Chris@16
|
52 #ifndef BOOST_UNITS_NO_COMPILER_CHECK
|
Chris@16
|
53
|
Chris@16
|
54 #ifdef BOOST_NO_MEMBER_TEMPLATES
|
Chris@16
|
55 #error Boost.Units requires member template
|
Chris@16
|
56 #endif
|
Chris@16
|
57
|
Chris@16
|
58 #ifdef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
|
Chris@16
|
59 #error Boost.Units requires member template keyword
|
Chris@16
|
60 #endif
|
Chris@16
|
61
|
Chris@16
|
62 #ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
Chris@16
|
63 #error Boost.Units requires in class member initialization
|
Chris@16
|
64 #endif
|
Chris@16
|
65
|
Chris@16
|
66 #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
Chris@16
|
67 #error Boost.Units requires function template partial ordering
|
Chris@16
|
68 #endif
|
Chris@16
|
69
|
Chris@16
|
70
|
Chris@16
|
71 #endif
|
Chris@16
|
72
|
Chris@16
|
73 #ifdef BOOST_UNITS_REQUIRE_LAYOUT_COMPATIBILITY
|
Chris@16
|
74 ///INTERNAL ONLY
|
Chris@16
|
75 #define BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(a, b) BOOST_STATIC_ASSERT((sizeof(a) == sizeof(b)))
|
Chris@16
|
76 #else
|
Chris@16
|
77 ///INTERNAL ONLY
|
Chris@16
|
78 #define BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(a, b) ((void)0)
|
Chris@16
|
79 #endif
|
Chris@16
|
80
|
Chris@16
|
81 #ifdef BOOST_UNITS_DOXYGEN
|
Chris@16
|
82
|
Chris@16
|
83 /// If defined will trigger a static assertion if quantity<Unit, T>
|
Chris@16
|
84 /// is not layout compatible with T
|
Chris@16
|
85 #define BOOST_UNITS_REQUIRE_LAYOUT_COMPATIBILITY
|
Chris@16
|
86
|
Chris@16
|
87 /// If defined will disable a preprocessor check that the
|
Chris@16
|
88 /// compiler is able to handle the library.
|
Chris@16
|
89 #define BOOST_UNITS_NO_COMPILER_CHECK
|
Chris@16
|
90
|
Chris@16
|
91 /// Enable checking to verify that a homogeneous system
|
Chris@16
|
92 /// is actually capable of representing all the dimensions
|
Chris@16
|
93 /// that it is used with. Off by default.
|
Chris@16
|
94 #define BOOST_UNITS_CHECK_HOMOGENEOUS_UNITS
|
Chris@16
|
95
|
Chris@16
|
96 #endif
|
Chris@16
|
97
|
Chris@16
|
98 #endif
|