| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // 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_DIM_IMPL_HPP
- #define BOOST_UNITS_DIM_IMPL_HPP
- #include <boost/mpl/bool.hpp>
- #include <boost/mpl/less.hpp>
- #include <boost/units/units_fwd.hpp>
- /// \file
- /// \brief Class encapsulating a dimension tag/value pair
- namespace boost {
- namespace units {
- namespace detail {
- struct dim_tag;
- }
- }
- namespace mpl {
- /// Less than comparison for sorting @c dim.
- template<>
- struct less_impl<boost::units::detail::dim_tag, boost::units::detail::dim_tag>
- {
- template<class T0, class T1>
- struct apply : mpl::less<typename T0::tag_type, typename T1::tag_type> {};
- };
- }
- namespace units {
- template<class Tag, class Exponent>
- struct dim;
- template<long N, long D>
- class static_rational;
- namespace detail {
- /// Extract @c tag_type from a @c dim.
- template<typename T>
- struct get_tag
- {
- typedef typename T::tag_type type;
- };
- /// Extract @c value_type from a @c dim.
- template<typename T>
- struct get_value
- {
- typedef typename T::value_type type;
- };
- /// Determine if a @c dim is empty (has a zero exponent).
- template<class T>
- struct is_empty_dim;
- template<typename T>
- struct is_empty_dim< dim<T, static_rational<0, 1> > > :
- mpl::true_
- { };
- template<typename T, typename V>
- struct is_empty_dim< dim<T, V> > :
- mpl::false_
- { };
- } // namespace detail
- } // namespace units
- } // namespace boost
- #endif // BOOST_UNITS_DIM_IMPL_HPP
|