annotate DEPENDENCIES/generic/include/boost/units/derived_dimension.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents 2665513ce2d3
children
rev   line source
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_DERIVED_DIMENSION_HPP
Chris@16 12 #define BOOST_UNITS_DERIVED_DIMENSION_HPP
Chris@16 13
Chris@16 14 #include <boost/units/dim.hpp>
Chris@16 15 #include <boost/units/dimension.hpp>
Chris@16 16 #include <boost/units/static_rational.hpp>
Chris@16 17 #include <boost/units/units_fwd.hpp>
Chris@16 18 #include <boost/units/detail/dimension_list.hpp>
Chris@16 19
Chris@16 20 namespace boost {
Chris@16 21
Chris@16 22 namespace units {
Chris@16 23
Chris@16 24 /// A utility class for defining composite dimensions with integer powers.
Chris@16 25 template<class DT1 = dimensionless_type,long E1 = 0,
Chris@16 26 class DT2 = dimensionless_type,long E2 = 0,
Chris@16 27 class DT3 = dimensionless_type,long E3 = 0,
Chris@16 28 class DT4 = dimensionless_type,long E4 = 0,
Chris@16 29 class DT5 = dimensionless_type,long E5 = 0,
Chris@16 30 class DT6 = dimensionless_type,long E6 = 0,
Chris@16 31 class DT7 = dimensionless_type,long E7 = 0,
Chris@16 32 class DT8 = dimensionless_type,long E8 = 0>
Chris@16 33 struct derived_dimension
Chris@16 34 {
Chris@16 35 #ifdef BOOST_UNITS_DOXYGEN
Chris@16 36 typedef detail::unspecified type;
Chris@16 37 #else
Chris@16 38 typedef typename
Chris@16 39 make_dimension_list< list< dim< DT1,static_rational<E1> >,
Chris@16 40 list< dim< DT2,static_rational<E2> >,
Chris@16 41 list< dim< DT3,static_rational<E3> >,
Chris@16 42 list< dim< DT4,static_rational<E4> >,
Chris@16 43 list< dim< DT5,static_rational<E5> >,
Chris@16 44 list< dim< DT6,static_rational<E6> >,
Chris@16 45 list< dim< DT7,static_rational<E7> >,
Chris@16 46 list< dim< DT8,static_rational<E8> >, dimensionless_type > > > > > > > > >::type type;
Chris@16 47 #endif
Chris@16 48 };
Chris@16 49
Chris@16 50 /// INTERNAL ONLY
Chris@16 51 template<class DT1,long E1>
Chris@16 52 struct derived_dimension<
Chris@16 53 DT1, E1,
Chris@16 54 dimensionless_type,0,
Chris@16 55 dimensionless_type,0,
Chris@16 56 dimensionless_type,0,
Chris@16 57 dimensionless_type,0,
Chris@16 58 dimensionless_type,0,
Chris@16 59 dimensionless_type,0,
Chris@16 60 dimensionless_type,0>
Chris@16 61 {
Chris@16 62 typedef typename
Chris@16 63 make_dimension_list< list< dim< DT1,static_rational<E1> >, dimensionless_type > >::type type;
Chris@16 64 };
Chris@16 65
Chris@16 66 /// INTERNAL ONLY
Chris@16 67 template<class DT1,long E1,
Chris@16 68 class DT2,long E2>
Chris@16 69 struct derived_dimension<
Chris@16 70 DT1, E1,
Chris@16 71 DT2, E2,
Chris@16 72 dimensionless_type,0,
Chris@16 73 dimensionless_type,0,
Chris@16 74 dimensionless_type,0,
Chris@16 75 dimensionless_type,0,
Chris@16 76 dimensionless_type,0,
Chris@16 77 dimensionless_type,0>
Chris@16 78 {
Chris@16 79 typedef typename
Chris@16 80 make_dimension_list< list< dim< DT1,static_rational<E1> >,
Chris@16 81 list< dim< DT2,static_rational<E2> >, dimensionless_type > > >::type type;
Chris@16 82 };
Chris@16 83
Chris@16 84 /// INTERNAL ONLY
Chris@16 85 template<class DT1,long E1,
Chris@16 86 class DT2,long E2,
Chris@16 87 class DT3,long E3>
Chris@16 88 struct derived_dimension<
Chris@16 89 DT1, E1,
Chris@16 90 DT2, E2,
Chris@16 91 DT3, E3,
Chris@16 92 dimensionless_type,0,
Chris@16 93 dimensionless_type,0,
Chris@16 94 dimensionless_type,0,
Chris@16 95 dimensionless_type,0,
Chris@16 96 dimensionless_type,0>
Chris@16 97 {
Chris@16 98 typedef typename
Chris@16 99 make_dimension_list< list< dim< DT1,static_rational<E1> >,
Chris@16 100 list< dim< DT2,static_rational<E2> >,
Chris@16 101 list< dim< DT3,static_rational<E3> >, dimensionless_type > > > >::type type;
Chris@16 102 };
Chris@16 103
Chris@16 104 /// INTERNAL ONLY
Chris@16 105 template<class DT1,long E1,
Chris@16 106 class DT2,long E2,
Chris@16 107 class DT3,long E3,
Chris@16 108 class DT4,long E4>
Chris@16 109 struct derived_dimension<
Chris@16 110 DT1, E1,
Chris@16 111 DT2, E2,
Chris@16 112 DT3, E3,
Chris@16 113 DT4, E4,
Chris@16 114 dimensionless_type,0,
Chris@16 115 dimensionless_type,0,
Chris@16 116 dimensionless_type,0,
Chris@16 117 dimensionless_type,0>
Chris@16 118 {
Chris@16 119 typedef typename
Chris@16 120 make_dimension_list< list< dim< DT1,static_rational<E1> >,
Chris@16 121 list< dim< DT2,static_rational<E2> >,
Chris@16 122 list< dim< DT3,static_rational<E3> >,
Chris@16 123 list< dim< DT4,static_rational<E4> >, dimensionless_type > > > > >::type type;
Chris@16 124 };
Chris@16 125
Chris@16 126 /// INTERNAL ONLY
Chris@16 127 template<class DT1,long E1,
Chris@16 128 class DT2,long E2,
Chris@16 129 class DT3,long E3,
Chris@16 130 class DT4,long E4,
Chris@16 131 class DT5,long E5>
Chris@16 132 struct derived_dimension<
Chris@16 133 DT1, E1,
Chris@16 134 DT2, E2,
Chris@16 135 DT3, E3,
Chris@16 136 DT4, E4,
Chris@16 137 DT5, E5,
Chris@16 138 dimensionless_type,0,
Chris@16 139 dimensionless_type,0,
Chris@16 140 dimensionless_type,0>
Chris@16 141 {
Chris@16 142 typedef typename
Chris@16 143 make_dimension_list< list< dim< DT1,static_rational<E1> >,
Chris@16 144 list< dim< DT2,static_rational<E2> >,
Chris@16 145 list< dim< DT3,static_rational<E3> >,
Chris@16 146 list< dim< DT4,static_rational<E4> >,
Chris@16 147 list< dim< DT5,static_rational<E5> >, dimensionless_type > > > > > >::type type;
Chris@16 148 };
Chris@16 149
Chris@16 150 /// INTERNAL ONLY
Chris@16 151 template<class DT1,long E1,
Chris@16 152 class DT2,long E2,
Chris@16 153 class DT3,long E3,
Chris@16 154 class DT4,long E4,
Chris@16 155 class DT5,long E5,
Chris@16 156 class DT6,long E6>
Chris@16 157 struct derived_dimension<
Chris@16 158 DT1, E1,
Chris@16 159 DT2, E2,
Chris@16 160 DT3, E3,
Chris@16 161 DT4, E4,
Chris@16 162 DT5, E5,
Chris@16 163 DT6, E6,
Chris@16 164 dimensionless_type,0,
Chris@16 165 dimensionless_type,0>
Chris@16 166 {
Chris@16 167 typedef typename
Chris@16 168 make_dimension_list< list< dim< DT1,static_rational<E1> >,
Chris@16 169 list< dim< DT2,static_rational<E2> >,
Chris@16 170 list< dim< DT3,static_rational<E3> >,
Chris@16 171 list< dim< DT4,static_rational<E4> >,
Chris@16 172 list< dim< DT5,static_rational<E5> >,
Chris@16 173 list< dim< DT6,static_rational<E6> >, dimensionless_type > > > > > > >::type type;
Chris@16 174 };
Chris@16 175
Chris@16 176 /// INTERNAL ONLY
Chris@16 177 template<class DT1,long E1,
Chris@16 178 class DT2,long E2,
Chris@16 179 class DT3,long E3,
Chris@16 180 class DT4,long E4,
Chris@16 181 class DT5,long E5,
Chris@16 182 class DT6,long E6,
Chris@16 183 class DT7,long E7>
Chris@16 184 struct derived_dimension<
Chris@16 185 DT1, E1,
Chris@16 186 DT2, E2,
Chris@16 187 DT3, E3,
Chris@16 188 DT4, E4,
Chris@16 189 DT5, E5,
Chris@16 190 DT6, E6,
Chris@16 191 DT7, E7,
Chris@16 192 dimensionless_type,0>
Chris@16 193 {
Chris@16 194 typedef typename
Chris@16 195 make_dimension_list< list< dim< DT1,static_rational<E1> >,
Chris@16 196 list< dim< DT2,static_rational<E2> >,
Chris@16 197 list< dim< DT3,static_rational<E3> >,
Chris@16 198 list< dim< DT4,static_rational<E4> >,
Chris@16 199 list< dim< DT5,static_rational<E5> >,
Chris@16 200 list< dim< DT6,static_rational<E6> >,
Chris@16 201 list< dim< DT7,static_rational<E7> >, dimensionless_type > > > > > > > >::type type;
Chris@16 202 };
Chris@16 203
Chris@16 204 } // namespace units
Chris@16 205
Chris@16 206 } // namespace boost
Chris@16 207
Chris@16 208 #endif // BOOST_UNITS_DERIVED_DIMENSION_HPP