]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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) 2007-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_MAKE_SCALED_UNIT_HPP_INCLUDED | |
12 | #define BOOST_UNITS_MAKE_SCALED_UNIT_HPP_INCLUDED | |
13 | ||
14 | #include <boost/units/units_fwd.hpp> | |
15 | #include <boost/units/heterogeneous_system.hpp> | |
16 | #include <boost/units/unit.hpp> | |
17 | ||
18 | namespace boost { | |
19 | namespace units { | |
20 | ||
21 | template<class Unit, class Scale> | |
22 | struct make_scaled_unit { | |
23 | typedef typename make_scaled_unit<typename reduce_unit<Unit>::type, Scale>::type type; | |
24 | }; | |
25 | ||
26 | template<class Dimension, class UnitList, class OldScale, class Scale> | |
27 | struct make_scaled_unit<unit<Dimension, heterogeneous_system<heterogeneous_system_impl<UnitList, Dimension, OldScale> > >, Scale> { | |
28 | typedef unit< | |
29 | Dimension, | |
30 | heterogeneous_system< | |
31 | heterogeneous_system_impl< | |
32 | UnitList, | |
33 | Dimension, | |
34 | typename mpl::times< | |
35 | OldScale, | |
36 | list<scale_list_dim<Scale>, dimensionless_type> | |
37 | >::type | |
38 | > | |
39 | > | |
40 | > type; | |
41 | }; | |
42 | ||
43 | template<class Dimension, class UnitList, class OldScale, long Base> | |
44 | struct make_scaled_unit<unit<Dimension, heterogeneous_system<heterogeneous_system_impl<UnitList, Dimension, OldScale> > >, scale<Base, static_rational<0> > > { | |
45 | typedef unit< | |
46 | Dimension, | |
47 | heterogeneous_system< | |
48 | heterogeneous_system_impl< | |
49 | UnitList, | |
50 | Dimension, | |
51 | OldScale | |
52 | > | |
53 | > | |
54 | > type; | |
55 | }; | |
56 | ||
57 | } | |
58 | } | |
59 | ||
60 | #endif |