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

source code of boost/boost/units/config.hpp