// Boost.Units - A C++ library for zero-overhead dimensional analysis and // unit/quantity manipulation and conversion // // Copyright (C) 2003-2008 Matthias Christian Schabel // Copyright (C) 2008 Steven Watanabe // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_UNITS_DERIVED_DIMENSION_HPP #define BOOST_UNITS_DERIVED_DIMENSION_HPP #include #include #include #include #include namespace boost { namespace units { /// A utility class for defining composite dimensions with integer powers. template struct derived_dimension { #ifdef BOOST_UNITS_DOXYGEN typedef detail::unspecified type; #else typedef typename make_dimension_list< list< dim< DT1,static_rational >, list< dim< DT2,static_rational >, list< dim< DT3,static_rational >, list< dim< DT4,static_rational >, list< dim< DT5,static_rational >, list< dim< DT6,static_rational >, list< dim< DT7,static_rational >, list< dim< DT8,static_rational >, dimensionless_type > > > > > > > > >::type type; #endif }; /// INTERNAL ONLY template struct derived_dimension< DT1, E1, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0> { typedef typename make_dimension_list< list< dim< DT1,static_rational >, dimensionless_type > >::type type; }; /// INTERNAL ONLY template struct derived_dimension< DT1, E1, DT2, E2, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0> { typedef typename make_dimension_list< list< dim< DT1,static_rational >, list< dim< DT2,static_rational >, dimensionless_type > > >::type type; }; /// INTERNAL ONLY template struct derived_dimension< DT1, E1, DT2, E2, DT3, E3, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0> { typedef typename make_dimension_list< list< dim< DT1,static_rational >, list< dim< DT2,static_rational >, list< dim< DT3,static_rational >, dimensionless_type > > > >::type type; }; /// INTERNAL ONLY template struct derived_dimension< DT1, E1, DT2, E2, DT3, E3, DT4, E4, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0> { typedef typename make_dimension_list< list< dim< DT1,static_rational >, list< dim< DT2,static_rational >, list< dim< DT3,static_rational >, list< dim< DT4,static_rational >, dimensionless_type > > > > >::type type; }; /// INTERNAL ONLY template struct derived_dimension< DT1, E1, DT2, E2, DT3, E3, DT4, E4, DT5, E5, dimensionless_type,0, dimensionless_type,0, dimensionless_type,0> { typedef typename make_dimension_list< list< dim< DT1,static_rational >, list< dim< DT2,static_rational >, list< dim< DT3,static_rational >, list< dim< DT4,static_rational >, list< dim< DT5,static_rational >, dimensionless_type > > > > > >::type type; }; /// INTERNAL ONLY template struct derived_dimension< DT1, E1, DT2, E2, DT3, E3, DT4, E4, DT5, E5, DT6, E6, dimensionless_type,0, dimensionless_type,0> { typedef typename make_dimension_list< list< dim< DT1,static_rational >, list< dim< DT2,static_rational >, list< dim< DT3,static_rational >, list< dim< DT4,static_rational >, list< dim< DT5,static_rational >, list< dim< DT6,static_rational >, dimensionless_type > > > > > > >::type type; }; /// INTERNAL ONLY template struct derived_dimension< DT1, E1, DT2, E2, DT3, E3, DT4, E4, DT5, E5, DT6, E6, DT7, E7, dimensionless_type,0> { typedef typename make_dimension_list< list< dim< DT1,static_rational >, list< dim< DT2,static_rational >, list< dim< DT3,static_rational >, list< dim< DT4,static_rational >, list< dim< DT5,static_rational >, list< dim< DT6,static_rational >, list< dim< DT7,static_rational >, dimensionless_type > > > > > > > >::type type; }; } // namespace units } // namespace boost #endif // BOOST_UNITS_DERIVED_DIMENSION_HPP