Edit: /usr/include/boost/units/derived_dimension.hpp (6465B)
// 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