123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // 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
|