diff options
author | bugaevskiy <bugaevskiy@yandex-team.com> | 2022-09-11 17:51:40 +0300 |
---|---|---|
committer | bugaevskiy <bugaevskiy@yandex-team.com> | 2022-09-11 17:51:40 +0300 |
commit | 1547a3cfd895eb286459585b239089c4deaf4288 (patch) | |
tree | 88424d386057392bb412e451d89ee3a24b71254a | |
parent | d8a7d202e3306ff3a4c14144abf3fae7aadad3a3 (diff) | |
download | ydb-1547a3cfd895eb286459585b239089c4deaf4288.tar.gz |
Reimport boost/units as a separate project
388 files changed, 70 insertions, 29635 deletions
diff --git a/contrib/restricted/boost/CMakeLists.txt b/contrib/restricted/boost/CMakeLists.txt index fa88ab7fb7..b839b1cb64 100644 --- a/contrib/restricted/boost/CMakeLists.txt +++ b/contrib/restricted/boost/CMakeLists.txt @@ -83,6 +83,7 @@ add_subdirectory(type_index) add_subdirectory(type_traits) add_subdirectory(typeof) add_subdirectory(ublas) +add_subdirectory(units) add_subdirectory(unordered) add_subdirectory(utility) add_subdirectory(variant) @@ -151,6 +152,7 @@ target_link_libraries(contrib-restricted-boost INTERFACE restricted-boost-type_traits restricted-boost-typeof restricted-boost-ublas + restricted-boost-units restricted-boost-unordered restricted-boost-utility restricted-boost-variant diff --git a/contrib/restricted/boost/boost/fiber/algo/algorithm.hpp b/contrib/restricted/boost/boost/fiber/algo/algorithm.hpp deleted file mode 100644 index b22a5923d6..0000000000 --- a/contrib/restricted/boost/boost/fiber/algo/algorithm.hpp +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_ALGO_ALGORITHM_H -#define BOOST_FIBERS_ALGO_ALGORITHM_H - -#include <atomic> -#include <chrono> -#include <cstddef> - -#include <boost/assert.hpp> -#include <boost/config.hpp> -#include <boost/intrusive_ptr.hpp> - -#include <boost/fiber/properties.hpp> -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -class context; - -namespace algo { - -class BOOST_FIBERS_DECL algorithm { -private: - std::atomic< std::size_t > use_count_{ 0 }; - -public: - typedef intrusive_ptr< algorithm > ptr_t; - - virtual ~algorithm() {} - - virtual void awakened( context *) noexcept = 0; - - virtual context * pick_next() noexcept = 0; - - virtual bool has_ready_fibers() const noexcept = 0; - - virtual void suspend_until( std::chrono::steady_clock::time_point const&) noexcept = 0; - - virtual void notify() noexcept = 0; - - friend void intrusive_ptr_add_ref( algorithm * algo) noexcept { - BOOST_ASSERT( nullptr != algo); - algo->use_count_.fetch_add( 1, std::memory_order_relaxed); - } - - friend void intrusive_ptr_release( algorithm * algo) noexcept { - BOOST_ASSERT( nullptr != algo); - if ( 1 == algo->use_count_.fetch_sub( 1, std::memory_order_release) ) { - std::atomic_thread_fence( std::memory_order_acquire); - delete algo; - } - } -}; - -class BOOST_FIBERS_DECL algorithm_with_properties_base : public algorithm { -public: - // called by fiber_properties::notify() -- don't directly call - virtual void property_change_( context * ctx, fiber_properties * props) noexcept = 0; - -protected: - static fiber_properties* get_properties( context * ctx) noexcept; - static void set_properties( context * ctx, fiber_properties * p) noexcept; -}; - -template< typename PROPS > -struct algorithm_with_properties : public algorithm_with_properties_base { - typedef algorithm_with_properties_base super; - - // Mark this override 'final': algorithm_with_properties subclasses - // must override awakened() with properties parameter instead. Otherwise - // you'd have to remember to start every subclass awakened() override - // with: algorithm_with_properties<PROPS>::awakened(fb); - virtual void awakened( context * ctx) noexcept override final { - fiber_properties * props = super::get_properties( ctx); - if ( BOOST_LIKELY( nullptr == props) ) { - // TODO: would be great if PROPS could be allocated on the new - // fiber's stack somehow - props = new_properties( ctx); - // It is not good for new_properties() to return 0. - BOOST_ASSERT_MSG( props, "new_properties() must return non-NULL"); - // new_properties() must return instance of (a subclass of) PROPS - BOOST_ASSERT_MSG( dynamic_cast< PROPS * >( props), - "new_properties() must return properties class"); - super::set_properties( ctx, props); - } - // Set algo_ again every time this fiber becomes READY. That - // handles the case of a fiber migrating to a new thread with a new - // algorithm subclass instance. - props->set_algorithm( this); - - // Okay, now forward the call to subclass override. - awakened( ctx, properties( ctx) ); - } - - // subclasses override this method instead of the original awakened() - virtual void awakened( context *, PROPS &) noexcept = 0; - - // used for all internal calls - PROPS & properties( context * ctx) noexcept { - return static_cast< PROPS & >( * super::get_properties( ctx) ); - } - - // override this to be notified by PROPS::notify() - virtual void property_change( context * ctx, PROPS & props) noexcept { - } - - // implementation for algorithm_with_properties_base method - void property_change_( context * ctx, fiber_properties * props) noexcept override final { - property_change( ctx, * static_cast< PROPS * >( props) ); - } - - // Override this to customize instantiation of PROPS, e.g. use a different - // allocator. Each PROPS instance is associated with a particular - // context. - virtual fiber_properties * new_properties( context * ctx) { - return new PROPS( ctx); - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_ALGO_ALGORITHM_H diff --git a/contrib/restricted/boost/boost/fiber/algo/numa/work_stealing.hpp b/contrib/restricted/boost/boost/fiber/algo/numa/work_stealing.hpp deleted file mode 100644 index 26032ab35e..0000000000 --- a/contrib/restricted/boost/boost/fiber/algo/numa/work_stealing.hpp +++ /dev/null @@ -1,93 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBERS_ALGO_NUMA_WORK_STEALING_H -#define BOOST_FIBERS_ALGO_NUMA_WORK_STEALING_H - -#include <condition_variable> -#include <chrono> -#include <cstddef> -#include <cstdint> -#include <mutex> -#include <vector> - -#include <boost/config.hpp> -#include <boost/intrusive_ptr.hpp> - -#include <boost/fiber/algo/algorithm.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/context_spinlock_queue.hpp> -#include <boost/fiber/detail/context_spmc_queue.hpp> -#include <boost/fiber/numa/pin_thread.hpp> -#include <boost/fiber/numa/topology.hpp> -#include <boost/fiber/scheduler.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace algo { -namespace numa { - -class work_stealing : public algorithm { -private: - static std::vector< intrusive_ptr< work_stealing > > schedulers_; - - std::uint32_t cpu_id_; - std::vector< std::uint32_t > local_cpus_; - std::vector< std::uint32_t > remote_cpus_; -#ifdef BOOST_FIBERS_USE_SPMC_QUEUE - detail::context_spmc_queue rqueue_{}; -#else - detail::context_spinlock_queue rqueue_{}; -#endif - std::mutex mtx_{}; - std::condition_variable cnd_{}; - bool flag_{ false }; - bool suspend_; - - static void init_( std::vector< boost::fibers::numa::node > const&, - std::vector< intrusive_ptr< work_stealing > > &); - -public: - work_stealing( std::uint32_t, std::uint32_t, - std::vector< boost::fibers::numa::node > const&, - bool = false); - - work_stealing( work_stealing const&) = delete; - work_stealing( work_stealing &&) = delete; - - work_stealing & operator=( work_stealing const&) = delete; - work_stealing & operator=( work_stealing &&) = delete; - - virtual void awakened( context *) noexcept; - - virtual context * pick_next() noexcept; - - virtual context * steal() noexcept { - return rqueue_.steal(); - } - - virtual bool has_ready_fibers() const noexcept { - return ! rqueue_.empty(); - } - - virtual void suspend_until( std::chrono::steady_clock::time_point const&) noexcept; - - virtual void notify() noexcept; -}; - -}}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_ALGO_NUMA_WORK_STEALING_H diff --git a/contrib/restricted/boost/boost/fiber/algo/round_robin.hpp b/contrib/restricted/boost/boost/fiber/algo/round_robin.hpp deleted file mode 100644 index e384982567..0000000000 --- a/contrib/restricted/boost/boost/fiber/algo/round_robin.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_ALGO_ROUND_ROBIN_H -#define BOOST_FIBERS_ALGO_ROUND_ROBIN_H - -#include <condition_variable> -#include <chrono> -#include <mutex> - -#include <boost/config.hpp> - -#include <boost/fiber/algo/algorithm.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/scheduler.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { -namespace algo { - -class BOOST_FIBERS_DECL round_robin : public algorithm { -private: - typedef scheduler::ready_queue_type rqueue_type; - - rqueue_type rqueue_{}; - std::mutex mtx_{}; - std::condition_variable cnd_{}; - bool flag_{ false }; - -public: - round_robin() = default; - - round_robin( round_robin const&) = delete; - round_robin & operator=( round_robin const&) = delete; - - virtual void awakened( context *) noexcept; - - virtual context * pick_next() noexcept; - - virtual bool has_ready_fibers() const noexcept; - - virtual void suspend_until( std::chrono::steady_clock::time_point const&) noexcept; - - virtual void notify() noexcept; -}; - -}}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_ALGO_ROUND_ROBIN_H diff --git a/contrib/restricted/boost/boost/fiber/algo/shared_work.hpp b/contrib/restricted/boost/boost/fiber/algo/shared_work.hpp deleted file mode 100644 index 23bc926e55..0000000000 --- a/contrib/restricted/boost/boost/fiber/algo/shared_work.hpp +++ /dev/null @@ -1,86 +0,0 @@ - -// Copyright Nat Goodspeed + Oliver Kowalke 2015. -// 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_FIBERS_ALGO_SHARED_WORK_H -#define BOOST_FIBERS_ALGO_SHARED_WORK_H - -#include <condition_variable> -#include <chrono> -#include <deque> -#include <mutex> - -#include <boost/config.hpp> - -#include <boost/fiber/algo/algorithm.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/scheduler.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { -namespace algo { - -class BOOST_FIBERS_DECL shared_work : public algorithm { -private: - typedef std::deque< context * > rqueue_type; - typedef scheduler::ready_queue_type lqueue_type; - - static rqueue_type rqueue_; - static std::mutex rqueue_mtx_; - - lqueue_type lqueue_{}; - std::mutex mtx_{}; - std::condition_variable cnd_{}; - bool flag_{ false }; - bool suspend_{ false }; - -public: - shared_work() = default; - - shared_work( bool suspend) : - suspend_{ suspend } { - } - - shared_work( shared_work const&) = delete; - shared_work( shared_work &&) = delete; - - shared_work & operator=( shared_work const&) = delete; - shared_work & operator=( shared_work &&) = delete; - - void awakened( context * ctx) noexcept; - - context * pick_next() noexcept; - - bool has_ready_fibers() const noexcept { - std::unique_lock< std::mutex > lock{ rqueue_mtx_ }; - return ! rqueue_.empty() || ! lqueue_.empty(); - } - - void suspend_until( std::chrono::steady_clock::time_point const& time_point) noexcept; - - void notify() noexcept; -}; - -}}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_ALGO_SHARED_WORK_H diff --git a/contrib/restricted/boost/boost/fiber/algo/work_stealing.hpp b/contrib/restricted/boost/boost/fiber/algo/work_stealing.hpp deleted file mode 100644 index 9771b6cb10..0000000000 --- a/contrib/restricted/boost/boost/fiber/algo/work_stealing.hpp +++ /dev/null @@ -1,88 +0,0 @@ - -// Copyright Oliver Kowalke 2015. -// 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_FIBERS_ALGO_WORK_STEALING_H -#define BOOST_FIBERS_ALGO_WORK_STEALING_H - -#include <atomic> -#include <condition_variable> -#include <chrono> -#include <cstddef> -#include <cstdint> -#include <mutex> -#include <vector> - -#include <boost/config.hpp> -#include <boost/intrusive_ptr.hpp> - -#include <boost/fiber/algo/algorithm.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/context_spinlock_queue.hpp> -#include <boost/fiber/detail/context_spmc_queue.hpp> -#include <boost/fiber/scheduler.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace algo { - -class BOOST_FIBERS_DECL work_stealing : public algorithm { -private: - static std::atomic< std::uint32_t > counter_; - static std::vector< intrusive_ptr< work_stealing > > schedulers_; - - std::uint32_t id_; - std::uint32_t thread_count_; -#ifdef BOOST_FIBERS_USE_SPMC_QUEUE - detail::context_spmc_queue rqueue_{}; -#else - detail::context_spinlock_queue rqueue_{}; -#endif - std::mutex mtx_{}; - std::condition_variable cnd_{}; - bool flag_{ false }; - bool suspend_; - - static void init_( std::uint32_t, std::vector< intrusive_ptr< work_stealing > > &); - -public: - work_stealing( std::uint32_t, bool = false); - - work_stealing( work_stealing const&) = delete; - work_stealing( work_stealing &&) = delete; - - work_stealing & operator=( work_stealing const&) = delete; - work_stealing & operator=( work_stealing &&) = delete; - - virtual void awakened( context *) noexcept; - - virtual context * pick_next() noexcept; - - virtual context * steal() noexcept { - return rqueue_.steal(); - } - - virtual bool has_ready_fibers() const noexcept { - return ! rqueue_.empty(); - } - - virtual void suspend_until( std::chrono::steady_clock::time_point const&) noexcept; - - virtual void notify() noexcept; -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_ALGO_WORK_STEALING_H diff --git a/contrib/restricted/boost/boost/fiber/all.hpp b/contrib/restricted/boost/boost/fiber/all.hpp deleted file mode 100644 index 17ceca45cc..0000000000 --- a/contrib/restricted/boost/boost/fiber/all.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_H -#define BOOST_FIBERS_H - -#include <boost/fiber/algo/algorithm.hpp> -#include <boost/fiber/algo/round_robin.hpp> -#include <boost/fiber/algo/shared_work.hpp> -#include <boost/fiber/algo/work_stealing.hpp> -#include <boost/fiber/algo/numa/work_stealing.hpp> -#include <boost/fiber/barrier.hpp> -#include <boost/fiber/buffered_channel.hpp> -#include <boost/fiber/channel_op_status.hpp> -#include <boost/fiber/condition_variable.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/exceptions.hpp> -#include <boost/fiber/fiber.hpp> -#include <boost/fiber/fixedsize_stack.hpp> -#include <boost/fiber/fss.hpp> -#include <boost/fiber/future.hpp> -#include <boost/fiber/numa/pin_thread.hpp> -#include <boost/fiber/numa/topology.hpp> -#include <boost/fiber/mutex.hpp> -#include <boost/fiber/operations.hpp> -#include <boost/fiber/policy.hpp> -#include <boost/fiber/pooled_fixedsize_stack.hpp> -#include <boost/fiber/properties.hpp> -#include <boost/fiber/protected_fixedsize_stack.hpp> -#include <boost/fiber/recursive_mutex.hpp> -#include <boost/fiber/recursive_timed_mutex.hpp> -#include <boost/fiber/scheduler.hpp> -#include <boost/fiber/segmented_stack.hpp> -#include <boost/fiber/timed_mutex.hpp> -#include <boost/fiber/type.hpp> -#include <boost/fiber/unbuffered_channel.hpp> - -#endif // BOOST_FIBERS_H diff --git a/contrib/restricted/boost/boost/fiber/barrier.hpp b/contrib/restricted/boost/boost/fiber/barrier.hpp deleted file mode 100644 index 31a2cd617d..0000000000 --- a/contrib/restricted/boost/boost/fiber/barrier.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_BARRIER_H -#define BOOST_FIBERS_BARRIER_H - -#include <cstddef> - -#include <boost/config.hpp> - -#include <boost/fiber/condition_variable.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/mutex.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -class BOOST_FIBERS_DECL barrier { -private: - std::size_t initial_; - std::size_t current_; - std::size_t cycle_{ 0 }; - mutex mtx_{}; - condition_variable cond_{}; - -public: - explicit barrier( std::size_t); - - barrier( barrier const&) = delete; - barrier & operator=( barrier const&) = delete; - - bool wait(); -}; - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_BARRIER_H diff --git a/contrib/restricted/boost/boost/fiber/buffered_channel.hpp b/contrib/restricted/boost/boost/fiber/buffered_channel.hpp deleted file mode 100644 index 592a6340d5..0000000000 --- a/contrib/restricted/boost/boost/fiber/buffered_channel.hpp +++ /dev/null @@ -1,609 +0,0 @@ - -// Copyright Oliver Kowalke 2016. -// 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_FIBERS_BUFFERED_CHANNEL_H -#define BOOST_FIBERS_BUFFERED_CHANNEL_H - -#include <atomic> -#include <chrono> -#include <cstddef> -#include <cstdint> -#include <memory> -#include <type_traits> - -#include <boost/config.hpp> - -#include <boost/fiber/channel_op_status.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/convert.hpp> -#include <boost/fiber/detail/spinlock.hpp> -#include <boost/fiber/exceptions.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -template< typename T > -class buffered_channel { -public: - typedef typename std::remove_reference< T >::type value_type; - -private: - typedef context::wait_queue_t wait_queue_type; - typedef value_type slot_type; - - mutable detail::spinlock splk_{}; - wait_queue_type waiting_producers_{}; - wait_queue_type waiting_consumers_{}; - slot_type * slots_; - std::size_t pidx_{ 0 }; - std::size_t cidx_{ 0 }; - std::size_t capacity_; - bool closed_{ false }; - - bool is_full_() const noexcept { - return cidx_ == ((pidx_ + 1) % capacity_); - } - - bool is_empty_() const noexcept { - return cidx_ == pidx_; - } - - bool is_closed_() const noexcept { - return closed_; - } - -public: - explicit buffered_channel( std::size_t capacity) : - capacity_{ capacity } { - if ( BOOST_UNLIKELY( 2 > capacity_ || 0 != ( capacity_ & (capacity_ - 1) ) ) ) { - throw fiber_error{ std::make_error_code( std::errc::invalid_argument), - "boost fiber: buffer capacity is invalid" }; - } - slots_ = new slot_type[capacity_]; - } - - ~buffered_channel() { - close(); - delete [] slots_; - } - - buffered_channel( buffered_channel const&) = delete; - buffered_channel & operator=( buffered_channel const&) = delete; - - bool is_closed() const noexcept { - detail::spinlock_lock lk{ splk_ }; - return is_closed_(); - } - - void close() noexcept { - context * active_ctx = context::active(); - detail::spinlock_lock lk{ splk_ }; - closed_ = true; - // notify all waiting producers - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - } - } - // notify all waiting consumers - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - } - } - } - - channel_op_status try_push( value_type const& value) { - context * active_ctx = context::active(); - detail::spinlock_lock lk{ splk_ }; - if ( BOOST_UNLIKELY( is_closed_() ) ) { - return channel_op_status::closed; - } else if ( is_full_() ) { - return channel_op_status::full; - } else { - slots_[pidx_] = value; - pidx_ = (pidx_ + 1) % capacity_; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - return channel_op_status::success; - } - } - - channel_op_status try_push( value_type && value) { - context * active_ctx = context::active(); - detail::spinlock_lock lk{ splk_ }; - if ( BOOST_UNLIKELY( is_closed_() ) ) { - return channel_op_status::closed; - } else if ( is_full_() ) { - return channel_op_status::full; - } else { - slots_[pidx_] = std::move( value); - pidx_ = (pidx_ + 1) % capacity_; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - return channel_op_status::success; - } - } - - channel_op_status push( value_type const& value) { - context * active_ctx = context::active(); - for (;;) { - detail::spinlock_lock lk{ splk_ }; - if ( BOOST_UNLIKELY( is_closed_() ) ) { - return channel_op_status::closed; - } else if ( is_full_() ) { - active_ctx->wait_link( waiting_producers_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // suspend this producer - active_ctx->suspend( lk); - } else { - slots_[pidx_] = value; - pidx_ = (pidx_ + 1) % capacity_; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - return channel_op_status::success; - } - } - } - - channel_op_status push( value_type && value) { - context * active_ctx = context::active(); - for (;;) { - detail::spinlock_lock lk{ splk_ }; - if ( BOOST_UNLIKELY( is_closed_() ) ) { - return channel_op_status::closed; - } else if ( is_full_() ) { - active_ctx->wait_link( waiting_producers_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // suspend this producer - active_ctx->suspend( lk); - } else { - slots_[pidx_] = std::move( value); - pidx_ = (pidx_ + 1) % capacity_; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - return channel_op_status::success; - } - } - } - - template< typename Rep, typename Period > - channel_op_status push_wait_for( value_type const& value, - std::chrono::duration< Rep, Period > const& timeout_duration) { - return push_wait_until( value, - std::chrono::steady_clock::now() + timeout_duration); - } - - template< typename Rep, typename Period > - channel_op_status push_wait_for( value_type && value, - std::chrono::duration< Rep, Period > const& timeout_duration) { - return push_wait_until( std::forward< value_type >( value), - std::chrono::steady_clock::now() + timeout_duration); - } - - template< typename Clock, typename Duration > - channel_op_status push_wait_until( value_type const& value, - std::chrono::time_point< Clock, Duration > const& timeout_time_) { - context * active_ctx = context::active(); - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - for (;;) { - detail::spinlock_lock lk{ splk_ }; - if ( BOOST_UNLIKELY( is_closed_() ) ) { - return channel_op_status::closed; - } else if ( is_full_() ) { - active_ctx->wait_link( waiting_producers_); - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - // suspend this producer - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - // relock local lk - lk.lock(); - // remove from waiting-queue - waiting_producers_.remove( * active_ctx); - return channel_op_status::timeout; - } - } else { - slots_[pidx_] = value; - pidx_ = (pidx_ + 1) % capacity_; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - return channel_op_status::success; - } - } - } - - template< typename Clock, typename Duration > - channel_op_status push_wait_until( value_type && value, - std::chrono::time_point< Clock, Duration > const& timeout_time_) { - context * active_ctx = context::active(); - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - for (;;) { - detail::spinlock_lock lk{ splk_ }; - if ( BOOST_UNLIKELY( is_closed_() ) ) { - return channel_op_status::closed; - } else if ( is_full_() ) { - active_ctx->wait_link( waiting_producers_); - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - // suspend this producer - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - // relock local lk - lk.lock(); - // remove from waiting-queue - waiting_producers_.remove( * active_ctx); - return channel_op_status::timeout; - } - } else { - slots_[pidx_] = std::move( value); - pidx_ = (pidx_ + 1) % capacity_; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - return channel_op_status::success; - } - } - } - - channel_op_status try_pop( value_type & value) { - context * active_ctx = context::active(); - detail::spinlock_lock lk{ splk_ }; - if ( is_empty_() ) { - return is_closed_() - ? channel_op_status::closed - : channel_op_status::empty; - } else { - value = std::move( slots_[cidx_]); - cidx_ = (cidx_ + 1) % capacity_; - // notify one waiting producer - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - break; - } - } - return channel_op_status::success; - } - } - - channel_op_status pop( value_type & value) { - context * active_ctx = context::active(); - for (;;) { - detail::spinlock_lock lk{ splk_ }; - if ( is_empty_() ) { - if ( BOOST_UNLIKELY( is_closed_() ) ) { - return channel_op_status::closed; - } else { - active_ctx->wait_link( waiting_consumers_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // suspend this consumer - active_ctx->suspend( lk); - } - } else { - value = std::move( slots_[cidx_]); - cidx_ = (cidx_ + 1) % capacity_; - // notify one waiting producer - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - break; - } - } - return channel_op_status::success; - } - } - } - - value_type value_pop() { - context * active_ctx = context::active(); - for (;;) { - detail::spinlock_lock lk{ splk_ }; - if ( is_empty_() ) { - if ( BOOST_UNLIKELY( is_closed_() ) ) { - throw fiber_error{ - std::make_error_code( std::errc::operation_not_permitted), - "boost fiber: channel is closed" }; - } else { - active_ctx->wait_link( waiting_consumers_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // suspend this consumer - active_ctx->suspend( lk); - } - } else { - value_type value = std::move( slots_[cidx_]); - cidx_ = (cidx_ + 1) % capacity_; - // notify one waiting producer - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - break; - } - } - return std::move( value); - } - } - } - - template< typename Rep, typename Period > - channel_op_status pop_wait_for( value_type & value, - std::chrono::duration< Rep, Period > const& timeout_duration) { - return pop_wait_until( value, - std::chrono::steady_clock::now() + timeout_duration); - } - - template< typename Clock, typename Duration > - channel_op_status pop_wait_until( value_type & value, - std::chrono::time_point< Clock, Duration > const& timeout_time_) { - context * active_ctx = context::active(); - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - for (;;) { - detail::spinlock_lock lk{ splk_ }; - if ( is_empty_() ) { - if ( BOOST_UNLIKELY( is_closed_() ) ) { - return channel_op_status::closed; - } else { - active_ctx->wait_link( waiting_consumers_); - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - // suspend this consumer - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - // relock local lk - lk.lock(); - // remove from waiting-queue - waiting_consumers_.remove( * active_ctx); - return channel_op_status::timeout; - } - } - } else { - value = std::move( slots_[cidx_]); - cidx_ = (cidx_ + 1) % capacity_; - // notify one waiting producer - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - break; - } - } - return channel_op_status::success; - } - } - } - - class iterator { - private: - typedef typename std::aligned_storage< sizeof( value_type), alignof( value_type) >::type storage_type; - - buffered_channel * chan_{ nullptr }; - storage_type storage_; - - void increment_() { - BOOST_ASSERT( nullptr != chan_); - try { - ::new ( static_cast< void * >( std::addressof( storage_) ) ) value_type{ chan_->value_pop() }; - } catch ( fiber_error const&) { - chan_ = nullptr; - } - } - - public: - typedef std::input_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; - typedef value_type * pointer; - typedef value_type & reference; - - typedef pointer pointer_t; - typedef reference reference_t; - - iterator() noexcept = default; - - explicit iterator( buffered_channel< T > * chan) noexcept : - chan_{ chan } { - increment_(); - } - - iterator( iterator const& other) noexcept : - chan_{ other.chan_ } { - } - - iterator & operator=( iterator const& other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - chan_ = other.chan_; - } - return * this; - } - - bool operator==( iterator const& other) const noexcept { - return other.chan_ == chan_; - } - - bool operator!=( iterator const& other) const noexcept { - return other.chan_ != chan_; - } - - iterator & operator++() { - increment_(); - return * this; - } - - iterator operator++( int) = delete; - - reference_t operator*() noexcept { - return * reinterpret_cast< value_type * >( std::addressof( storage_) ); - } - - pointer_t operator->() noexcept { - return reinterpret_cast< value_type * >( std::addressof( storage_) ); - } - }; - - friend class iterator; -}; - -template< typename T > -typename buffered_channel< T >::iterator -begin( buffered_channel< T > & chan) { - return typename buffered_channel< T >::iterator( & chan); -} - -template< typename T > -typename buffered_channel< T >::iterator -end( buffered_channel< T > &) { - return typename buffered_channel< T >::iterator(); -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_BUFFERED_CHANNEL_H diff --git a/contrib/restricted/boost/boost/fiber/channel_op_status.hpp b/contrib/restricted/boost/boost/fiber/channel_op_status.hpp deleted file mode 100644 index 785253ac43..0000000000 --- a/contrib/restricted/boost/boost/fiber/channel_op_status.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_CHANNEL_OP_STATUS_H -#define BOOST_FIBERS_CHANNEL_OP_STATUS_H - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -enum class channel_op_status { - success = 0, - empty, - full, - closed, - timeout -}; - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_CHANNEL_OP_STATUS_H diff --git a/contrib/restricted/boost/boost/fiber/condition_variable.hpp b/contrib/restricted/boost/boost/fiber/condition_variable.hpp deleted file mode 100644 index 53d6252fb1..0000000000 --- a/contrib/restricted/boost/boost/fiber/condition_variable.hpp +++ /dev/null @@ -1,256 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_CONDITION_VARIABLE_H -#define BOOST_FIBERS_CONDITION_VARIABLE_H - -#include <algorithm> -#include <atomic> -#include <chrono> -#include <functional> -#include <mutex> - -#include <boost/assert.hpp> -#include <boost/config.hpp> - -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/convert.hpp> -#include <boost/fiber/detail/spinlock.hpp> -#include <boost/fiber/exceptions.hpp> -#include <boost/fiber/mutex.hpp> -#include <boost/fiber/operations.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -//# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { - -enum class cv_status { - no_timeout = 1, - timeout -}; - -class BOOST_FIBERS_DECL condition_variable_any { -private: - typedef context::wait_queue_t wait_queue_t; - - detail::spinlock wait_queue_splk_{}; - wait_queue_t wait_queue_{}; - -public: - condition_variable_any() = default; - - ~condition_variable_any() { - BOOST_ASSERT( wait_queue_.empty() ); - } - - condition_variable_any( condition_variable_any const&) = delete; - condition_variable_any & operator=( condition_variable_any const&) = delete; - - void notify_one() noexcept; - - void notify_all() noexcept; - - template< typename LockType > - void wait( LockType & lt) { - context * active_ctx = context::active(); - // atomically call lt.unlock() and block on *this - // store this fiber in waiting-queue - detail::spinlock_lock lk{ wait_queue_splk_ }; - BOOST_ASSERT( ! active_ctx->wait_is_linked() ); - active_ctx->wait_link( wait_queue_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // unlock external lt - lt.unlock(); - // suspend this fiber - active_ctx->suspend( lk); - // relock external again before returning - try { - lt.lock(); - } catch (...) { - std::terminate(); - } - // post-conditions - BOOST_ASSERT( ! active_ctx->wait_is_linked() ); - } - - template< typename LockType, typename Pred > - void wait( LockType & lt, Pred pred) { - while ( ! pred() ) { - wait( lt); - } - } - - template< typename LockType, typename Clock, typename Duration > - cv_status wait_until( LockType & lt, std::chrono::time_point< Clock, Duration > const& timeout_time_) { - context * active_ctx = context::active(); - cv_status status = cv_status::no_timeout; - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - // atomically call lt.unlock() and block on *this - // store this fiber in waiting-queue - detail::spinlock_lock lk{ wait_queue_splk_ }; - BOOST_ASSERT( ! active_ctx->wait_is_linked() ); - active_ctx->wait_link( wait_queue_); - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - // unlock external lt - lt.unlock(); - // suspend this fiber - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - status = cv_status::timeout; - // relock local lk - lk.lock(); - // remove from waiting-queue - wait_queue_.remove( * active_ctx); - // unlock local lk - lk.unlock(); - } - // relock external again before returning - try { - lt.lock(); - } catch (...) { - std::terminate(); - } - // post-conditions - BOOST_ASSERT( ! active_ctx->wait_is_linked() ); - return status; - } - - template< typename LockType, typename Clock, typename Duration, typename Pred > - bool wait_until( LockType & lt, - std::chrono::time_point< Clock, Duration > const& timeout_time, Pred pred) { - while ( ! pred() ) { - if ( cv_status::timeout == wait_until( lt, timeout_time) ) { - return pred(); - } - } - return true; - } - - template< typename LockType, typename Rep, typename Period > - cv_status wait_for( LockType & lt, std::chrono::duration< Rep, Period > const& timeout_duration) { - return wait_until( lt, - std::chrono::steady_clock::now() + timeout_duration); - } - - template< typename LockType, typename Rep, typename Period, typename Pred > - bool wait_for( LockType & lt, std::chrono::duration< Rep, Period > const& timeout_duration, Pred pred) { - return wait_until( lt, - std::chrono::steady_clock::now() + timeout_duration, - pred); - } -}; - -class BOOST_FIBERS_DECL condition_variable { -private: - condition_variable_any cnd_; - -public: - condition_variable() = default; - - condition_variable( condition_variable const&) = delete; - condition_variable & operator=( condition_variable const&) = delete; - - void notify_one() noexcept { - cnd_.notify_one(); - } - - void notify_all() noexcept { - cnd_.notify_all(); - } - - void wait( std::unique_lock< mutex > & lt) { - // pre-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - cnd_.wait( lt); - // post-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - } - - template< typename Pred > - void wait( std::unique_lock< mutex > & lt, Pred pred) { - // pre-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - cnd_.wait( lt, pred); - // post-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - } - - template< typename Clock, typename Duration > - cv_status wait_until( std::unique_lock< mutex > & lt, - std::chrono::time_point< Clock, Duration > const& timeout_time) { - // pre-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - cv_status result = cnd_.wait_until( lt, timeout_time); - // post-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - return result; - } - - template< typename Clock, typename Duration, typename Pred > - bool wait_until( std::unique_lock< mutex > & lt, - std::chrono::time_point< Clock, Duration > const& timeout_time, Pred pred) { - // pre-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - bool result = cnd_.wait_until( lt, timeout_time, pred); - // post-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - return result; - } - - template< typename Rep, typename Period > - cv_status wait_for( std::unique_lock< mutex > & lt, - std::chrono::duration< Rep, Period > const& timeout_duration) { - // pre-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - cv_status result = cnd_.wait_for( lt, timeout_duration); - // post-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - return result; - } - - template< typename Rep, typename Period, typename Pred > - bool wait_for( std::unique_lock< mutex > & lt, - std::chrono::duration< Rep, Period > const& timeout_duration, Pred pred) { - // pre-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - bool result = cnd_.wait_for( lt, timeout_duration, pred); - // post-condition - BOOST_ASSERT( lt.owns_lock() ); - BOOST_ASSERT( context::active() == lt.mutex()->owner_); - return result; - } -}; - -}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_CONDITION_VARIABLE_H diff --git a/contrib/restricted/boost/boost/fiber/context.hpp b/contrib/restricted/boost/boost/fiber/context.hpp deleted file mode 100644 index 494014377a..0000000000 --- a/contrib/restricted/boost/boost/fiber/context.hpp +++ /dev/null @@ -1,513 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_CONTEXT_H -#define BOOST_FIBERS_CONTEXT_H - -#include <atomic> -#include <chrono> -#include <cstdint> -#include <exception> -#include <functional> -#include <iostream> -#include <map> -#include <memory> -#include <tuple> -#include <type_traits> - -#include <boost/assert.hpp> -#include <boost/config.hpp> -#if defined(BOOST_NO_CXX17_STD_APPLY) -#include <boost/context/detail/apply.hpp> -#endif -#include <boost/context/fiber.hpp> -#include <boost/context/stack_context.hpp> -#include <boost/intrusive/list.hpp> -#include <boost/intrusive/parent_from_member.hpp> -#include <boost/intrusive_ptr.hpp> -#include <boost/intrusive/set.hpp> -#include <boost/intrusive/slist.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/data.hpp> -#include <boost/fiber/detail/decay_copy.hpp> -#include <boost/fiber/detail/fss.hpp> -#include <boost/fiber/detail/spinlock.hpp> -#include <boost/fiber/exceptions.hpp> -#include <boost/fiber/fixedsize_stack.hpp> -#include <boost/fiber/policy.hpp> -#include <boost/fiber/properties.hpp> -#include <boost/fiber/segmented_stack.hpp> -#include <boost/fiber/type.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { - -class context; -class fiber; -class scheduler; - -namespace detail { - -struct wait_tag; -typedef intrusive::list_member_hook< - intrusive::tag< wait_tag >, - intrusive::link_mode< - intrusive::auto_unlink - > -> wait_hook; -// declaration of the functor that converts between -// the context class and the wait-hook -struct wait_functor { - // required types - typedef wait_hook hook_type; - typedef hook_type * hook_ptr; - typedef const hook_type * const_hook_ptr; - typedef context value_type; - typedef value_type * pointer; - typedef const value_type * const_pointer; - - // required static functions - static hook_ptr to_hook_ptr( value_type &value); - static const_hook_ptr to_hook_ptr( value_type const& value); - static pointer to_value_ptr( hook_ptr n); - static const_pointer to_value_ptr( const_hook_ptr n); -}; - -struct ready_tag; -typedef intrusive::list_member_hook< - intrusive::tag< ready_tag >, - intrusive::link_mode< - intrusive::auto_unlink - > -> ready_hook; - -struct sleep_tag; -typedef intrusive::set_member_hook< - intrusive::tag< sleep_tag >, - intrusive::link_mode< - intrusive::auto_unlink - > -> sleep_hook; - -struct worker_tag; -typedef intrusive::list_member_hook< - intrusive::tag< worker_tag >, - intrusive::link_mode< - intrusive::auto_unlink - > -> worker_hook; - -struct terminated_tag; -typedef intrusive::slist_member_hook< - intrusive::tag< terminated_tag >, - intrusive::link_mode< - intrusive::safe_link - > -> terminated_hook; - -struct remote_ready_tag; -typedef intrusive::slist_member_hook< - intrusive::tag< remote_ready_tag >, - intrusive::link_mode< - intrusive::safe_link - > -> remote_ready_hook; - -} - -class BOOST_FIBERS_DECL context { -public: - typedef intrusive::list< - context, - intrusive::function_hook< detail::wait_functor >, - intrusive::constant_time_size< false > - > wait_queue_t; - -private: - friend class dispatcher_context; - friend class main_context; - template< typename Fn, typename ... Arg > friend class worker_context; - friend class scheduler; - - struct fss_data { - void * vp{ nullptr }; - detail::fss_cleanup_function::ptr_t cleanup_function{}; - - fss_data() noexcept { - } - - fss_data( void * vp_, - detail::fss_cleanup_function::ptr_t const& fn) noexcept : - vp( vp_), - cleanup_function( fn) { - BOOST_ASSERT( cleanup_function); - } - - void do_cleanup() { - ( * cleanup_function)( vp); - } - }; - - typedef std::map< uintptr_t, fss_data > fss_data_t; - -#if ! defined(BOOST_FIBERS_NO_ATOMICS) - std::atomic< std::size_t > use_count_; -#else - std::size_t use_count_; -#endif -#if ! defined(BOOST_FIBERS_NO_ATOMICS) - detail::remote_ready_hook remote_ready_hook_{}; -#endif - detail::spinlock splk_{}; - bool terminated_{ false }; - wait_queue_t wait_queue_{}; -public: - detail::wait_hook wait_hook_{}; -#if ! defined(BOOST_FIBERS_NO_ATOMICS) - std::atomic< std::intptr_t > twstatus{ 0 }; -#endif -private: - scheduler * scheduler_{ nullptr }; - fss_data_t fss_data_{}; - detail::sleep_hook sleep_hook_{}; - detail::ready_hook ready_hook_{}; - detail::terminated_hook terminated_hook_{}; - detail::worker_hook worker_hook_{}; - fiber_properties * properties_{ nullptr }; - boost::context::fiber c_{}; - std::chrono::steady_clock::time_point tp_; - type type_; - launch policy_; - - context( std::size_t initial_count, type t, launch policy) noexcept : - use_count_{ initial_count }, - tp_{ (std::chrono::steady_clock::time_point::max)() }, - type_{ t }, - policy_{ policy } { - } - -public: - class id { - private: - context * impl_{ nullptr }; - - public: - id() = default; - - explicit id( context * impl) noexcept : - impl_{ impl } { - } - - bool operator==( id const& other) const noexcept { - return impl_ == other.impl_; - } - - bool operator!=( id const& other) const noexcept { - return impl_ != other.impl_; - } - - bool operator<( id const& other) const noexcept { - return impl_ < other.impl_; - } - - bool operator>( id const& other) const noexcept { - return other.impl_ < impl_; - } - - bool operator<=( id const& other) const noexcept { - return ! ( * this > other); - } - - bool operator>=( id const& other) const noexcept { - return ! ( * this < other); - } - - template< typename charT, class traitsT > - friend std::basic_ostream< charT, traitsT > & - operator<<( std::basic_ostream< charT, traitsT > & os, id const& other) { - if ( nullptr != other.impl_) { - return os << other.impl_; - } else { - return os << "{not-valid}"; - } - } - - explicit operator bool() const noexcept { - return nullptr != impl_; - } - - bool operator!() const noexcept { - return nullptr == impl_; - } - }; - - static context * active() noexcept; - - static void reset_active() noexcept; - - context( context const&) = delete; - context( context &&) = delete; - context & operator=( context const&) = delete; - context & operator=( context &&) = delete; - - friend bool - operator==( context const& lhs, context const& rhs) noexcept { - return & lhs == & rhs; - } - - virtual ~context(); - - scheduler * get_scheduler() const noexcept { - return scheduler_; - } - - id get_id() const noexcept; - - bool is_resumable() const noexcept { - if ( c_) return true; - else return false; - } - - void resume() noexcept; - void resume( detail::spinlock_lock &) noexcept; - void resume( context *) noexcept; - - void suspend() noexcept; - void suspend( detail::spinlock_lock &) noexcept; - - boost::context::fiber suspend_with_cc() noexcept; - boost::context::fiber terminate() noexcept; - - void join(); - - void yield() noexcept; - - bool wait_until( std::chrono::steady_clock::time_point const&) noexcept; - bool wait_until( std::chrono::steady_clock::time_point const&, - detail::spinlock_lock &) noexcept; - - void schedule( context *) noexcept; - - bool is_context( type t) const noexcept { - return type::none != ( type_ & t); - } - - void * get_fss_data( void const * vp) const; - - void set_fss_data( - void const * vp, - detail::fss_cleanup_function::ptr_t const& cleanup_fn, - void * data, - bool cleanup_existing); - - void set_properties( fiber_properties * props) noexcept; - - fiber_properties * get_properties() const noexcept { - return properties_; - } - - launch get_policy() const noexcept { - return policy_; - } - - bool worker_is_linked() const noexcept; - - bool ready_is_linked() const noexcept; - - bool remote_ready_is_linked() const noexcept; - - bool sleep_is_linked() const noexcept; - - bool terminated_is_linked() const noexcept; - - bool wait_is_linked() const noexcept; - - template< typename List > - void worker_link( List & lst) noexcept { - static_assert( std::is_same< typename List::value_traits::hook_type, detail::worker_hook >::value, "not a worker-queue"); - BOOST_ASSERT( ! worker_is_linked() ); - lst.push_back( * this); - } - - template< typename List > - void ready_link( List & lst) noexcept { - static_assert( std::is_same< typename List::value_traits::hook_type, detail::ready_hook >::value, "not a ready-queue"); - BOOST_ASSERT( ! ready_is_linked() ); - lst.push_back( * this); - } - - template< typename List > - void remote_ready_link( List & lst) noexcept { - static_assert( std::is_same< typename List::value_traits::hook_type, detail::remote_ready_hook >::value, "not a remote-ready-queue"); - BOOST_ASSERT( ! remote_ready_is_linked() ); - lst.push_back( * this); - } - - template< typename Set > - void sleep_link( Set & set) noexcept { - static_assert( std::is_same< typename Set::value_traits::hook_type,detail::sleep_hook >::value, "not a sleep-queue"); - BOOST_ASSERT( ! sleep_is_linked() ); - set.insert( * this); - } - - template< typename List > - void terminated_link( List & lst) noexcept { - static_assert( std::is_same< typename List::value_traits::hook_type, detail::terminated_hook >::value, "not a terminated-queue"); - BOOST_ASSERT( ! terminated_is_linked() ); - lst.push_back( * this); - } - - template< typename List > - void wait_link( List & lst) noexcept { - static_assert( std::is_same< typename List::value_traits::hook_type, detail::wait_hook >::value, "not a wait-queue"); - BOOST_ASSERT( ! wait_is_linked() ); - lst.push_back( * this); - } - - void worker_unlink() noexcept; - - void ready_unlink() noexcept; - - void sleep_unlink() noexcept; - - void wait_unlink() noexcept; - - void detach() noexcept; - - void attach( context *) noexcept; - - friend void intrusive_ptr_add_ref( context * ctx) noexcept { - BOOST_ASSERT( nullptr != ctx); - ctx->use_count_.fetch_add( 1, std::memory_order_relaxed); - } - - friend void intrusive_ptr_release( context * ctx) noexcept { - BOOST_ASSERT( nullptr != ctx); - if ( 1 == ctx->use_count_.fetch_sub( 1, std::memory_order_release) ) { - std::atomic_thread_fence( std::memory_order_acquire); - boost::context::fiber c = std::move( ctx->c_); - // destruct context - ctx->~context(); - // deallocated stack - std::move( c).resume(); - } - } -}; - -inline -bool operator<( context const& l, context const& r) noexcept { - return l.get_id() < r.get_id(); -} - -template< typename Fn, typename ... Arg > -class worker_context final : public context { -private: - typename std::decay< Fn >::type fn_; - std::tuple< Arg ... > arg_; - - boost::context::fiber - run_( boost::context::fiber && c) { - { - // fn and tpl must be destroyed before calling terminate() - auto fn = std::move( fn_); - auto arg = std::move( arg_); -#if (defined(BOOST_USE_UCONTEXT)||defined(BOOST_USE_WINFIB)) - std::move( c).resume(); -#endif -#if defined(BOOST_NO_CXX17_STD_APPLY) - boost::context::detail::apply( std::move( fn), std::move( arg) ); -#else - std::apply( std::move( fn), std::move( arg) ); -#endif - } - // terminate context - return terminate(); - } - -public: - template< typename StackAlloc > - worker_context( launch policy, - boost::context::preallocated const& palloc, StackAlloc && salloc, - Fn && fn, Arg ... arg) : - context{ 1, type::worker_context, policy }, - fn_( std::forward< Fn >( fn) ), - arg_( std::forward< Arg >( arg) ... ) { - c_ = boost::context::fiber{ std::allocator_arg, palloc, std::forward< StackAlloc >( salloc), - std::bind( & worker_context::run_, this, std::placeholders::_1) }; -#if (defined(BOOST_USE_UCONTEXT)||defined(BOOST_USE_WINFIB)) - c_ = std::move( c_).resume(); -#endif - } -}; - - -template< typename StackAlloc, typename Fn, typename ... Arg > -static intrusive_ptr< context > make_worker_context( launch policy, - StackAlloc && salloc, - Fn && fn, Arg ... arg) { - typedef worker_context< Fn, Arg ... > context_t; - - auto sctx = salloc.allocate(); - // reserve space for control structure - void * storage = reinterpret_cast< void * >( - ( reinterpret_cast< uintptr_t >( sctx.sp) - static_cast< uintptr_t >( sizeof( context_t) ) ) - & ~ static_cast< uintptr_t >( 0xff) ); - void * stack_bottom = reinterpret_cast< void * >( - reinterpret_cast< uintptr_t >( sctx.sp) - static_cast< uintptr_t >( sctx.size) ); - const std::size_t size = reinterpret_cast< uintptr_t >( storage) - reinterpret_cast< uintptr_t >( stack_bottom); - // placement new of context on top of fiber's stack - return intrusive_ptr< context >{ - new ( storage) context_t{ - policy, - boost::context::preallocated{ storage, size, sctx }, - std::forward< StackAlloc >( salloc), - std::forward< Fn >( fn), - std::forward< Arg >( arg) ... } }; -} - -namespace detail { - -inline -wait_functor::hook_ptr wait_functor::to_hook_ptr( wait_functor::value_type & value) { - return & value.wait_hook_; -} - -inline -wait_functor::const_hook_ptr wait_functor::to_hook_ptr( wait_functor::value_type const& value) { - return & value.wait_hook_; -} - -inline -wait_functor::pointer wait_functor::to_value_ptr( wait_functor::hook_ptr n) { - return intrusive::get_parent_from_member< context >( n, & context::wait_hook_); -} - -inline -wait_functor::const_pointer wait_functor::to_value_ptr( wait_functor::const_hook_ptr n) { - return intrusive::get_parent_from_member< context >( n, & context::wait_hook_); -} - -}}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_CONTEXT_H diff --git a/contrib/restricted/boost/boost/fiber/cuda/waitfor.hpp b/contrib/restricted/boost/boost/fiber/cuda/waitfor.hpp deleted file mode 100644 index 262efd9a8c..0000000000 --- a/contrib/restricted/boost/boost/fiber/cuda/waitfor.hpp +++ /dev/null @@ -1,139 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBERS_CUDA_WAITFOR_H -#define BOOST_FIBERS_CUDA_WAITFOR_H - -#include <initializer_list> -#include <mutex> -#include <iostream> -#include <set> -#include <tuple> -#include <vector> - -#include <boost/assert.hpp> -#include <boost/config.hpp> - -#include <cuda.h> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/is_all_same.hpp> -#include <boost/fiber/condition_variable.hpp> -#include <boost/fiber/mutex.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace cuda { -namespace detail { - -template< typename Rendezvous > -static void trampoline( cudaStream_t st, cudaError_t status, void * vp) { - Rendezvous * data = static_cast< Rendezvous * >( vp); - data->notify( st, status); -} - -class single_stream_rendezvous { -public: - single_stream_rendezvous( cudaStream_t st) { - unsigned int flags = 0; - cudaError_t status = ::cudaStreamAddCallback( st, trampoline< single_stream_rendezvous >, this, flags); - if ( cudaSuccess != status) { - st_ = st; - status_ = status; - done_ = true; - } - } - - void notify( cudaStream_t st, cudaError_t status) noexcept { - std::unique_lock< mutex > lk{ mtx_ }; - st_ = st; - status_ = status; - done_ = true; - lk.unlock(); - cv_.notify_one(); - } - - std::tuple< cudaStream_t, cudaError_t > wait() { - std::unique_lock< mutex > lk{ mtx_ }; - cv_.wait( lk, [this]{ return done_; }); - return std::make_tuple( st_, status_); - } - -private: - mutex mtx_{}; - condition_variable cv_{}; - cudaStream_t st_{}; - cudaError_t status_{ cudaErrorUnknown }; - bool done_{ false }; -}; - -class many_streams_rendezvous { -public: - many_streams_rendezvous( std::initializer_list< cudaStream_t > l) : - stx_{ l } { - results_.reserve( stx_.size() ); - for ( cudaStream_t st : stx_) { - unsigned int flags = 0; - cudaError_t status = ::cudaStreamAddCallback( st, trampoline< many_streams_rendezvous >, this, flags); - if ( cudaSuccess != status) { - std::unique_lock< mutex > lk{ mtx_ }; - stx_.erase( st); - results_.push_back( std::make_tuple( st, status) ); - } - } - } - - void notify( cudaStream_t st, cudaError_t status) noexcept { - std::unique_lock< mutex > lk{ mtx_ }; - stx_.erase( st); - results_.push_back( std::make_tuple( st, status) ); - if ( stx_.empty() ) { - lk.unlock(); - cv_.notify_one(); - } - } - - std::vector< std::tuple< cudaStream_t, cudaError_t > > wait() { - std::unique_lock< mutex > lk{ mtx_ }; - cv_.wait( lk, [this]{ return stx_.empty(); }); - return results_; - } - -private: - mutex mtx_{}; - condition_variable cv_{}; - std::set< cudaStream_t > stx_; - std::vector< std::tuple< cudaStream_t, cudaError_t > > results_; -}; - -} - -void waitfor_all(); - -inline -std::tuple< cudaStream_t, cudaError_t > waitfor_all( cudaStream_t st) { - detail::single_stream_rendezvous rendezvous( st); - return rendezvous.wait(); -} - -template< typename ... STP > -std::vector< std::tuple< cudaStream_t, cudaError_t > > waitfor_all( cudaStream_t st0, STP ... stx) { - static_assert( boost::fibers::detail::is_all_same< cudaStream_t, STP ...>::value, "all arguments must be of type `CUstream*`."); - detail::many_streams_rendezvous rendezvous{ st0, stx ... }; - return rendezvous.wait(); -} - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_CUDA_WAITFOR_H diff --git a/contrib/restricted/boost/boost/fiber/detail/config.hpp b/contrib/restricted/boost/boost/fiber/detail/config.hpp deleted file mode 100644 index 21dea693ac..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/config.hpp +++ /dev/null @@ -1,66 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_DETAIL_CONFIG_H -#define BOOST_FIBERS_DETAIL_CONFIG_H - -#include <cstddef> - -#include <boost/config.hpp> -#include <boost/predef.h> -#include <boost/detail/workaround.hpp> - -#ifdef BOOST_FIBERS_DECL -# undef BOOST_FIBERS_DECL -#endif - -#if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FIBERS_DYN_LINK) ) && ! defined(BOOST_FIBERS_STATIC_LINK) -# if defined(BOOST_FIBERS_SOURCE) -# define BOOST_FIBERS_DECL BOOST_SYMBOL_EXPORT -# define BOOST_FIBERS_BUILD_DLL -# else -# define BOOST_FIBERS_DECL BOOST_SYMBOL_IMPORT -# endif -#endif - -#if ! defined(BOOST_FIBERS_DECL) -# define BOOST_FIBERS_DECL -#endif - -#if ! defined(BOOST_FIBERS_SOURCE) && ! defined(BOOST_ALL_NO_LIB) && ! defined(BOOST_FIBERS_NO_LIB) -# define BOOST_LIB_NAME boost_fiber -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FIBERS_DYN_LINK) -# define BOOST_DYN_LINK -# endif -# include <boost/config/auto_link.hpp> -#endif - -#if BOOST_OS_LINUX || BOOST_OS_WINDOWS -# define BOOST_FIBERS_HAS_FUTEX -#endif - -#if (!defined(BOOST_FIBERS_HAS_FUTEX) && \ - (defined(BOOST_FIBERS_SPINLOCK_TTAS_FUTEX) || defined(BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX))) -# error "futex not supported on this platform" -#endif - -#if !defined(BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD) -# define BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD 16 -#endif - -#if !defined(BOOST_FIBERS_RETRY_THRESHOLD) -# define BOOST_FIBERS_RETRY_THRESHOLD 64 -#endif - -#if !defined(BOOST_FIBERS_SPIN_BEFORE_SLEEP0) -# define BOOST_FIBERS_SPIN_BEFORE_SLEEP0 32 -#endif - -#if !defined(BOOST_FIBERS_SPIN_BEFORE_YIELD) -# define BOOST_FIBERS_SPIN_BEFORE_YIELD 64 -#endif - -#endif // BOOST_FIBERS_DETAIL_CONFIG_H diff --git a/contrib/restricted/boost/boost/fiber/detail/context_spinlock_queue.hpp b/contrib/restricted/boost/boost/fiber/detail/context_spinlock_queue.hpp deleted file mode 100644 index f58fbd2296..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/context_spinlock_queue.hpp +++ /dev/null @@ -1,118 +0,0 @@ - -// Copyright Oliver Kowalke 2015. -// 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_FIBERS_DETAIL_SPINLOCK_QUEUE_H -#define BOOST_FIBERS_DETAIL_SPINLOCK_QUEUE_H - -#include <cstddef> -#include <cstring> -#include <mutex> - -#include <boost/config.hpp> - -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/spinlock.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -class context_spinlock_queue { -private: - typedef context * slot_type; - - mutable spinlock splk_{}; - std::size_t pidx_{ 0 }; - std::size_t cidx_{ 0 }; - std::size_t capacity_; - slot_type * slots_; - - void resize_() { - slot_type * old_slots = slots_; - slots_ = new slot_type[2*capacity_]; - std::size_t offset = capacity_ - cidx_; - std::memcpy( slots_, old_slots + cidx_, offset * sizeof( slot_type) ); - if ( 0 < cidx_) { - std::memcpy( slots_ + offset, old_slots, pidx_ * sizeof( slot_type) ); - } - cidx_ = 0; - pidx_ = capacity_ - 1; - capacity_ *= 2; - delete [] old_slots; - } - - bool is_full_() const noexcept { - return cidx_ == ((pidx_ + 1) % capacity_); - } - - bool is_empty_() const noexcept { - return cidx_ == pidx_; - } - -public: - context_spinlock_queue( std::size_t capacity = 4096) : - capacity_{ capacity } { - slots_ = new slot_type[capacity_]; - } - - ~context_spinlock_queue() { - delete [] slots_; - } - - context_spinlock_queue( context_spinlock_queue const&) = delete; - context_spinlock_queue & operator=( context_spinlock_queue const&) = delete; - - bool empty() const noexcept { - spinlock_lock lk{ splk_ }; - return is_empty_(); - } - - void push( context * c) { - spinlock_lock lk{ splk_ }; - if ( is_full_() ) { - resize_(); - } - slots_[pidx_] = c; - pidx_ = (pidx_ + 1) % capacity_; - } - - context * pop() { - spinlock_lock lk{ splk_ }; - context * c = nullptr; - if ( ! is_empty_() ) { - c = slots_[cidx_]; - cidx_ = (cidx_ + 1) % capacity_; - } - return c; - } - - context * steal() { - spinlock_lock lk{ splk_ }; - context * c = nullptr; - if ( ! is_empty_() ) { - c = slots_[cidx_]; - if ( c->is_context( type::pinned_context) ) { - return nullptr; - } - cidx_ = (cidx_ + 1) % capacity_; - } - return c; - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_SPINLOCK_QUEUE_H diff --git a/contrib/restricted/boost/boost/fiber/detail/context_spmc_queue.hpp b/contrib/restricted/boost/boost/fiber/detail/context_spmc_queue.hpp deleted file mode 100644 index 89f93044f9..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/context_spmc_queue.hpp +++ /dev/null @@ -1,197 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_DETAIL_CONTEXT_SPMC_QUEUE_H -#define BOOST_FIBERS_DETAIL_CONTEXT_SPMC_QUEUE_H - -#include <atomic> -#include <cstddef> -#include <cstdint> -#include <memory> -#include <type_traits> -#include <utility> - -#include <boost/assert.hpp> -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/context.hpp> - -// David Chase and Yossi Lev. Dynamic circular work-stealing deque. -// In SPAA ’05: Proceedings of the seventeenth annual ACM symposium -// on Parallelism in algorithms and architectures, pages 21–28, -// New York, NY, USA, 2005. ACM. -// -// Nhat Minh Lê, Antoniu Pop, Albert Cohen, and Francesco Zappa Nardelli. 2013. -// Correct and efficient work-stealing for weak memory models. -// In Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice -// of parallel programming (PPoPP '13). ACM, New York, NY, USA, 69-80. - -#if BOOST_COMP_CLANG -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-private-field" -#endif - -namespace boost { -namespace fibers { -namespace detail { - -class context_spmc_queue { -private: - class array { - private: - typedef std::atomic< context * > atomic_type; - typedef atomic_type storage_type; - - std::size_t capacity_; - storage_type * storage_; - - public: - array( std::size_t capacity) : - capacity_{ capacity }, - storage_{ new storage_type[capacity_] } { - for ( std::size_t i = 0; i < capacity_; ++i) { - ::new ( static_cast< void * >( std::addressof( storage_[i]) ) ) atomic_type{ nullptr }; - } - } - - ~array() { - for ( std::size_t i = 0; i < capacity_; ++i) { - reinterpret_cast< atomic_type * >( std::addressof( storage_[i]) )->~atomic_type(); - } - delete [] storage_; - } - - std::size_t capacity() const noexcept { - return capacity_; - } - - void push( std::size_t bottom, context * ctx) noexcept { - reinterpret_cast< atomic_type * >( - std::addressof( storage_[bottom % capacity_]) ) - ->store( ctx, std::memory_order_relaxed); - } - - context * pop( std::size_t top) noexcept { - return reinterpret_cast< atomic_type * >( - std::addressof( storage_[top % capacity_]) ) - ->load( std::memory_order_relaxed); - } - - array * resize( std::size_t bottom, std::size_t top) { - std::unique_ptr< array > tmp{ new array{ 2 * capacity_ } }; - for ( std::size_t i = top; i != bottom; ++i) { - tmp->push( i, pop( i) ); - } - return tmp.release(); - } - }; - - std::atomic< std::size_t > top_{ 0 }; - std::atomic< std::size_t > bottom_{ 0 }; - std::atomic< array * > array_; - std::vector< array * > old_arrays_{}; - char padding_[cacheline_length]; - -public: - context_spmc_queue( std::size_t capacity = 4096) : - array_{ new array{ capacity } } { - old_arrays_.reserve( 32); - } - - ~context_spmc_queue() { - for ( array * a : old_arrays_) { - delete a; - } - delete array_.load(); - } - - context_spmc_queue( context_spmc_queue const&) = delete; - context_spmc_queue & operator=( context_spmc_queue const&) = delete; - - bool empty() const noexcept { - std::size_t bottom = bottom_.load( std::memory_order_relaxed); - std::size_t top = top_.load( std::memory_order_relaxed); - return bottom <= top; - } - - void push( context * ctx) { - std::size_t bottom = bottom_.load( std::memory_order_relaxed); - std::size_t top = top_.load( std::memory_order_acquire); - array * a = array_.load( std::memory_order_relaxed); - if ( (a->capacity() - 1) < (bottom - top) ) { - // queue is full - // resize - array * tmp = a->resize( bottom, top); - old_arrays_.push_back( a); - std::swap( a, tmp); - array_.store( a, std::memory_order_relaxed); - } - a->push( bottom, ctx); - std::atomic_thread_fence( std::memory_order_release); - bottom_.store( bottom + 1, std::memory_order_relaxed); - } - - context * pop() { - std::size_t bottom = bottom_.load( std::memory_order_relaxed) - 1; - array * a = array_.load( std::memory_order_relaxed); - bottom_.store( bottom, std::memory_order_relaxed); - std::atomic_thread_fence( std::memory_order_seq_cst); - std::size_t top = top_.load( std::memory_order_relaxed); - context * ctx = nullptr; - if ( top <= bottom) { - // queue is not empty - ctx = a->pop( bottom); - BOOST_ASSERT( nullptr != ctx); - if ( top == bottom) { - // last element dequeued - if ( ! top_.compare_exchange_strong( top, top + 1, - std::memory_order_seq_cst, - std::memory_order_relaxed) ) { - // lose the race - ctx = nullptr; - } - bottom_.store( bottom + 1, std::memory_order_relaxed); - } - } else { - // queue is empty - bottom_.store( bottom + 1, std::memory_order_relaxed); - } - return ctx; - } - - context * steal() { - std::size_t top = top_.load( std::memory_order_acquire); - std::atomic_thread_fence( std::memory_order_seq_cst); - std::size_t bottom = bottom_.load( std::memory_order_acquire); - context * ctx = nullptr; - if ( top < bottom) { - // queue is not empty - array * a = array_.load( std::memory_order_consume); - ctx = a->pop( top); - BOOST_ASSERT( nullptr != ctx); - // do not steal pinned context (e.g. main-/dispatcher-context) - if ( ctx->is_context( type::pinned_context) ) { - return nullptr; - } - if ( ! top_.compare_exchange_strong( top, top + 1, - std::memory_order_seq_cst, - std::memory_order_relaxed) ) { - // lose the race - return nullptr; - } - } - return ctx; - } -}; - -}}} - -#if BOOST_COMP_CLANG -#pragma clang diagnostic pop -#endif - -#endif // BOOST_FIBERS_DETAIL_CONTEXT_SPMC_QUEUE_H diff --git a/contrib/restricted/boost/boost/fiber/detail/convert.hpp b/contrib/restricted/boost/boost/fiber/detail/convert.hpp deleted file mode 100644 index ba3bbbd0aa..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/convert.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_DETAIL_CONVERT_H -#define BOOST_FIBERS_DETAIL_CONVERT_H - -#include <chrono> -#include <memory> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -inline -std::chrono::steady_clock::time_point convert( - std::chrono::steady_clock::time_point const& timeout_time) noexcept { - return timeout_time; -} - -template< typename Clock, typename Duration > -std::chrono::steady_clock::time_point convert( - std::chrono::time_point< Clock, Duration > const& timeout_time) { - return std::chrono::steady_clock::now() + ( timeout_time - Clock::now() ); -} - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_CONVERT_H diff --git a/contrib/restricted/boost/boost/fiber/detail/cpu_relax.hpp b/contrib/restricted/boost/boost/fiber/detail/cpu_relax.hpp deleted file mode 100644 index 8a20aae059..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/cpu_relax.hpp +++ /dev/null @@ -1,82 +0,0 @@ - -// Copyright Oliver Kowalke 2016. -// 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_FIBERS_DETAIL_CPU_RELAX_H -#define BOOST_FIBERS_DETAIL_CPU_RELAX_H - -#include <chrono> -#include <thread> - -#include <boost/config.hpp> -#include <boost/predef.h> - -#include <boost/fiber/detail/config.hpp> - -#if BOOST_COMP_MSVC || BOOST_COMP_MSVC_EMULATED -# include <windows.h> -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -#if BOOST_ARCH_ARM -# if BOOST_COMP_MSVC -# define cpu_relax() YieldProcessor(); -# elif (defined(__ARM_ARCH_6K__) || \ - defined(__ARM_ARCH_6Z__) || \ - defined(__ARM_ARCH_6ZK__) || \ - defined(__ARM_ARCH_6T2__) || \ - defined(__ARM_ARCH_7__) || \ - defined(__ARM_ARCH_7A__) || \ - defined(__ARM_ARCH_7R__) || \ - defined(__ARM_ARCH_7M__) || \ - defined(__ARM_ARCH_7S__) || \ - defined(__ARM_ARCH_8A__) || \ - defined(__aarch64__)) -// http://groups.google.com/a/chromium.org/forum/#!msg/chromium-dev/YGVrZbxYOlU/Vpgy__zeBQAJ -// mnemonic 'yield' is supported from ARMv6k onwards -# define cpu_relax() asm volatile ("yield" ::: "memory"); -# else -# define cpu_relax() asm volatile ("nop" ::: "memory"); -# endif -#elif BOOST_ARCH_MIPS -# define cpu_relax() asm volatile ("pause" ::: "memory"); -#elif BOOST_ARCH_PPC -// http://code.metager.de/source/xref/gnu/glibc/sysdeps/powerpc/sys/platform/ppc.h -// http://stackoverflow.com/questions/5425506/equivalent-of-x86-pause-instruction-for-ppc -// mnemonic 'or' shared resource hints -// or 27, 27, 27 This form of 'or' provides a hint that performance -// will probably be imrpoved if shared resources dedicated -// to the executing processor are released for use by other -// processors -// extended mnemonics (available with POWER7) -// yield == or 27, 27, 27 -# define cpu_relax() asm volatile ("or 27,27,27" ::: "memory"); -#elif BOOST_ARCH_X86 -# if BOOST_COMP_MSVC || BOOST_COMP_MSVC_EMULATED -# define cpu_relax() YieldProcessor(); -# else -# define cpu_relax() asm volatile ("pause" ::: "memory"); -# endif -#else -# define cpu_relax() { \ - static constexpr std::chrono::microseconds us0{ 0 }; \ - std::this_thread::sleep_for( us0); \ - } -#endif - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_CPU_RELAX_H diff --git a/contrib/restricted/boost/boost/fiber/detail/data.hpp b/contrib/restricted/boost/boost/fiber/detail/data.hpp deleted file mode 100644 index c363817a09..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/data.hpp +++ /dev/null @@ -1,54 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_DETAIL_DATA_H -#define BOOST_FIBERS_DETAIL_DATA_H - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/spinlock.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -class context; - -namespace detail { - -struct data_t { - spinlock_lock * lk{ nullptr }; - context * ctx{ nullptr }; - context * from; - - explicit data_t( context * from_) noexcept : - from{ from_ } { - } - - explicit data_t( spinlock_lock * lk_, - context * from_) noexcept : - lk{ lk_ }, - from{ from_ } { - } - - explicit data_t( context * ctx_, - context * from_) noexcept : - ctx{ ctx_ }, - from{ from_ } { - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_DATA_H diff --git a/contrib/restricted/boost/boost/fiber/detail/decay_copy.hpp b/contrib/restricted/boost/boost/fiber/detail/decay_copy.hpp deleted file mode 100644 index eecfdd0ef6..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/decay_copy.hpp +++ /dev/null @@ -1,36 +0,0 @@ - -// Copyright Oliver Kowalke 2014. -// 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_FIBER_DETAIL_DECAY_COPY_H -#define BOOST_FIBER_DETAIL_DECAY_COPY_H - -#include <type_traits> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -template< typename T > -typename std::decay< T >::type -decay_copy( T && t) { - return std::forward< T >( t); -} - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -#include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBER_DETAIL_DECAY_COPY_H diff --git a/contrib/restricted/boost/boost/fiber/detail/disable_overload.hpp b/contrib/restricted/boost/boost/fiber/detail/disable_overload.hpp deleted file mode 100644 index 0c69804523..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/disable_overload.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -// Copyright Oliver Kowalke 2014. -// 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_FIBER_DETAIL_DISABLE_OVERLOAD_H -#define BOOST_FIBER_DETAIL_DISABLE_OVERLOAD_H - -#include <type_traits> - -#include <boost/config.hpp> -#include <boost/context/detail/disable_overload.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -template< typename X, typename Y > -using disable_overload = boost::context::detail::disable_overload< X, Y >; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -#include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBER_DETAIL_DISABLE_OVERLOAD_H diff --git a/contrib/restricted/boost/boost/fiber/detail/fss.hpp b/contrib/restricted/boost/boost/fiber/detail/fss.hpp deleted file mode 100644 index 27a7d67f26..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/fss.hpp +++ /dev/null @@ -1,59 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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) -// -// based on tss.hpp from boost.thread - -#ifndef BOOST_FIBERS_DETAIL_FSS_H -#define BOOST_FIBERS_DETAIL_FSS_H - -#include <atomic> -#include <cstddef> - -#include <boost/config.hpp> -#include <boost/intrusive_ptr.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -class fss_cleanup_function { -private: - std::atomic< std::size_t > use_count_{ 0 }; - -public: - typedef intrusive_ptr< fss_cleanup_function > ptr_t; - - fss_cleanup_function() noexcept = default; - - virtual ~fss_cleanup_function() = default; - - virtual void operator()( void * data) = 0; - - friend inline - void intrusive_ptr_add_ref( fss_cleanup_function * p) noexcept { - p->use_count_.fetch_add( 1, std::memory_order_relaxed); - } - - friend inline - void intrusive_ptr_release( fss_cleanup_function * p) noexcept { - if ( 1 == p->use_count_.fetch_sub( 1, std::memory_order_release) ) { - std::atomic_thread_fence( std::memory_order_acquire); - delete p; - } - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_FSS_H diff --git a/contrib/restricted/boost/boost/fiber/detail/futex.hpp b/contrib/restricted/boost/boost/fiber/detail/futex.hpp deleted file mode 100644 index e64bd5990d..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/futex.hpp +++ /dev/null @@ -1,61 +0,0 @@ - -// Copyright Oliver Kowalke 2016. -// 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_FIBERS_DETAIL_FUTEX_H -#define BOOST_FIBERS_DETAIL_FUTEX_H - -#include <boost/config.hpp> -#include <boost/predef.h> - -#include <boost/fiber/detail/config.hpp> - -#if BOOST_OS_LINUX -extern "C" { -#include <linux/futex.h> -#include <sys/syscall.h> -} -#elif BOOST_OS_WINDOWS -#include <windows.h> -#endif - -namespace boost { -namespace fibers { -namespace detail { - -#if BOOST_OS_LINUX -BOOST_FORCEINLINE -int sys_futex( void * addr, std::int32_t op, std::int32_t x) { - return ::syscall( SYS_futex, addr, op, x, nullptr, nullptr, 0); -} - -BOOST_FORCEINLINE -int futex_wake( std::atomic< std::int32_t > * addr) { - return 0 <= sys_futex( static_cast< void * >( addr), FUTEX_WAKE_PRIVATE, 1) ? 0 : -1; -} - -BOOST_FORCEINLINE -int futex_wait( std::atomic< std::int32_t > * addr, std::int32_t x) { - return 0 <= sys_futex( static_cast< void * >( addr), FUTEX_WAIT_PRIVATE, x) ? 0 : -1; -} -#elif BOOST_OS_WINDOWS -BOOST_FORCEINLINE -int futex_wake( std::atomic< std::int32_t > * addr) { - ::WakeByAddressSingle( static_cast< void * >( addr) ); - return 0; -} - -BOOST_FORCEINLINE -int futex_wait( std::atomic< std::int32_t > * addr, std::int32_t x) { - ::WaitOnAddress( static_cast< volatile void * >( addr), & x, sizeof( x), INFINITE); - return 0; -} -#else -# warn "no futex support on this platform" -#endif - -}}} - -#endif // BOOST_FIBERS_DETAIL_FUTEX_H diff --git a/contrib/restricted/boost/boost/fiber/detail/is_all_same.hpp b/contrib/restricted/boost/boost/fiber/detail/is_all_same.hpp deleted file mode 100644 index b72fa7910a..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/is_all_same.hpp +++ /dev/null @@ -1,44 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBERS_DETAIL_IS_ALL_SAME_H -#define BOOST_FIBERS_DETAIL_IS_ALL_SAME_H - -#include <type_traits> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -template< typename X, typename ... Y > -struct is_all_same; - -template< typename X, typename Y0, typename ... Y > -struct is_all_same< X, Y0, Y ... > { - static constexpr bool value = - std::is_same< X, Y0 >::value && is_all_same< X, Y ... >::value; -}; - -template< typename X, typename Y0 > -struct is_all_same< X, Y0 > { - static constexpr bool value = std::is_same< X, Y0 >::value; -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_IS_ALL_SAME_H diff --git a/contrib/restricted/boost/boost/fiber/detail/rtm.hpp b/contrib/restricted/boost/boost/fiber/detail/rtm.hpp deleted file mode 100644 index 5188b0d216..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/rtm.hpp +++ /dev/null @@ -1,94 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBER_DETAIL_RTM_H -#define BOOST_FIBER_DETAIL_RTM_H - -#include <cstdint> - -#include <boost/assert.hpp> -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -struct rtm_status { - enum { - none = 0, - explicit_abort = 1 << 0, - may_retry = 1 << 1, - memory_conflict = 1 << 2, - buffer_overflow = 1 << 3, - debug_hit = 1 << 4, - nested_abort = 1 << 5 - }; - - static constexpr std::uint32_t success = ~std::uint32_t{ 0 }; -}; - -static BOOST_FORCEINLINE -std::uint32_t rtm_begin() noexcept { - std::uint32_t result = rtm_status::success; - __asm__ __volatile__ - ( - ".byte 0xc7,0xf8 ; .long 0" - : "+a" (result) - : - : "memory" - ); - return result; -} - -static BOOST_FORCEINLINE -void rtm_end() noexcept { - __asm__ __volatile__ - ( - ".byte 0x0f,0x01,0xd5" - : - : - : "memory" - ); -} - -static BOOST_FORCEINLINE -void rtm_abort_lock_not_free() noexcept { - __asm__ __volatile__ - ( - ".byte 0xc6,0xf8,0xff" - : - : - : "memory" - ); -} - -static BOOST_FORCEINLINE -bool rtm_test() noexcept { - bool result; - __asm__ __volatile__ - ( - ".byte 0x0f,0x01,0xd6; setz %0" - : "=q" (result) - : - : "memory" - ); - return result; -} - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBER_DETAIL_RTM_H diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock.hpp deleted file mode 100644 index 59d2a5cd2b..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/spinlock.hpp +++ /dev/null @@ -1,84 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_SPINLOCK_H -#define BOOST_FIBERS_SPINLOCK_H - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#if !defined(BOOST_FIBERS_NO_ATOMICS) -# include <mutex> -# include <boost/fiber/detail/spinlock_ttas_adaptive.hpp> -# include <boost/fiber/detail/spinlock_ttas.hpp> -# if defined(BOOST_FIBERS_HAS_FUTEX) -# include <boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp> -# include <boost/fiber/detail/spinlock_ttas_futex.hpp> -# endif -# if defined(BOOST_USE_TSX) -# include <boost/fiber/detail/spinlock_rtm.hpp> -# endif -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -#if defined(BOOST_FIBERS_NO_ATOMICS) -struct spinlock { - constexpr spinlock() noexcept {} - void lock() noexcept {} - void unlock() noexcept {} -}; - -struct spinlock_lock { - constexpr spinlock_lock( spinlock &) noexcept {} - void lock() noexcept {} - void unlock() noexcept {} -}; -#else -# if defined(BOOST_FIBERS_SPINLOCK_STD_MUTEX) -using spinlock = std::mutex; -# elif defined(BOOST_FIBERS_SPINLOCK_TTAS_FUTEX) -# if defined(BOOST_USE_TSX) -using spinlock = spinlock_rtm< spinlock_ttas_futex >; -# else -using spinlock = spinlock_ttas_futex; -# endif -# elif defined(BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX) -# if defined(BOOST_USE_TSX) -using spinlock = spinlock_rtm< spinlock_ttas_adaptive_futex >; -# else -using spinlock = spinlock_ttas_adaptive_futex; -# endif -# elif defined(BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE) -# if defined(BOOST_USE_TSX) -using spinlock = spinlock_rtm< spinlock_ttas_adaptive >; -# else -using spinlock = spinlock_ttas_adaptive; -# endif -# else -# if defined(BOOST_USE_TSX) -using spinlock = spinlock_rtm< spinlock_ttas >; -# else -using spinlock = spinlock_ttas; -# endif -# endif -using spinlock_lock = std::unique_lock< spinlock >; -#endif - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_SPINLOCK_H diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_rtm.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_rtm.hpp deleted file mode 100644 index 5cc4a5e9af..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/spinlock_rtm.hpp +++ /dev/null @@ -1,126 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBERS_SPINLOCK_RTM_H -#define BOOST_FIBERS_SPINLOCK_RTM_H - -#include <atomic> -#include <chrono> -#include <cmath> -#include <random> -#include <thread> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/cpu_relax.hpp> -#include <boost/fiber/detail/rtm.hpp> -#include <boost/fiber/detail/spinlock_status.hpp> - -namespace boost { -namespace fibers { -namespace detail { - -template< typename FBSplk > -class spinlock_rtm { -private: - FBSplk splk_{}; - -public: - spinlock_rtm() = default; - - spinlock_rtm( spinlock_rtm const&) = delete; - spinlock_rtm & operator=( spinlock_rtm const&) = delete; - - void lock() noexcept { - static thread_local std::minstd_rand generator{ std::random_device{}() }; - std::size_t collisions = 0 ; - for ( std::size_t retries = 0; retries < BOOST_FIBERS_RETRY_THRESHOLD; ++retries) { - std::uint32_t status; - if ( rtm_status::success == ( status = rtm_begin() ) ) { - // add lock to read-set - if ( spinlock_status::unlocked == splk_.state_.load( std::memory_order_relaxed) ) { - // lock is free, enter critical section - return; - } - // lock was acquired by another thread - // explicit abort of transaction with abort argument 'lock not free' - rtm_abort_lock_not_free(); - } - // transaction aborted - if ( rtm_status::none != (status & rtm_status::may_retry) || - rtm_status::none != (status & rtm_status::memory_conflict) ) { - // another logical processor conflicted with a memory address that was - // part or the read-/write-set - if ( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD > collisions) { - std::uniform_int_distribution< std::size_t > distribution{ - 0, static_cast< std::size_t >( 1) << (std::min)(collisions, static_cast< std::size_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) }; - const std::size_t z = distribution( generator); - ++collisions; - for ( std::size_t i = 0; i < z; ++i) { - cpu_relax(); - } - } else { - std::this_thread::yield(); - } - } else if ( rtm_status::none != (status & rtm_status::explicit_abort) && - rtm_status::none == (status & rtm_status::nested_abort) ) { - // another logical processor has acquired the lock and - // abort was not caused by a nested transaction - // wait till lock becomes free again - std::size_t count = 0; - while ( spinlock_status::locked == splk_.state_.load( std::memory_order_relaxed) ) { - if ( BOOST_FIBERS_SPIN_BEFORE_SLEEP0 > count) { - ++count; - cpu_relax(); - } else if ( BOOST_FIBERS_SPIN_BEFORE_YIELD > count) { - ++count; - static constexpr std::chrono::microseconds us0{ 0 }; - std::this_thread::sleep_for( us0); -#if 0 - using namespace std::chrono_literals; - std::this_thread::sleep_for( 0ms); -#endif - } else { - std::this_thread::yield(); - } - } - } else { - // transaction aborted due: - // - internal buffer to track transactional state overflowed - // - debug exception or breakpoint exception was hit - // - abort during execution of nested transactions (max nesting limit exceeded) - // -> use fallback path - break; - } - } - splk_.lock(); - } - - bool try_lock() noexcept { - if ( rtm_status::success != rtm_begin() ) { - return false; - } - - // add lock to read-set - if ( spinlock_status::unlocked != splk_.state_.load( std::memory_order_relaxed) ) { - // lock was acquired by another thread - // explicit abort of transaction with abort argument 'lock not free' - rtm_abort_lock_not_free(); - } - return true; - } - - void unlock() noexcept { - if ( spinlock_status::unlocked == splk_.state_.load( std::memory_order_acquire) ) { - rtm_end(); - } else { - splk_.unlock(); - } - } -}; - -}}} - -#endif // BOOST_FIBERS_SPINLOCK_RTM_H diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_status.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_status.hpp deleted file mode 100644 index 74f09e4acc..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/spinlock_status.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBERS_SPINLOCK_STATUS_H -#define BOOST_FIBERS_SPINLOCK_STATUS_H - -namespace boost { -namespace fibers { -namespace detail { - -enum class spinlock_status { - locked = 0, - unlocked -}; - -}}} - -#endif // BOOST_FIBERS_SPINLOCK_STATUS_H diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas.hpp deleted file mode 100644 index f3302ed17e..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas.hpp +++ /dev/null @@ -1,116 +0,0 @@ - -// Copyright Oliver Kowalke 2016. -// 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_FIBERS_SPINLOCK_TTAS_H -#define BOOST_FIBERS_SPINLOCK_TTAS_H - -#include <atomic> -#include <chrono> -#include <cmath> -#include <random> -#include <thread> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/cpu_relax.hpp> -#include <boost/fiber/detail/spinlock_status.hpp> - -// based on informations from: -// https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops -// https://software.intel.com/en-us/articles/long-duration-spin-wait-loops-on-hyper-threading-technology-enabled-intel-processors - -namespace boost { -namespace fibers { -namespace detail { - -class spinlock_ttas { -private: - template< typename FBSplk > - friend class spinlock_rtm; - - std::atomic< spinlock_status > state_{ spinlock_status::unlocked }; - -public: - spinlock_ttas() = default; - - spinlock_ttas( spinlock_ttas const&) = delete; - spinlock_ttas & operator=( spinlock_ttas const&) = delete; - - void lock() noexcept { - static thread_local std::minstd_rand generator{ std::random_device{}() }; - std::size_t collisions = 0 ; - for (;;) { - // avoid using multiple pause instructions for a delay of a specific cycle count - // the delay of cpu_relax() (pause on Intel) depends on the processor family - // the cycle count can not guaranteed from one system to the next - // -> check the shared variable 'state_' in between each cpu_relax() to prevent - // unnecessarily long delays on some systems - std::size_t retries = 0; - // test shared variable 'status_' - // first access to 'state_' -> chache miss - // sucessive acccess to 'state_' -> cache hit - // if 'state_' was released by other fiber - // cached 'state_' is invalidated -> cache miss - while ( spinlock_status::locked == state_.load( std::memory_order_relaxed) ) { -#if !defined(BOOST_FIBERS_SPIN_SINGLE_CORE) - if ( BOOST_FIBERS_SPIN_BEFORE_SLEEP0 > retries) { - ++retries; - // give CPU a hint that this thread is in a "spin-wait" loop - // delays the next instruction's execution for a finite period of time (depends on processor family) - // the CPU is not under demand, parts of the pipeline are no longer being used - // -> reduces the power consumed by the CPU - // -> prevent pipeline stalls - cpu_relax(); - } else if ( BOOST_FIBERS_SPIN_BEFORE_YIELD > retries) { - // std::this_thread::sleep_for( 0us) has a fairly long instruction path length, - // combined with an expensive ring3 to ring 0 transition costing about 1000 cycles - // std::this_thread::sleep_for( 0us) lets give up this_thread the remaining part of its time slice - // if and only if a thread of equal or greater priority is ready to run - static constexpr std::chrono::microseconds us0{ 0 }; - std::this_thread::sleep_for( us0); - } else { - // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice, - // but only to another thread on the same processor - // instead of constant checking, a thread only checks if no other useful work is pending - std::this_thread::yield(); - } -#else - std::this_thread::yield(); -#endif - } - // test-and-set shared variable 'status_' - // everytime 'status_' is signaled over the bus, even if the test failes - if ( spinlock_status::locked == state_.exchange( spinlock_status::locked, std::memory_order_acquire) ) { - // spinlock now contended - // utilize 'Binary Exponential Backoff' algorithm - // linear_congruential_engine is a random number engine based on Linear congruential generator (LCG) - std::uniform_int_distribution< std::size_t > distribution{ - 0, static_cast< std::size_t >( 1) << (std::min)(collisions, static_cast< std::size_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) }; - const std::size_t z = distribution( generator); - ++collisions; - for ( std::size_t i = 0; i < z; ++i) { - // -> reduces the power consumed by the CPU - // -> prevent pipeline stalls - cpu_relax(); - } - } else { - // success, thread has acquired the lock - break; - } - } - } - - bool try_lock() noexcept { - return spinlock_status::unlocked == state_.exchange( spinlock_status::locked, std::memory_order_acquire); - } - - void unlock() noexcept { - state_.store( spinlock_status::unlocked, std::memory_order_release); - } -}; - -}}} - -#endif // BOOST_FIBERS_SPINLOCK_TTAS_H diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive.hpp deleted file mode 100644 index d1f8b73cf3..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive.hpp +++ /dev/null @@ -1,124 +0,0 @@ - -// Copyright Oliver Kowalke 2016. -// 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_FIBERS_SPINLOCK_TTAS_ADAPTIVE_H -#define BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_H - -#include <atomic> -#include <chrono> -#include <cmath> -#include <random> -#include <thread> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/cpu_relax.hpp> -#include <boost/fiber/detail/spinlock_status.hpp> - -// based on informations from: -// https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops -// https://software.intel.com/en-us/articles/long-duration-spin-wait-loops-on-hyper-threading-technology-enabled-intel-processors - -namespace boost { -namespace fibers { -namespace detail { - -class spinlock_ttas_adaptive { -private: - template< typename FBSplk > - friend class spinlock_rtm; - - std::atomic< spinlock_status > state_{ spinlock_status::unlocked }; - std::atomic< std::size_t > retries_{ 0 }; - -public: - spinlock_ttas_adaptive() = default; - - spinlock_ttas_adaptive( spinlock_ttas_adaptive const&) = delete; - spinlock_ttas_adaptive & operator=( spinlock_ttas_adaptive const&) = delete; - - void lock() noexcept { - static thread_local std::minstd_rand generator{ std::random_device{}() }; - std::size_t collisions = 0 ; - for (;;) { - std::size_t retries = 0; - const std::size_t prev_retries = retries_.load( std::memory_order_relaxed); - const std::size_t max_relax_retries = (std::min)( - static_cast< std::size_t >( BOOST_FIBERS_SPIN_BEFORE_SLEEP0), 2 * prev_retries + 10); - const std::size_t max_sleep_retries = (std::min)( - static_cast< std::size_t >( BOOST_FIBERS_SPIN_BEFORE_YIELD), 2 * prev_retries + 10); - // avoid using multiple pause instructions for a delay of a specific cycle count - // the delay of cpu_relax() (pause on Intel) depends on the processor family - // the cycle count can not guaranteed from one system to the next - // -> check the shared variable 'state_' in between each cpu_relax() to prevent - // unnecessarily long delays on some systems - // test shared variable 'status_' - // first access to 'state_' -> chache miss - // sucessive acccess to 'state_' -> cache hit - // if 'state_' was released by other fiber - // cached 'state_' is invalidated -> cache miss - while ( spinlock_status::locked == state_.load( std::memory_order_relaxed) ) { -#if !defined(BOOST_FIBERS_SPIN_SINGLE_CORE) - if ( max_relax_retries > retries) { - ++retries; - // give CPU a hint that this thread is in a "spin-wait" loop - // delays the next instruction's execution for a finite period of time (depends on processor family) - // the CPU is not under demand, parts of the pipeline are no longer being used - // -> reduces the power consumed by the CPU - // -> prevent pipeline stalls - cpu_relax(); - } else if ( max_sleep_retries > retries) { - ++retries; - // std::this_thread::sleep_for( 0us) has a fairly long instruction path length, - // combined with an expensive ring3 to ring 0 transition costing about 1000 cycles - // std::this_thread::sleep_for( 0us) lets give up this_thread the remaining part of its time slice - // if and only if a thread of equal or greater priority is ready to run - static constexpr std::chrono::microseconds us0{ 0 }; - std::this_thread::sleep_for( us0); - } else { - // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice, - // but only to another thread on the same processor - // instead of constant checking, a thread only checks if no other useful work is pending - std::this_thread::yield(); - } -#else - std::this_thread::yield(); -#endif - } - // test-and-set shared variable 'status_' - // everytime 'status_' is signaled over the bus, even if the test failes - if ( spinlock_status::locked == state_.exchange( spinlock_status::locked, std::memory_order_acquire) ) { - // spinlock now contended - // utilize 'Binary Exponential Backoff' algorithm - // linear_congruential_engine is a random number engine based on Linear congruential generator (LCG) - std::uniform_int_distribution< std::size_t > distribution{ - 0, static_cast< std::size_t >( 1) << (std::min)(collisions, static_cast< std::size_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) }; - const std::size_t z = distribution( generator); - ++collisions; - for ( std::size_t i = 0; i < z; ++i) { - // -> reduces the power consumed by the CPU - // -> prevent pipeline stalls - cpu_relax(); - } - } else { - retries_.store( prev_retries + (retries - prev_retries) / 8, std::memory_order_relaxed); - // success, thread has acquired the lock - break; - } - } - } - - bool try_lock() noexcept { - return spinlock_status::unlocked == state_.exchange( spinlock_status::locked, std::memory_order_acquire); - } - - void unlock() noexcept { - state_.store( spinlock_status::unlocked, std::memory_order_release); - } -}; - -}}} - -#endif // BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_H diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp deleted file mode 100644 index 0f0b191e67..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp +++ /dev/null @@ -1,136 +0,0 @@ - -// Copyright Oliver Kowalke 2016. -// 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_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX_H -#define BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX_H - -#include <atomic> -#include <cmath> -#include <random> -#include <thread> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/cpu_relax.hpp> -#include <boost/fiber/detail/futex.hpp> - -// based on informations from: -// https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops -// https://software.intel.com/en-us/articles/long-duration-spin-wait-loops-on-hyper-threading-technology-enabled-intel-processors - -namespace boost { -namespace fibers { -namespace detail { - -class spinlock_ttas_adaptive_futex { -private: - template< typename FBSplk > - friend class spinlock_rtm; - - std::atomic< std::int32_t > value_{ 0 }; - std::atomic< std::int32_t > retries_{ 0 }; - -public: - spinlock_ttas_adaptive_futex() = default; - - spinlock_ttas_adaptive_futex( spinlock_ttas_adaptive_futex const&) = delete; - spinlock_ttas_adaptive_futex & operator=( spinlock_ttas_adaptive_futex const&) = delete; - - void lock() noexcept { - static thread_local std::minstd_rand generator{ std::random_device{}() }; - std::int32_t collisions = 0, retries = 0, expected = 0; - const std::int32_t prev_retries = retries_.load( std::memory_order_relaxed); - const std::int32_t max_relax_retries = (std::min)( - static_cast< std::int32_t >( BOOST_FIBERS_SPIN_BEFORE_SLEEP0), 2 * prev_retries + 10); - const std::int32_t max_sleep_retries = (std::min)( - static_cast< std::int32_t >( BOOST_FIBERS_SPIN_BEFORE_YIELD), 2 * prev_retries + 10); - // after max. spins or collisions suspend via futex - while ( retries++ < BOOST_FIBERS_RETRY_THRESHOLD) { - // avoid using multiple pause instructions for a delay of a specific cycle count - // the delay of cpu_relax() (pause on Intel) depends on the processor family - // the cycle count can not guaranteed from one system to the next - // -> check the shared variable 'value_' in between each cpu_relax() to prevent - // unnecessarily long delays on some systems - // test shared variable 'status_' - // first access to 'value_' -> chache miss - // sucessive acccess to 'value_' -> cache hit - // if 'value_' was released by other fiber - // cached 'value_' is invalidated -> cache miss - if ( 0 != ( expected = value_.load( std::memory_order_relaxed) ) ) { -#if !defined(BOOST_FIBERS_SPIN_SINGLE_CORE) - if ( max_relax_retries > retries) { - // give CPU a hint that this thread is in a "spin-wait" loop - // delays the next instruction's execution for a finite period of time (depends on processor family) - // the CPU is not under demand, parts of the pipeline are no longer being used - // -> reduces the power consumed by the CPU - // -> prevent pipeline stalls - cpu_relax(); - } else if ( max_sleep_retries > retries) { - // std::this_thread::sleep_for( 0us) has a fairly long instruction path length, - // combined with an expensive ring3 to ring 0 transition costing about 1000 cycles - // std::this_thread::sleep_for( 0us) lets give up this_thread the remaining part of its time slice - // if and only if a thread of equal or greater priority is ready to run - static constexpr std::chrono::microseconds us0{ 0 }; - std::this_thread::sleep_for( us0); - } else { - // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice, - // but only to another thread on the same processor - // instead of constant checking, a thread only checks if no other useful work is pending - std::this_thread::yield(); - } -#else - // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice, - // but only to another thread on the same processor - // instead of constant checking, a thread only checks if no other useful work is pending - std::this_thread::yield(); -#endif - } else if ( ! value_.compare_exchange_strong( expected, 1, std::memory_order_acquire) ) { - // spinlock now contended - // utilize 'Binary Exponential Backoff' algorithm - // linear_congruential_engine is a random number engine based on Linear congruential generator (LCG) - std::uniform_int_distribution< std::int32_t > distribution{ - 0, static_cast< std::int32_t >( 1) << (std::min)(collisions, static_cast< std::int32_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) }; - const std::int32_t z = distribution( generator); - ++collisions; - for ( std::int32_t i = 0; i < z; ++i) { - // -> reduces the power consumed by the CPU - // -> prevent pipeline stalls - cpu_relax(); - } - } else { - // success, lock acquired - retries_.store( prev_retries + (retries - prev_retries) / 8, std::memory_order_relaxed); - return; - } - } - // failure, lock not acquired - // pause via futex - if ( 2 != expected) { - expected = value_.exchange( 2, std::memory_order_acquire); - } - while ( 0 != expected) { - futex_wait( & value_, 2); - expected = value_.exchange( 2, std::memory_order_acquire); - } - // success, lock acquired - retries_.store( prev_retries + (retries - prev_retries) / 8, std::memory_order_relaxed); - } - - bool try_lock() noexcept { - std::int32_t expected = 0; - return value_.compare_exchange_strong( expected, 1, std::memory_order_acquire); - } - - void unlock() noexcept { - if ( 1 != value_.fetch_sub( 1, std::memory_order_acquire) ) { - value_.store( 0, std::memory_order_release); - futex_wake( & value_); - } - } -}; - -}}} - -#endif // BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX_H diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_futex.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_futex.hpp deleted file mode 100644 index fd30c4120e..0000000000 --- a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_futex.hpp +++ /dev/null @@ -1,127 +0,0 @@ - -// Copyright Oliver Kowalke 2016. -// 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_FIBERS_spinlock_ttas_futex_FUTEX_H -#define BOOST_FIBERS_spinlock_ttas_futex_FUTEX_H - -#include <atomic> -#include <cmath> -#include <random> -#include <thread> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/cpu_relax.hpp> -#include <boost/fiber/detail/futex.hpp> - -// based on informations from: -// https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops -// https://software.intel.com/en-us/articles/long-duration-spin-wait-loops-on-hyper-threading-technology-enabled-intel-processors - -namespace boost { -namespace fibers { -namespace detail { - -class spinlock_ttas_futex { -private: - template< typename FBSplk > - friend class spinlock_rtm; - - std::atomic< std::int32_t > value_{ 0 }; - -public: - spinlock_ttas_futex() = default; - - spinlock_ttas_futex( spinlock_ttas_futex const&) = delete; - spinlock_ttas_futex & operator=( spinlock_ttas_futex const&) = delete; - - void lock() noexcept { - static thread_local std::minstd_rand generator{ std::random_device{}() }; - std::int32_t collisions = 0, retries = 0, expected = 0; - // after max. spins or collisions suspend via futex - while ( retries++ < BOOST_FIBERS_RETRY_THRESHOLD) { - // avoid using multiple pause instructions for a delay of a specific cycle count - // the delay of cpu_relax() (pause on Intel) depends on the processor family - // the cycle count can not guaranteed from one system to the next - // -> check the shared variable 'value_' in between each cpu_relax() to prevent - // unnecessarily long delays on some systems - // test shared variable 'status_' - // first access to 'value_' -> chache miss - // sucessive acccess to 'value_' -> cache hit - // if 'value_' was released by other fiber - // cached 'value_' is invalidated -> cache miss - if ( 0 != ( expected = value_.load( std::memory_order_relaxed) ) ) { -#if !defined(BOOST_FIBERS_SPIN_SINGLE_CORE) - if ( BOOST_FIBERS_SPIN_BEFORE_SLEEP0 > retries) { - // give CPU a hint that this thread is in a "spin-wait" loop - // delays the next instruction's execution for a finite period of time (depends on processor family) - // the CPU is not under demand, parts of the pipeline are no longer being used - // -> reduces the power consumed by the CPU - // -> prevent pipeline stalls - cpu_relax(); - } else if ( BOOST_FIBERS_SPIN_BEFORE_YIELD > retries) { - // std::this_thread::sleep_for( 0us) has a fairly long instruction path length, - // combined with an expensive ring3 to ring 0 transition costing about 1000 cycles - // std::this_thread::sleep_for( 0us) lets give up this_thread the remaining part of its time slice - // if and only if a thread of equal or greater priority is ready to run - static constexpr std::chrono::microseconds us0{ 0 }; - std::this_thread::sleep_for( us0); - } else { - // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice, - // but only to another thread on the same processor - // instead of constant checking, a thread only checks if no other useful work is pending - std::this_thread::yield(); - } -#else - // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice, - // but only to another thread on the same processor - // instead of constant checking, a thread only checks if no other useful work is pending - std::this_thread::yield(); -#endif - } else if ( ! value_.compare_exchange_strong( expected, 1, std::memory_order_acquire) ) { - // spinlock now contended - // utilize 'Binary Exponential Backoff' algorithm - // linear_congruential_engine is a random number engine based on Linear congruential generator (LCG) - std::uniform_int_distribution< std::int32_t > distribution{ - 0, static_cast< std::int32_t >( 1) << (std::min)(collisions, static_cast< std::int32_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) }; - const std::int32_t z = distribution( generator); - ++collisions; - for ( std::int32_t i = 0; i < z; ++i) { - // -> reduces the power consumed by the CPU - // -> prevent pipeline stalls - cpu_relax(); - } - } else { - // success, lock acquired - return; - } - } - // failure, lock not acquired - // pause via futex - if ( 2 != expected) { - expected = value_.exchange( 2, std::memory_order_acquire); - } - while ( 0 != expected) { - futex_wait( & value_, 2); - expected = value_.exchange( 2, std::memory_order_acquire); - } - } - - bool try_lock() noexcept { - std::int32_t expected = 0; - return value_.compare_exchange_strong( expected, 1, std::memory_order_acquire); - } - - void unlock() noexcept { - if ( 1 != value_.fetch_sub( 1, std::memory_order_acquire) ) { - value_.store( 0, std::memory_order_release); - futex_wake( & value_); - } - } -}; - -}}} - -#endif // BOOST_FIBERS_spinlock_ttas_futex_FUTEX_H diff --git a/contrib/restricted/boost/boost/fiber/exceptions.hpp b/contrib/restricted/boost/boost/fiber/exceptions.hpp deleted file mode 100644 index 5a5f7e4f1b..0000000000 --- a/contrib/restricted/boost/boost/fiber/exceptions.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// -// Copyright Oliver Kowalke 2013. -// 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) - -// based on boost.thread - -#ifndef BOOST_fiber_errorS_H -#define BOOST_fiber_errorS_H - -#include <future> -#include <stdexcept> -#include <string> -#include <system_error> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -class fiber_error : public std::system_error { -public: - fiber_error( std::error_code ec) : - std::system_error{ ec } { - } - - fiber_error( std::error_code ec, const char * what_arg) : - std::system_error{ ec, what_arg } { - } - - fiber_error( std::error_code ec, std::string const& what_arg) : - std::system_error{ ec, what_arg } { - } - - virtual ~fiber_error() = default; -}; - -class lock_error : public fiber_error { -public: - lock_error( std::error_code ec) : - fiber_error{ ec } { - } - - lock_error( std::error_code ec, const char * what_arg) : - fiber_error{ ec, what_arg } { - } - - lock_error( std::error_code ec, std::string const& what_arg) : - fiber_error{ ec, what_arg } { - } -}; - -enum class future_errc { - broken_promise = 1, - future_already_retrieved, - promise_already_satisfied, - no_state -}; - -BOOST_FIBERS_DECL -std::error_category const& future_category() noexcept; - -}} - -namespace std { - -template<> -struct is_error_code_enum< boost::fibers::future_errc > : public true_type { -}; - -inline -std::error_code make_error_code( boost::fibers::future_errc e) noexcept { - return std::error_code{ static_cast< int >( e), boost::fibers::future_category() }; -} - -inline -std::error_condition make_error_condition( boost::fibers::future_errc e) noexcept { - return std::error_condition{ static_cast< int >( e), boost::fibers::future_category() }; -} - -} - -namespace boost { -namespace fibers { - -class future_error : public fiber_error { -public: - future_error( std::error_code ec) : - fiber_error{ ec } { - } -}; - -class future_uninitialized : public future_error { -public: - future_uninitialized() : - future_error{ std::make_error_code( future_errc::no_state) } { - } -}; - -class future_already_retrieved : public future_error { -public: - future_already_retrieved() : - future_error{ std::make_error_code( future_errc::future_already_retrieved) } { - } -}; - -class broken_promise : public future_error { -public: - broken_promise() : - future_error{ std::make_error_code( future_errc::broken_promise) } { - } -}; - -class promise_already_satisfied : public future_error { -public: - promise_already_satisfied() : - future_error{ std::make_error_code( future_errc::promise_already_satisfied) } { - } -}; - -class promise_uninitialized : public future_error { -public: - promise_uninitialized() : - future_error{ std::make_error_code( future_errc::no_state) } { - } -}; - -class packaged_task_uninitialized : public future_error { -public: - packaged_task_uninitialized() : - future_error{ std::make_error_code( future_errc::no_state) } { - } -}; - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_fiber_errorS_H diff --git a/contrib/restricted/boost/boost/fiber/fiber.hpp b/contrib/restricted/boost/boost/fiber/fiber.hpp deleted file mode 100644 index c2d5916305..0000000000 --- a/contrib/restricted/boost/boost/fiber/fiber.hpp +++ /dev/null @@ -1,181 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_FIBER_H -#define BOOST_FIBERS_FIBER_H - -#include <algorithm> -#include <exception> -#include <memory> -#include <utility> - -#include <boost/assert.hpp> -#include <boost/config.hpp> -#include <boost/intrusive_ptr.hpp> -#include <boost/predef.h> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/disable_overload.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/fixedsize_stack.hpp> -#include <boost/fiber/policy.hpp> -#include <boost/fiber/properties.hpp> -#include <boost/fiber/segmented_stack.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { - -class BOOST_FIBERS_DECL fiber { -private: - friend class context; - - typedef intrusive_ptr< context > ptr_t; - - ptr_t impl_{}; - - void start_() noexcept; - -public: - typedef context::id id; - - fiber() = default; - - template< typename Fn, - typename ... Arg, - typename = detail::disable_overload< fiber, Fn >, - typename = detail::disable_overload< launch, Fn >, - typename = detail::disable_overload< std::allocator_arg_t, Fn > - > -#if BOOST_COMP_GNUC < 50000000 - fiber( Fn && fn, Arg && ... arg) : -#else - fiber( Fn && fn, Arg ... arg) : -#endif - fiber{ launch::post, - std::allocator_arg, default_stack(), - std::forward< Fn >( fn), std::forward< Arg >( arg) ... } { - } - - template< typename Fn, - typename ... Arg, - typename = detail::disable_overload< fiber, Fn > - > -#if BOOST_COMP_GNUC < 50000000 - fiber( launch policy, Fn && fn, Arg && ... arg) : -#else - fiber( launch policy, Fn && fn, Arg ... arg) : -#endif - fiber{ policy, - std::allocator_arg, default_stack(), - std::forward< Fn >( fn), std::forward< Arg >( arg) ... } { - } - - template< typename StackAllocator, - typename Fn, - typename ... Arg - > -#if BOOST_COMP_GNUC < 50000000 - fiber( std::allocator_arg_t, StackAllocator && salloc, Fn && fn, Arg && ... arg) : -#else - fiber( std::allocator_arg_t, StackAllocator && salloc, Fn && fn, Arg ... arg) : -#endif - fiber{ launch::post, - std::allocator_arg, std::forward< StackAllocator >( salloc), - std::forward< Fn >( fn), std::forward< Arg >( arg) ... } { - } - - template< typename StackAllocator, - typename Fn, - typename ... Arg - > -#if BOOST_COMP_GNUC < 50000000 - fiber( launch policy, std::allocator_arg_t, StackAllocator && salloc, Fn && fn, Arg && ... arg) : -#else - fiber( launch policy, std::allocator_arg_t, StackAllocator && salloc, Fn && fn, Arg ... arg) : -#endif - impl_{ make_worker_context( policy, std::forward< StackAllocator >( salloc), std::forward< Fn >( fn), std::forward< Arg >( arg) ... ) } { - start_(); - } - - ~fiber() { - if ( joinable() ) { - std::terminate(); - } - } - - fiber( fiber const&) = delete; - fiber & operator=( fiber const&) = delete; - - fiber( fiber && other) noexcept : - impl_{} { - swap( other); - } - - fiber & operator=( fiber && other) noexcept { - if ( joinable() ) { - std::terminate(); - } - if ( BOOST_UNLIKELY( this == & other) ) { - return * this; - } - impl_.swap( other.impl_); - return * this; - } - - void swap( fiber & other) noexcept { - impl_.swap( other.impl_); - } - - id get_id() const noexcept { - return impl_ ? impl_->get_id() : id(); - } - - bool joinable() const noexcept { - return nullptr != impl_; - } - - void join(); - - void detach(); - - template< typename PROPS > - PROPS & properties() { - auto props = impl_->get_properties(); - BOOST_ASSERT_MSG( props, "fiber::properties not set"); - return dynamic_cast< PROPS & >( * props ); - } -}; - -inline -bool operator<( fiber const& l, fiber const& r) noexcept { - return l.get_id() < r.get_id(); -} - -inline -void swap( fiber & l, fiber & r) noexcept { - return l.swap( r); -} - -}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_FIBER_H diff --git a/contrib/restricted/boost/boost/fiber/fixedsize_stack.hpp b/contrib/restricted/boost/boost/fiber/fixedsize_stack.hpp deleted file mode 100644 index f3ed4d45fb..0000000000 --- a/contrib/restricted/boost/boost/fiber/fixedsize_stack.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -// Copyright Oliver Kowalke 2014. -// 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_FIBERS_FIXEDSIZE_STACK_H -#define BOOST_FIBERS_FIXEDSIZE_STACK_H - -#include <boost/config.hpp> -#include <boost/context/fixedsize_stack.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -using fixedsize_stack = boost::context::fixedsize_stack; -#if !defined(BOOST_USE_SEGMENTED_STACKS) -using default_stack = boost::context::default_stack; -#endif - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_FIXEDSIZE_STACK_H diff --git a/contrib/restricted/boost/boost/fiber/fss.hpp b/contrib/restricted/boost/boost/fiber/fss.hpp deleted file mode 100644 index 0a321bb661..0000000000 --- a/contrib/restricted/boost/boost/fiber/fss.hpp +++ /dev/null @@ -1,107 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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) -// -// based on tss.hpp from boost.thread - -#ifndef BOOST_FIBERS_FSS_H -#define BOOST_FIBERS_FSS_H - -#include <boost/config.hpp> - -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/fss.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -template< typename T > -class fiber_specific_ptr { -private: - struct default_cleanup_function : public detail::fss_cleanup_function { - void operator()( void * data) noexcept { - delete static_cast< T * >( data); - } - }; - - struct custom_cleanup_function : public detail::fss_cleanup_function { - void (*fn)(T*); - - explicit custom_cleanup_function( void(*fn_)(T*) ) noexcept : - fn{ fn_ } { - } - - void operator()( void * data) { - if ( BOOST_LIKELY( nullptr != fn) ) { - fn( static_cast< T * >( data) ); - } - } - }; - - detail::fss_cleanup_function::ptr_t cleanup_fn_; - -public: - typedef T element_type; - - fiber_specific_ptr() : - cleanup_fn_{ new default_cleanup_function() } { - } - - explicit fiber_specific_ptr( void(*fn)(T*) ) : - cleanup_fn_{ new custom_cleanup_function( fn) } { - } - - ~fiber_specific_ptr() { - context * active_ctx = context::active(); - if ( nullptr != active_ctx) { - active_ctx->set_fss_data( - this, cleanup_fn_, nullptr, true); - } - } - - fiber_specific_ptr( fiber_specific_ptr const&) = delete; - fiber_specific_ptr & operator=( fiber_specific_ptr const&) = delete; - - T * get() const noexcept { - BOOST_ASSERT( context::active() ); - void * vp = context::active()->get_fss_data( this); - return static_cast< T * >( vp); - } - - T * operator->() const noexcept { - return get(); - } - - T & operator*() const noexcept { - return * get(); - } - - T * release() { - T * tmp = get(); - context::active()->set_fss_data( - this, cleanup_fn_, nullptr, false); - return tmp; - } - - void reset( T * t) { - T * c = get(); - if ( BOOST_LIKELY( c != t) ) { - context::active()->set_fss_data( - this, cleanup_fn_, t, true); - } - } -}; - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_FSS_H diff --git a/contrib/restricted/boost/boost/fiber/future.hpp b/contrib/restricted/boost/boost/fiber/future.hpp deleted file mode 100644 index 2e5d3b7744..0000000000 --- a/contrib/restricted/boost/boost/fiber/future.hpp +++ /dev/null @@ -1,10 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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) - -#include <boost/fiber/future/async.hpp> -#include <boost/fiber/future/future.hpp> -#include <boost/fiber/future/packaged_task.hpp> -#include <boost/fiber/future/promise.hpp> diff --git a/contrib/restricted/boost/boost/fiber/future/async.hpp b/contrib/restricted/boost/boost/fiber/future/async.hpp deleted file mode 100644 index 9601e8cdfe..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/async.hpp +++ /dev/null @@ -1,112 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_ASYNC_HPP -#define BOOST_FIBERS_ASYNC_HPP - -#include <algorithm> -#include <memory> -#include <type_traits> -#include <utility> - -#include <boost/config.hpp> - -#include <boost/fiber/future/future.hpp> -#include <boost/fiber/future/packaged_task.hpp> -#include <boost/fiber/policy.hpp> - -namespace boost { -namespace fibers { - -template< typename Fn, typename ... Args > -future< - typename std::result_of< - typename std::enable_if< - ! detail::is_launch_policy< typename std::decay< Fn >::type >::value, - typename std::decay< Fn >::type - >::type( typename std::decay< Args >::type ... ) - >::type -> -async( Fn && fn, Args ... args) { - typedef typename std::result_of< - typename std::decay< Fn >::type( typename std::decay< Args >::type ... ) - >::type result_type; - - packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{ - std::forward< Fn >( fn) }; - future< result_type > f{ pt.get_future() }; - fiber{ std::move( pt), std::forward< Args >( args) ... }.detach(); - return f; -} - -template< typename Policy, typename Fn, typename ... Args > -future< - typename std::result_of< - typename std::enable_if< - detail::is_launch_policy< Policy >::value, - typename std::decay< Fn >::type - >::type( typename std::decay< Args >::type ...) - >::type -> -async( Policy policy, Fn && fn, Args ... args) { - typedef typename std::result_of< - typename std::decay< Fn >::type( typename std::decay< Args >::type ... ) - >::type result_type; - - packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{ - std::forward< Fn >( fn) }; - future< result_type > f{ pt.get_future() }; - fiber{ policy, std::move( pt), std::forward< Args >( args) ... }.detach(); - return f; -} - -template< typename Policy, typename StackAllocator, typename Fn, typename ... Args > -future< - typename std::result_of< - typename std::enable_if< - detail::is_launch_policy< Policy >::value, - typename std::decay< Fn >::type - >::type( typename std::decay< Args >::type ... ) - >::type -> -async( Policy policy, std::allocator_arg_t, StackAllocator salloc, Fn && fn, Args ... args) { - typedef typename std::result_of< - typename std::decay< Fn >::type( typename std::decay< Args >::type ... ) - >::type result_type; - - packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{ - std::forward< Fn >( fn) }; - future< result_type > f{ pt.get_future() }; - fiber{ policy, std::allocator_arg, salloc, - std::move( pt), std::forward< Args >( args) ... }.detach(); - return f; -} - -template< typename Policy, typename StackAllocator, typename Allocator, typename Fn, typename ... Args > -future< - typename std::result_of< - typename std::enable_if< - detail::is_launch_policy< Policy >::value, - typename std::decay< Fn >::type - >::type( typename std::decay< Args >::type ... ) - >::type -> -async( Policy policy, std::allocator_arg_t, StackAllocator salloc, Allocator alloc, Fn && fn, Args ... args) { - typedef typename std::result_of< - typename std::decay< Fn >::type( typename std::decay< Args >::type ... ) - >::type result_type; - - packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{ - std::allocator_arg, alloc, std::forward< Fn >( fn) }; - future< result_type > f{ pt.get_future() }; - fiber{ policy, std::allocator_arg, salloc, - std::move( pt), std::forward< Args >( args) ... }.detach(); - return f; -} - -}} - -#endif // BOOST_FIBERS_ASYNC_HPP diff --git a/contrib/restricted/boost/boost/fiber/future/detail/shared_state.hpp b/contrib/restricted/boost/boost/fiber/future/detail/shared_state.hpp deleted file mode 100644 index 28e0e3cfb9..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/detail/shared_state.hpp +++ /dev/null @@ -1,313 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_DETAIL_SHARED_STATE_H -#define BOOST_FIBERS_DETAIL_SHARED_STATE_H - -#include <algorithm> -#include <atomic> -#include <chrono> -#include <cstddef> -#include <exception> -#include <memory> -#include <mutex> -#include <type_traits> - -#include <boost/assert.hpp> -#include <boost/config.hpp> -#include <boost/intrusive_ptr.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/future/future_status.hpp> -#include <boost/fiber/condition_variable.hpp> -#include <boost/fiber/exceptions.hpp> -#include <boost/fiber/mutex.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -class shared_state_base { -private: - std::atomic< std::size_t > use_count_{ 0 }; - mutable condition_variable waiters_{}; - -protected: - mutable mutex mtx_{}; - bool ready_{ false }; - std::exception_ptr except_{}; - - void mark_ready_and_notify_( std::unique_lock< mutex > & lk) noexcept { - BOOST_ASSERT( lk.owns_lock() ); - ready_ = true; - lk.unlock(); - waiters_.notify_all(); - } - - void owner_destroyed_( std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - if ( ! ready_) { - set_exception_( - std::make_exception_ptr( broken_promise() ), - lk); - } - } - - void set_exception_( std::exception_ptr except, std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - if ( BOOST_UNLIKELY( ready_) ) { - throw promise_already_satisfied(); - } - except_ = except; - mark_ready_and_notify_( lk); - } - - std::exception_ptr get_exception_ptr_( std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - wait_( lk); - return except_; - } - - void wait_( std::unique_lock< mutex > & lk) const { - BOOST_ASSERT( lk.owns_lock() ); - waiters_.wait( lk, [this](){ return ready_; }); - } - - template< typename Rep, typename Period > - future_status wait_for_( std::unique_lock< mutex > & lk, - std::chrono::duration< Rep, Period > const& timeout_duration) const { - BOOST_ASSERT( lk.owns_lock() ); - return waiters_.wait_for( lk, timeout_duration, [this](){ return ready_; }) - ? future_status::ready - : future_status::timeout; - } - - template< typename Clock, typename Duration > - future_status wait_until_( std::unique_lock< mutex > & lk, - std::chrono::time_point< Clock, Duration > const& timeout_time) const { - BOOST_ASSERT( lk.owns_lock() ); - return waiters_.wait_until( lk, timeout_time, [this](){ return ready_; }) - ? future_status::ready - : future_status::timeout; - } - - virtual void deallocate_future() noexcept = 0; - -public: - shared_state_base() = default; - - virtual ~shared_state_base() = default; - - shared_state_base( shared_state_base const&) = delete; - shared_state_base & operator=( shared_state_base const&) = delete; - - void owner_destroyed() { - std::unique_lock< mutex > lk{ mtx_ }; - owner_destroyed_( lk); - } - - void set_exception( std::exception_ptr except) { - std::unique_lock< mutex > lk{ mtx_ }; - set_exception_( except, lk); - } - - std::exception_ptr get_exception_ptr() { - std::unique_lock< mutex > lk{ mtx_ }; - return get_exception_ptr_( lk); - } - - void wait() const { - std::unique_lock< mutex > lk{ mtx_ }; - wait_( lk); - } - - template< typename Rep, typename Period > - future_status wait_for( std::chrono::duration< Rep, Period > const& timeout_duration) const { - std::unique_lock< mutex > lk{ mtx_ }; - return wait_for_( lk, timeout_duration); - } - - template< typename Clock, typename Duration > - future_status wait_until( std::chrono::time_point< Clock, Duration > const& timeout_time) const { - std::unique_lock< mutex > lk{ mtx_ }; - return wait_until_( lk, timeout_time); - } - - friend inline - void intrusive_ptr_add_ref( shared_state_base * p) noexcept { - p->use_count_.fetch_add( 1, std::memory_order_relaxed); - } - - friend inline - void intrusive_ptr_release( shared_state_base * p) noexcept { - if ( 1 == p->use_count_.fetch_sub( 1, std::memory_order_release) ) { - std::atomic_thread_fence( std::memory_order_acquire); - p->deallocate_future(); - } - } -}; - -template< typename R > -class shared_state : public shared_state_base { -private: - typename std::aligned_storage< sizeof( R), alignof( R) >::type storage_{}; - - void set_value_( R const& value, std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - if ( BOOST_UNLIKELY( ready_) ) { - throw promise_already_satisfied{}; - } - ::new ( static_cast< void * >( std::addressof( storage_) ) ) R( value ); - mark_ready_and_notify_( lk); - } - - void set_value_( R && value, std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - if ( BOOST_UNLIKELY( ready_) ) { - throw promise_already_satisfied{}; - } - ::new ( static_cast< void * >( std::addressof( storage_) ) ) R( std::move( value) ); - mark_ready_and_notify_( lk); - } - - R & get_( std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - wait_( lk); - if ( except_) { - std::rethrow_exception( except_); - } - return * reinterpret_cast< R * >( std::addressof( storage_) ); - } - -public: - typedef intrusive_ptr< shared_state > ptr_type; - - shared_state() = default; - - virtual ~shared_state() { - if ( ready_ && ! except_) { - reinterpret_cast< R * >( std::addressof( storage_) )->~R(); - } - } - - shared_state( shared_state const&) = delete; - shared_state & operator=( shared_state const&) = delete; - - void set_value( R const& value) { - std::unique_lock< mutex > lk{ mtx_ }; - set_value_( value, lk); - } - - void set_value( R && value) { - std::unique_lock< mutex > lk{ mtx_ }; - set_value_( std::move( value), lk); - } - - R & get() { - std::unique_lock< mutex > lk{ mtx_ }; - return get_( lk); - } -}; - -template< typename R > -class shared_state< R & > : public shared_state_base { -private: - R * value_{ nullptr }; - - void set_value_( R & value, std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - if ( BOOST_UNLIKELY( ready_) ) { - throw promise_already_satisfied(); - } - value_ = std::addressof( value); - mark_ready_and_notify_( lk); - } - - R & get_( std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - wait_( lk); - if ( except_) { - std::rethrow_exception( except_); - } - return * value_; - } - -public: - typedef intrusive_ptr< shared_state > ptr_type; - - shared_state() = default; - - virtual ~shared_state() = default; - - shared_state( shared_state const&) = delete; - shared_state & operator=( shared_state const&) = delete; - - void set_value( R & value) { - std::unique_lock< mutex > lk{ mtx_ }; - set_value_( value, lk); - } - - R & get() { - std::unique_lock< mutex > lk{ mtx_ }; - return get_( lk); - } -}; - -template<> -class shared_state< void > : public shared_state_base { -private: - inline - void set_value_( std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - if ( BOOST_UNLIKELY( ready_) ) { - throw promise_already_satisfied(); - } - mark_ready_and_notify_( lk); - } - - inline - void get_( std::unique_lock< mutex > & lk) { - BOOST_ASSERT( lk.owns_lock() ); - wait_( lk); - if ( except_) { - std::rethrow_exception( except_); - } - } - -public: - typedef intrusive_ptr< shared_state > ptr_type; - - shared_state() = default; - - virtual ~shared_state() = default; - - shared_state( shared_state const&) = delete; - shared_state & operator=( shared_state const&) = delete; - - inline - void set_value() { - std::unique_lock< mutex > lk{ mtx_ }; - set_value_( lk); - } - - inline - void get() { - std::unique_lock< mutex > lk{ mtx_ }; - get_( lk); - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_SHARED_STATE_H diff --git a/contrib/restricted/boost/boost/fiber/future/detail/shared_state_object.hpp b/contrib/restricted/boost/boost/fiber/future/detail/shared_state_object.hpp deleted file mode 100644 index 02708dfb0d..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/detail/shared_state_object.hpp +++ /dev/null @@ -1,59 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_DETAIL_SHARED_STATE_OBJECT_H -#define BOOST_FIBERS_DETAIL_SHARED_STATE_OBJECT_H - -#include <memory> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/future/detail/shared_state.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -template< typename R, typename Allocator > -class shared_state_object : public shared_state< R > { -public: - typedef typename std::allocator_traits< Allocator >::template rebind_alloc< - shared_state_object - > allocator_type; - - shared_state_object( allocator_type const& alloc) : - shared_state< R >{}, - alloc_{ alloc } { - } - -protected: - void deallocate_future() noexcept override final { - destroy_( alloc_, this); - } - -private: - allocator_type alloc_; - - static void destroy_( allocator_type const& alloc, shared_state_object * p) noexcept { - allocator_type a{ alloc }; - typedef std::allocator_traits< allocator_type > traity_type; - traity_type::destroy( a, p); - traity_type::deallocate( a, p, 1); - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_SHARED_STATE_OBJECT_H diff --git a/contrib/restricted/boost/boost/fiber/future/detail/task_base.hpp b/contrib/restricted/boost/boost/fiber/future/detail/task_base.hpp deleted file mode 100644 index 83abd7e5ab..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/detail/task_base.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_DETAIL_TASK_BASE_H -#define BOOST_FIBERS_DETAIL_TASK_BASE_H - -#include <boost/config.hpp> -#include <boost/intrusive_ptr.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/future/detail/shared_state.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -template< typename R, typename ... Args > -struct task_base : public shared_state< R > { - typedef intrusive_ptr< task_base > ptr_type; - - virtual ~task_base() { - } - - virtual void run( Args && ... args) = 0; - - virtual ptr_type reset() = 0; -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_TASK_BASE_H diff --git a/contrib/restricted/boost/boost/fiber/future/detail/task_object.hpp b/contrib/restricted/boost/boost/fiber/future/detail/task_object.hpp deleted file mode 100644 index e879f8169e..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/detail/task_object.hpp +++ /dev/null @@ -1,179 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_DETAIL_TASK_OBJECT_H -#define BOOST_FIBERS_DETAIL_TASK_OBJECT_H - -#include <exception> -#include <memory> -#include <tuple> -#include <utility> - -#include <boost/config.hpp> -#if defined(BOOST_NO_CXX17_STD_APPLY) -#include <boost/context/detail/apply.hpp> -#endif -#include <boost/core/pointer_traits.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/future/detail/task_base.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace detail { - -template< typename Fn, typename Allocator, typename R, typename ... Args > -class task_object : public task_base< R, Args ... > { -private: - typedef task_base< R, Args ... > base_type; - typedef std::allocator_traits< Allocator > allocator_traits; - -public: - typedef typename allocator_traits::template rebind_alloc< - task_object - > allocator_type; - - task_object( allocator_type const& alloc, Fn const& fn) : - base_type{}, - fn_{ fn }, - alloc_{ alloc } { - } - - task_object( allocator_type const& alloc, Fn && fn) : - base_type{}, - fn_{ std::move( fn) }, - alloc_{ alloc } { - } - - void run( Args && ... args) override final { - try { - this->set_value( -#if defined(BOOST_NO_CXX17_STD_APPLY) - boost::context::detail::apply( - fn_, std::make_tuple( std::forward< Args >( args) ... ) ) -#else - std::apply( - fn_, std::make_tuple( std::forward< Args >( args) ... ) ) -#endif - ); - } catch (...) { - this->set_exception( std::current_exception() ); - } - } - - typename base_type::ptr_type reset() override final { - typedef std::allocator_traits< allocator_type > traity_type; - typedef pointer_traits< typename traity_type::pointer> ptrait_type; - - typename traity_type::pointer ptr{ traity_type::allocate( alloc_, 1) }; - typename ptrait_type::element_type* p = boost::to_address(ptr); - try { - traity_type::construct( alloc_, p, alloc_, std::move( fn_) ); - } catch (...) { - traity_type::deallocate( alloc_, ptr, 1); - throw; - } - return { p }; - } - -protected: - void deallocate_future() noexcept override final { - destroy_( alloc_, this); - } - -private: - Fn fn_; - allocator_type alloc_; - - static void destroy_( allocator_type const& alloc, task_object * p) noexcept { - allocator_type a{ alloc }; - typedef std::allocator_traits< allocator_type > traity_type; - traity_type::destroy( a, p); - traity_type::deallocate( a, p, 1); - } -}; - -template< typename Fn, typename Allocator, typename ... Args > -class task_object< Fn, Allocator, void, Args ... > : public task_base< void, Args ... > { -private: - typedef task_base< void, Args ... > base_type; - typedef std::allocator_traits< Allocator > allocator_traits; - -public: - typedef typename allocator_traits::template rebind_alloc< - task_object< Fn, Allocator, void, Args ... > - > allocator_type; - - task_object( allocator_type const& alloc, Fn const& fn) : - base_type{}, - fn_{ fn }, - alloc_{ alloc } { - } - - task_object( allocator_type const& alloc, Fn && fn) : - base_type{}, - fn_{ std::move( fn) }, - alloc_{ alloc } { - } - - void run( Args && ... args) override final { - try { -#if defined(BOOST_NO_CXX17_STD_APPLY) - boost::context::detail::apply( - fn_, std::make_tuple( std::forward< Args >( args) ... ) ); -#else - std::apply( - fn_, std::make_tuple( std::forward< Args >( args) ... ) ); -#endif - this->set_value(); - } catch (...) { - this->set_exception( std::current_exception() ); - } - } - - typename base_type::ptr_type reset() override final { - typedef std::allocator_traits< allocator_type > traity_type; - typedef pointer_traits< typename traity_type::pointer> ptrait_type; - - typename traity_type::pointer ptr{ traity_type::allocate( alloc_, 1) }; - typename ptrait_type::element_type* p = boost::to_address(ptr); - try { - traity_type::construct( alloc_, p, alloc_, std::move( fn_) ); - } catch (...) { - traity_type::deallocate( alloc_, ptr, 1); - throw; - } - return { p }; - } - -protected: - void deallocate_future() noexcept override final { - destroy_( alloc_, this); - } - -private: - Fn fn_; - allocator_type alloc_; - - static void destroy_( allocator_type const& alloc, task_object * p) noexcept { - allocator_type a{ alloc }; - typedef std::allocator_traits< allocator_type > traity_type; - traity_type::destroy( a, p); - traity_type::deallocate( a, p, 1); - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_DETAIL_TASK_OBJECT_H diff --git a/contrib/restricted/boost/boost/fiber/future/future.hpp b/contrib/restricted/boost/boost/fiber/future/future.hpp deleted file mode 100644 index 2191080d69..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/future.hpp +++ /dev/null @@ -1,474 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_FUTURE_HPP -#define BOOST_FIBERS_FUTURE_HPP - -#include <algorithm> -#include <chrono> -#include <exception> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/exceptions.hpp> -#include <boost/fiber/future/detail/shared_state.hpp> -#include <boost/fiber/future/future_status.hpp> - -namespace boost { -namespace fibers { -namespace detail { - -template< typename R > -struct future_base { - typedef typename shared_state< R >::ptr_type ptr_type; - - ptr_type state_{}; - - future_base() = default; - - explicit future_base( ptr_type const& p) noexcept : - state_{ p } { - } - - ~future_base() = default; - - future_base( future_base const& other) : - state_{ other.state_ } { - } - - future_base( future_base && other) noexcept : - state_{ other.state_ } { - other.state_.reset(); - } - - future_base & operator=( future_base const& other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - state_ = other.state_; - } - return * this; - } - - future_base & operator=( future_base && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - state_ = other.state_; - other.state_.reset(); - } - return * this; - } - - bool valid() const noexcept { - return nullptr != state_.get(); - } - - std::exception_ptr get_exception_ptr() { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw future_uninitialized{}; - } - return state_->get_exception_ptr(); - } - - void wait() const { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw future_uninitialized{}; - } - state_->wait(); - } - - template< typename Rep, typename Period > - future_status wait_for( std::chrono::duration< Rep, Period > const& timeout_duration) const { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw future_uninitialized{}; - } - return state_->wait_for( timeout_duration); - } - - template< typename Clock, typename Duration > - future_status wait_until( std::chrono::time_point< Clock, Duration > const& timeout_time) const { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw future_uninitialized{}; - } - return state_->wait_until( timeout_time); - } -}; - -template< typename R > -struct promise_base; - -} - -template< typename R > -class shared_future; - -template< typename Signature > -class packaged_task; - -template< typename R > -class future : private detail::future_base< R > { -private: - typedef detail::future_base< R > base_type; - - friend struct detail::promise_base< R >; - friend class shared_future< R >; - template< typename Signature > - friend class packaged_task; - - explicit future( typename base_type::ptr_type const& p) noexcept : - base_type{ p } { - } - -public: - future() = default; - - future( future const&) = delete; - future & operator=( future const&) = delete; - - future( future && other) noexcept : - base_type{ std::move( other) } { - } - - future & operator=( future && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( std::move( other) ); - } - return * this; - } - - shared_future< R > share(); - - R get() { - if ( BOOST_UNLIKELY( ! base_type::valid() ) ) { - throw future_uninitialized{}; - } - typename base_type::ptr_type tmp{}; - tmp.swap( base_type::state_); - return std::move( tmp->get() ); - } - - using base_type::valid; - using base_type::get_exception_ptr; - using base_type::wait; - using base_type::wait_for; - using base_type::wait_until; -}; - -template< typename R > -class future< R & > : private detail::future_base< R & > { -private: - typedef detail::future_base< R & > base_type; - - friend struct detail::promise_base< R & >; - friend class shared_future< R & >; - template< typename Signature > - friend class packaged_task; - - explicit future( typename base_type::ptr_type const& p) noexcept : - base_type{ p } { - } - -public: - future() = default; - - future( future const&) = delete; - future & operator=( future const&) = delete; - - future( future && other) noexcept : - base_type{ std::move( other) } { - } - - future & operator=( future && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( std::move( other) ); - } - return * this; - } - - shared_future< R & > share(); - - R & get() { - if ( BOOST_UNLIKELY( ! base_type::valid() ) ) { - throw future_uninitialized{}; - } - typename base_type::ptr_type tmp{}; - tmp.swap( base_type::state_); - return tmp->get(); - } - - using base_type::valid; - using base_type::get_exception_ptr; - using base_type::wait; - using base_type::wait_for; - using base_type::wait_until; -}; - -template<> -class future< void > : private detail::future_base< void > { -private: - typedef detail::future_base< void > base_type; - - friend struct detail::promise_base< void >; - friend class shared_future< void >; - template< typename Signature > - friend class packaged_task; - - explicit future( base_type::ptr_type const& p) noexcept : - base_type{ p } { - } - -public: - future() = default; - - future( future const&) = delete; - future & operator=( future const&) = delete; - - inline - future( future && other) noexcept : - base_type{ std::move( other) } { - } - - inline - future & operator=( future && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( std::move( other) ); - } - return * this; - } - - shared_future< void > share(); - - inline - void get() { - if ( BOOST_UNLIKELY( ! base_type::valid() ) ) { - throw future_uninitialized{}; - } - base_type::ptr_type tmp{}; - tmp.swap( base_type::state_); - tmp->get(); - } - - using base_type::valid; - using base_type::get_exception_ptr; - using base_type::wait; - using base_type::wait_for; - using base_type::wait_until; -}; - - -template< typename R > -class shared_future : private detail::future_base< R > { -private: - typedef detail::future_base< R > base_type; - - explicit shared_future( typename base_type::ptr_type const& p) noexcept : - base_type{ p } { - } - -public: - shared_future() = default; - - ~shared_future() = default; - - shared_future( shared_future const& other) : - base_type{ other } { - } - - shared_future( shared_future && other) noexcept : - base_type{ std::move( other) } { - } - - shared_future( future< R > && other) noexcept : - base_type{ std::move( other) } { - } - - shared_future & operator=( shared_future const& other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( other); - } - return * this; - } - - shared_future & operator=( shared_future && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( std::move( other) ); - } - return * this; - } - - shared_future & operator=( future< R > && other) noexcept { - base_type::operator=( std::move( other) ); - return * this; - } - - R const& get() const { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw future_uninitialized{}; - } - return base_type::state_->get(); - } - - using base_type::valid; - using base_type::get_exception_ptr; - using base_type::wait; - using base_type::wait_for; - using base_type::wait_until; -}; - -template< typename R > -class shared_future< R & > : private detail::future_base< R & > { -private: - typedef detail::future_base< R & > base_type; - - explicit shared_future( typename base_type::ptr_type const& p) noexcept : - base_type{ p } { - } - -public: - shared_future() = default; - - ~shared_future() = default; - - shared_future( shared_future const& other) : - base_type{ other } { - } - - shared_future( shared_future && other) noexcept : - base_type{ std::move( other) } { - } - - shared_future( future< R & > && other) noexcept : - base_type{ std::move( other) } { - } - - shared_future & operator=( shared_future const& other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( other); - } - return * this; - } - - shared_future & operator=( shared_future && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( std::move( other) ); - } - return * this; - } - - shared_future & operator=( future< R & > && other) noexcept { - base_type::operator=( std::move( other) ); - return * this; - } - - R & get() const { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw future_uninitialized{}; - } - return base_type::state_->get(); - } - - using base_type::valid; - using base_type::get_exception_ptr; - using base_type::wait; - using base_type::wait_for; - using base_type::wait_until; -}; - -template<> -class shared_future< void > : private detail::future_base< void > { -private: - typedef detail::future_base< void > base_type; - - explicit shared_future( base_type::ptr_type const& p) noexcept : - base_type{ p } { - } - -public: - shared_future() = default; - - ~shared_future() = default; - - inline - shared_future( shared_future const& other) : - base_type{ other } { - } - - inline - shared_future( shared_future && other) noexcept : - base_type{ std::move( other) } { - } - - inline - shared_future( future< void > && other) noexcept : - base_type{ std::move( other) } { - } - - inline - shared_future & operator=( shared_future const& other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( other); - } - return * this; - } - - inline - shared_future & operator=( shared_future && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - base_type::operator=( std::move( other) ); - } - return * this; - } - - inline - shared_future & operator=( future< void > && other) noexcept { - base_type::operator=( std::move( other) ); - return * this; - } - - inline - void get() const { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw future_uninitialized{}; - } - base_type::state_->get(); - } - - using base_type::valid; - using base_type::get_exception_ptr; - using base_type::wait; - using base_type::wait_for; - using base_type::wait_until; -}; - - -template< typename R > -shared_future< R > -future< R >::share() { - if ( BOOST_UNLIKELY( ! base_type::valid() ) ) { - throw future_uninitialized{}; - } - return shared_future< R >{ std::move( * this) }; -} - -template< typename R > -shared_future< R & > -future< R & >::share() { - if ( BOOST_UNLIKELY( ! base_type::valid() ) ) { - throw future_uninitialized{}; - } - return shared_future< R & >{ std::move( * this) }; -} - -inline -shared_future< void > -future< void >::share() { - if ( BOOST_UNLIKELY( ! base_type::valid() ) ) { - throw future_uninitialized{}; - } - return shared_future< void >{ std::move( * this) }; -} - -}} - -#endif diff --git a/contrib/restricted/boost/boost/fiber/future/future_status.hpp b/contrib/restricted/boost/boost/fiber/future/future_status.hpp deleted file mode 100644 index f9ac02c713..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/future_status.hpp +++ /dev/null @@ -1,27 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_FUTURE_STATUS_HPP -#define BOOST_FIBERS_FUTURE_STATUS_HPP - -#include <future> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -namespace boost { -namespace fibers { - -enum class future_status { - ready = 1, - timeout, - deferred -}; - -}} - -#endif // BOOST_FIBERS_FUTURE_STATUS_HPP diff --git a/contrib/restricted/boost/boost/fiber/future/packaged_task.hpp b/contrib/restricted/boost/boost/fiber/future/packaged_task.hpp deleted file mode 100644 index 10cef3cd81..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/packaged_task.hpp +++ /dev/null @@ -1,142 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_PACKAGED_TASK_HPP -#define BOOST_FIBERS_PACKAGED_TASK_HPP - -#include <algorithm> -#include <memory> -#include <type_traits> -#include <utility> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/disable_overload.hpp> -#include <boost/fiber/exceptions.hpp> -#include <boost/fiber/future/detail/task_base.hpp> -#include <boost/fiber/future/detail/task_object.hpp> -#include <boost/fiber/future/future.hpp> - -namespace boost { -namespace fibers { - -template< typename Signature > -class packaged_task; - -template< typename R, typename ... Args > -class packaged_task< R( Args ... ) > { -private: - typedef typename detail::task_base< R, Args ... >::ptr_type ptr_type; - - bool obtained_{ false }; - ptr_type task_{}; - -public: - packaged_task() = default; - - template< typename Fn, - typename = detail::disable_overload< packaged_task, Fn > - > - explicit packaged_task( Fn && fn) : - packaged_task{ std::allocator_arg, - std::allocator< packaged_task >{}, - std::forward< Fn >( fn) } { - } - - template< typename Fn, - typename Allocator - > - explicit packaged_task( std::allocator_arg_t, Allocator const& alloc, Fn && fn) { - typedef detail::task_object< - typename std::decay< Fn >::type, Allocator, R, Args ... - > object_type; - typedef std::allocator_traits< - typename object_type::allocator_type - > traits_type; - typedef pointer_traits< typename traits_type::pointer > ptrait_type; - - typename object_type::allocator_type a{ alloc }; - typename traits_type::pointer ptr{ traits_type::allocate( a, 1) }; - typename ptrait_type::element_type* p = boost::to_address(ptr); - try { - traits_type::construct( a, p, a, std::forward< Fn >( fn) ); - } catch (...) { - traits_type::deallocate( a, ptr, 1); - throw; - } - task_.reset(p); - } - - ~packaged_task() { - if ( task_ && obtained_) { - task_->owner_destroyed(); - } - } - - packaged_task( packaged_task const&) = delete; - packaged_task & operator=( packaged_task const&) = delete; - - packaged_task( packaged_task && other) noexcept : - obtained_{ other.obtained_ }, - task_{ std::move( other.task_) } { - other.obtained_ = false; - } - - packaged_task & operator=( packaged_task && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - packaged_task tmp{ std::move( other) }; - swap( tmp); - } - return * this; - } - - void swap( packaged_task & other) noexcept { - std::swap( obtained_, other.obtained_); - task_.swap( other.task_); - } - - bool valid() const noexcept { - return nullptr != task_.get(); - } - - future< R > get_future() { - if ( obtained_) { - throw future_already_retrieved{}; - } - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw packaged_task_uninitialized{}; - } - obtained_ = true; - return future< R >{ - boost::static_pointer_cast< detail::shared_state< R > >( task_) }; - } - - void operator()( Args ... args) { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw packaged_task_uninitialized{}; - } - task_->run( std::forward< Args >( args) ... ); - } - - void reset() { - if ( BOOST_UNLIKELY( ! valid() ) ) { - throw packaged_task_uninitialized{}; - } - packaged_task tmp; - tmp.task_ = task_; - task_ = tmp.task_->reset(); - obtained_ = false; - } -}; - -template< typename Signature > -void swap( packaged_task< Signature > & l, packaged_task< Signature > & r) noexcept { - l.swap( r); -} - -}} - -#endif // BOOST_FIBERS_PACKAGED_TASK_HPP diff --git a/contrib/restricted/boost/boost/fiber/future/promise.hpp b/contrib/restricted/boost/boost/fiber/future/promise.hpp deleted file mode 100644 index f184ac6682..0000000000 --- a/contrib/restricted/boost/boost/fiber/future/promise.hpp +++ /dev/null @@ -1,222 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_PROMISE_HPP -#define BOOST_FIBERS_PROMISE_HPP - -#include <algorithm> -#include <memory> -#include <utility> - -#include <boost/config.hpp> -#include <boost/core/pointer_traits.hpp> - -#include <boost/fiber/exceptions.hpp> -#include <boost/fiber/future/detail/shared_state.hpp> -#include <boost/fiber/future/detail/shared_state_object.hpp> -#include <boost/fiber/future/future.hpp> - -namespace boost { -namespace fibers { -namespace detail { - -template< typename R > -struct promise_base { - typedef typename shared_state< R >::ptr_type ptr_type; - - bool obtained_{ false }; - ptr_type future_{}; - - promise_base() : - promise_base{ std::allocator_arg, std::allocator< promise_base >{} } { - } - - template< typename Allocator > - promise_base( std::allocator_arg_t, Allocator alloc) { - typedef detail::shared_state_object< R, Allocator > object_type; - typedef std::allocator_traits< typename object_type::allocator_type > traits_type; - typedef pointer_traits< typename traits_type::pointer > ptrait_type; - typename object_type::allocator_type a{ alloc }; - typename traits_type::pointer ptr{ traits_type::allocate( a, 1) }; - typename ptrait_type::element_type* p = boost::to_address(ptr); - - try { - traits_type::construct( a, p, a); - } catch (...) { - traits_type::deallocate( a, ptr, 1); - throw; - } - future_.reset(p); - } - - ~promise_base() { - if ( future_ && obtained_) { - future_->owner_destroyed(); - } - } - - promise_base( promise_base const&) = delete; - promise_base & operator=( promise_base const&) = delete; - - promise_base( promise_base && other) noexcept : - obtained_{ other.obtained_ }, - future_{ std::move( other.future_) } { - other.obtained_ = false; - } - - promise_base & operator=( promise_base && other) noexcept { - if ( BOOST_LIKELY( this != & other) ) { - promise_base tmp{ std::move( other) }; - swap( tmp); - } - return * this; - } - - future< R > get_future() { - if ( BOOST_UNLIKELY( obtained_) ) { - throw future_already_retrieved{}; - } - if ( BOOST_UNLIKELY( ! future_) ) { - throw promise_uninitialized{}; - } - obtained_ = true; - return future< R >{ future_ }; - } - - void swap( promise_base & other) noexcept { - std::swap( obtained_, other.obtained_); - future_.swap( other.future_); - } - - void set_exception( std::exception_ptr p) { - if ( BOOST_UNLIKELY( ! future_) ) { - throw promise_uninitialized{}; - } - future_->set_exception( p); - } -}; - -} - -template< typename R > -class promise : private detail::promise_base< R > { -private: - typedef detail::promise_base< R > base_type; - -public: - promise() = default; - - template< typename Allocator > - promise( std::allocator_arg_t, Allocator alloc) : - base_type{ std::allocator_arg, alloc } { - } - - promise( promise const&) = delete; - promise & operator=( promise const&) = delete; - - promise( promise && other) noexcept = default; - promise & operator=( promise && other) = default; - - void set_value( R const& value) { - if ( BOOST_UNLIKELY( ! base_type::future_) ) { - throw promise_uninitialized{}; - } - base_type::future_->set_value( value); - } - - void set_value( R && value) { - if ( BOOST_UNLIKELY( ! base_type::future_) ) { - throw promise_uninitialized{}; - } - base_type::future_->set_value( std::move( value) ); - } - - void swap( promise & other) noexcept { - base_type::swap( other); - } - - using base_type::get_future; - using base_type::set_exception; -}; - -template< typename R > -class promise< R & > : private detail::promise_base< R & > { -private: - typedef detail::promise_base< R & > base_type; - -public: - promise() = default; - - template< typename Allocator > - promise( std::allocator_arg_t, Allocator alloc) : - base_type{ std::allocator_arg, alloc } { - } - - promise( promise const&) = delete; - promise & operator=( promise const&) = delete; - - promise( promise && other) noexcept = default; - promise & operator=( promise && other) noexcept = default; - - void set_value( R & value) { - if ( BOOST_UNLIKELY( ! base_type::future_) ) { - throw promise_uninitialized{}; - } - base_type::future_->set_value( value); - } - - void swap( promise & other) noexcept { - base_type::swap( other); - } - - using base_type::get_future; - using base_type::set_exception; -}; - -template<> -class promise< void > : private detail::promise_base< void > { -private: - typedef detail::promise_base< void > base_type; - -public: - promise() = default; - - template< typename Allocator > - promise( std::allocator_arg_t, Allocator alloc) : - base_type{ std::allocator_arg, alloc } { - } - - promise( promise const&) = delete; - promise & operator=( promise const&) = delete; - - promise( promise && other) noexcept = default; - promise & operator=( promise && other) noexcept = default; - - inline - void set_value() { - if ( BOOST_UNLIKELY( ! base_type::future_) ) { - throw promise_uninitialized{}; - } - base_type::future_->set_value(); - } - - inline - void swap( promise & other) noexcept { - base_type::swap( other); - } - - using base_type::get_future; - using base_type::set_exception; -}; - -template< typename R > -void swap( promise< R > & l, promise< R > & r) noexcept { - l.swap( r); -} - -}} - -#endif // BOOST_FIBERS_PROMISE_HPP diff --git a/contrib/restricted/boost/boost/fiber/hip/waitfor.hpp b/contrib/restricted/boost/boost/fiber/hip/waitfor.hpp deleted file mode 100644 index e05099ef48..0000000000 --- a/contrib/restricted/boost/boost/fiber/hip/waitfor.hpp +++ /dev/null @@ -1,139 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBERS_CUDA_WAITFOR_H -#define BOOST_FIBERS_CUDA_WAITFOR_H - -#include <initializer_list> -#include <mutex> -#include <iostream> -#include <set> -#include <tuple> -#include <vector> - -#include <boost/assert.hpp> -#include <boost/config.hpp> - -#include <hip/hip_runtime.h> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/is_all_same.hpp> -#include <boost/fiber/condition_variable.hpp> -#include <boost/fiber/mutex.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace cuda { -namespace detail { - -template< typename Rendezvous > -static void trampoline( hipStream_t st, hipError_t status, void * vp) { - Rendezvous * data = static_cast< Rendezvous * >( vp); - data->notify( st, status); -} - -class single_stream_rendezvous { -public: - single_stream_rendezvous( hipStream_t st) { - unsigned int flags = 0; - hipError_t status = ::hipStreamAddCallback( st, trampoline< single_stream_rendezvous >, this, flags); - if ( hipSuccess != status) { - st_ = st; - status_ = status; - done_ = true; - } - } - - void notify( hipStream_t st, hipError_t status) noexcept { - std::unique_lock< mutex > lk{ mtx_ }; - st_ = st; - status_ = status; - done_ = true; - lk.unlock(); - cv_.notify_one(); - } - - std::tuple< hipStream_t, hipError_t > wait() { - std::unique_lock< mutex > lk{ mtx_ }; - cv_.wait( lk, [this]{ return done_; }); - return std::make_tuple( st_, status_); - } - -private: - mutex mtx_{}; - condition_variable cv_{}; - hipStream_t st_{}; - hipError_t status_{ hipErrorUnknown }; - bool done_{ false }; -}; - -class many_streams_rendezvous { -public: - many_streams_rendezvous( std::initializer_list< hipStream_t > l) : - stx_{ l } { - results_.reserve( stx_.size() ); - for ( hipStream_t st : stx_) { - unsigned int flags = 0; - hipError_t status = ::hipStreamAddCallback( st, trampoline< many_streams_rendezvous >, this, flags); - if ( hipSuccess != status) { - std::unique_lock< mutex > lk{ mtx_ }; - stx_.erase( st); - results_.push_back( std::make_tuple( st, status) ); - } - } - } - - void notify( hipStream_t st, hipError_t status) noexcept { - std::unique_lock< mutex > lk{ mtx_ }; - stx_.erase( st); - results_.push_back( std::make_tuple( st, status) ); - if ( stx_.empty() ) { - lk.unlock(); - cv_.notify_one(); - } - } - - std::vector< std::tuple< hipStream_t, hipError_t > > wait() { - std::unique_lock< mutex > lk{ mtx_ }; - cv_.wait( lk, [this]{ return stx_.empty(); }); - return results_; - } - -private: - mutex mtx_{}; - condition_variable cv_{}; - std::set< hipStream_t > stx_; - std::vector< std::tuple< hipStream_t, hipError_t > > results_; -}; - -} - -void waitfor_all(); - -inline -std::tuple< hipStream_t, hipError_t > waitfor_all( hipStream_t st) { - detail::single_stream_rendezvous rendezvous( st); - return rendezvous.wait(); -} - -template< typename ... STP > -std::vector< std::tuple< hipStream_t, hipError_t > > waitfor_all( hipStream_t st0, STP ... stx) { - static_assert( boost::fibers::detail::is_all_same< hipStream_t, STP ...>::value, "all arguments must be of type `CUstream*`."); - detail::many_streams_rendezvous rendezvous{ st0, stx ... }; - return rendezvous.wait(); -} - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_CUDA_WAITFOR_H diff --git a/contrib/restricted/boost/boost/fiber/mutex.hpp b/contrib/restricted/boost/boost/fiber/mutex.hpp deleted file mode 100644 index e25ef04d9e..0000000000 --- a/contrib/restricted/boost/boost/fiber/mutex.hpp +++ /dev/null @@ -1,70 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_MUTEX_H -#define BOOST_FIBERS_MUTEX_H - -#include <boost/config.hpp> - -#include <boost/assert.hpp> - -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/spinlock.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { - -class condition_variable; - -class BOOST_FIBERS_DECL mutex { -private: - friend class condition_variable; - - typedef context::wait_queue_t wait_queue_type; - - detail::spinlock wait_queue_splk_{}; - wait_queue_type wait_queue_{}; - context * owner_{ nullptr }; - -public: - mutex() = default; - - ~mutex() { - BOOST_ASSERT( nullptr == owner_); - BOOST_ASSERT( wait_queue_.empty() ); - } - - mutex( mutex const&) = delete; - mutex & operator=( mutex const&) = delete; - - void lock(); - - bool try_lock(); - - void unlock(); -}; - -}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_MUTEX_H diff --git a/contrib/restricted/boost/boost/fiber/numa/pin_thread.hpp b/contrib/restricted/boost/boost/fiber/numa/pin_thread.hpp deleted file mode 100644 index 710a9f93f2..0000000000 --- a/contrib/restricted/boost/boost/fiber/numa/pin_thread.hpp +++ /dev/null @@ -1,37 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBERS_NUMA_PIN_THREAD_H -#define BOOST_FIBERS_NUMA_PIN_THREAD_H - -#include <cstdint> -#include <thread> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace numa { - -BOOST_FIBERS_DECL -void pin_thread( std::uint32_t, std::thread::native_handle_type); - -BOOST_FIBERS_DECL -void pin_thread( std::uint32_t cpuid); - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_NUMA_PIN_THREAD_H diff --git a/contrib/restricted/boost/boost/fiber/numa/topology.hpp b/contrib/restricted/boost/boost/fiber/numa/topology.hpp deleted file mode 100644 index 7b67fad288..0000000000 --- a/contrib/restricted/boost/boost/fiber/numa/topology.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// 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_FIBERS_NUMA_TOPOLOGY_H -#define BOOST_FIBERS_NUMA_TOPOLOGY_H - -#include <cstdint> -#include <set> -#include <vector> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { -namespace numa { - -struct node { - std::uint32_t id; - std::set< std::uint32_t > logical_cpus; - std::vector< std::uint32_t > distance; -}; - -inline -bool operator<( node const& lhs, node const& rhs) noexcept { - return lhs.id < rhs.id; -} - -BOOST_FIBERS_DECL -std::vector< node > topology(); - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_NUMA_TOPOLOGY_H diff --git a/contrib/restricted/boost/boost/fiber/operations.hpp b/contrib/restricted/boost/boost/fiber/operations.hpp deleted file mode 100644 index 22b58562da..0000000000 --- a/contrib/restricted/boost/boost/fiber/operations.hpp +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright Oliver Kowalke 2013. -// 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_THIS_FIBER_OPERATIONS_H -#define BOOST_THIS_FIBER_OPERATIONS_H - -#include <chrono> - -#include <boost/config.hpp> - -#include <boost/fiber/algo/algorithm.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/convert.hpp> -#include <boost/fiber/fiber.hpp> -#include <boost/fiber/scheduler.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace this_fiber { - -inline -fibers::fiber::id get_id() noexcept { - return fibers::context::active()->get_id(); -} - -inline -void yield() noexcept { - fibers::context::active()->yield(); -} - -template< typename Clock, typename Duration > -void sleep_until( std::chrono::time_point< Clock, Duration > const& sleep_time_) { - std::chrono::steady_clock::time_point sleep_time = boost::fibers::detail::convert( sleep_time_); - fibers::context * active_ctx = fibers::context::active(); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - active_ctx->wait_until( sleep_time); -} - -template< typename Rep, typename Period > -void sleep_for( std::chrono::duration< Rep, Period > const& timeout_duration) { - fibers::context * active_ctx = fibers::context::active(); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - active_ctx->wait_until( std::chrono::steady_clock::now() + timeout_duration); -} - -template< typename PROPS > -PROPS & properties() { - fibers::fiber_properties * props = fibers::context::active()->get_properties(); - if ( BOOST_LIKELY( nullptr == props) ) { - // props could be nullptr if the thread's main fiber has not yet - // yielded (not yet passed through algorithm_with_properties:: - // awakened()). Address that by yielding right now. - yield(); - // Try again to obtain the fiber_properties subclass instance ptr. - // Walk through the whole chain again because who knows WHAT might - // have happened while we were yielding! - props = fibers::context::active()->get_properties(); - // Could still be hosed if the running manager isn't a subclass of - // algorithm_with_properties. - BOOST_ASSERT_MSG( props, "this_fiber::properties not set"); - } - return dynamic_cast< PROPS & >( * props ); -} - -} - -namespace fibers { - -inline -bool has_ready_fibers() noexcept { - return boost::fibers::context::active()->get_scheduler()->has_ready_fibers(); -} - -template< typename SchedAlgo, typename ... Args > -void use_scheduling_algorithm( Args && ... args) noexcept { - boost::fibers::context::active()->get_scheduler() - ->set_algo( new SchedAlgo( std::forward< Args >( args) ... ) ); -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_THIS_FIBER_OPERATIONS_H diff --git a/contrib/restricted/boost/boost/fiber/policy.hpp b/contrib/restricted/boost/boost/fiber/policy.hpp deleted file mode 100644 index de82ff9e93..0000000000 --- a/contrib/restricted/boost/boost/fiber/policy.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_POLICY_H -#define BOOST_FIBERS_POLICY_H - -#include <type_traits> - -#include <boost/config.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -enum class launch { - dispatch, - post -}; - -namespace detail { - -template< typename Fn > -struct is_launch_policy : public std::false_type { -}; - -template<> -struct is_launch_policy< boost::fibers::launch > : public std::true_type { -}; - -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_POLICY_H diff --git a/contrib/restricted/boost/boost/fiber/pooled_fixedsize_stack.hpp b/contrib/restricted/boost/boost/fiber/pooled_fixedsize_stack.hpp deleted file mode 100644 index 24ea144793..0000000000 --- a/contrib/restricted/boost/boost/fiber/pooled_fixedsize_stack.hpp +++ /dev/null @@ -1,30 +0,0 @@ - -// Copyright Oliver Kowalke 2014. -// 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_FIBERS_POOLED_FIXEDSIZE_STACK_H -#define BOOST_FIBERS_POOLED_FIXEDSIZE_STACK_H - -#include <boost/config.hpp> -#include <boost/context/pooled_fixedsize_stack.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -using pooled_fixedsize_stack = boost::context::pooled_fixedsize_stack; - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_POOLED_FIXEDSIZE_STACK_H diff --git a/contrib/restricted/boost/boost/fiber/properties.hpp b/contrib/restricted/boost/boost/fiber/properties.hpp deleted file mode 100644 index 2f8b7a008d..0000000000 --- a/contrib/restricted/boost/boost/fiber/properties.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright Nat Goodspeed 2014. -// 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) - -// Define fiber_properties, a base class from which a library consumer can -// derive a subclass with specific properties important to a user-coded -// scheduler. - -#ifndef BOOST_FIBERS_PROPERTIES_HPP -#define BOOST_FIBERS_PROPERTIES_HPP - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -# if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable:4275) -# endif - -namespace boost { -namespace fibers { - -class context; - -namespace algo { - -class algorithm; - -} - -class BOOST_FIBERS_DECL fiber_properties { -protected: - // initialized by constructor - context * ctx_; - // set every time this fiber becomes READY - algo::algorithm * algo_{ nullptr }; - - // Inform the relevant algorithm instance that something important - // has changed, so it can (presumably) adjust its data structures - // accordingly. - void notify() noexcept; - -public: - // Any specific property setter method, after updating the relevant - // instance variable, can/should call notify(). - - // fiber_properties, and by implication every subclass, must accept a back - // pointer to its context. - fiber_properties( context * ctx) noexcept : - ctx_{ ctx } { - } - - // We need a virtual destructor (hence a vtable) because fiber_properties - // is stored polymorphically (as fiber_properties*) in context, and - // destroyed via that pointer. - virtual ~fiber_properties() = default; - - // not really intended for public use, but algorithm_with_properties - // must be able to call this - void set_algorithm( algo::algorithm * algo) noexcept { - algo_ = algo; - } -}; - -}} // namespace boost::fibers - -# if defined(BOOST_MSVC) -# pragma warning(pop) -# endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_PROPERTIES_HPP diff --git a/contrib/restricted/boost/boost/fiber/protected_fixedsize_stack.hpp b/contrib/restricted/boost/boost/fiber/protected_fixedsize_stack.hpp deleted file mode 100644 index f2c01ac1e2..0000000000 --- a/contrib/restricted/boost/boost/fiber/protected_fixedsize_stack.hpp +++ /dev/null @@ -1,30 +0,0 @@ - -// Copyright Oliver Kowalke 2014. -// 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_FIBERS_PROTECTED_FIXEDSIZE_STACK_H -#define BOOST_FIBERS_PROTECTED_FIXEDSIZE_STACK_H - -#include <boost/config.hpp> -#include <boost/context/protected_fixedsize_stack.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -using protected_fixedsize_stack = boost::context::protected_fixedsize_stack; - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_PROTECTED_FIXEDSIZE_STACK_H diff --git a/contrib/restricted/boost/boost/fiber/recursive_mutex.hpp b/contrib/restricted/boost/boost/fiber/recursive_mutex.hpp deleted file mode 100644 index 864c65cb8e..0000000000 --- a/contrib/restricted/boost/boost/fiber/recursive_mutex.hpp +++ /dev/null @@ -1,76 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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) -// -// based on boost::interprocess::sync::interprocess_spinlock - -#ifndef BOOST_FIBERS_RECURSIVE_MUTEX_H -#define BOOST_FIBERS_RECURSIVE_MUTEX_H - -#include <cstddef> - -#include <boost/config.hpp> - -#include <boost/assert.hpp> - -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/spinlock.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { - -class condition_variable; - -class BOOST_FIBERS_DECL recursive_mutex { -private: - friend class condition_variable; - - typedef context::wait_queue_t wait_queue_type; - - detail::spinlock wait_queue_splk_{}; - wait_queue_type wait_queue_{}; - context * owner_{ nullptr }; - std::size_t count_{ 0 }; - -public: - recursive_mutex() = default; - - ~recursive_mutex() { - BOOST_ASSERT( nullptr == owner_); - BOOST_ASSERT( 0 == count_); - BOOST_ASSERT( wait_queue_.empty() ); - } - - recursive_mutex( recursive_mutex const&) = delete; - recursive_mutex & operator=( recursive_mutex const&) = delete; - - void lock(); - - bool try_lock() noexcept; - - void unlock(); -}; - -}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_RECURSIVE_MUTEX_H diff --git a/contrib/restricted/boost/boost/fiber/recursive_timed_mutex.hpp b/contrib/restricted/boost/boost/fiber/recursive_timed_mutex.hpp deleted file mode 100644 index 339427b895..0000000000 --- a/contrib/restricted/boost/boost/fiber/recursive_timed_mutex.hpp +++ /dev/null @@ -1,91 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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) -// -// based on boost::interprocess::sync::interprocess_spinlock - -#ifndef BOOST_FIBERS_RECURSIVE_TIMED_MUTEX_H -#define BOOST_FIBERS_RECURSIVE_TIMED_MUTEX_H - -#include <chrono> -#include <cstddef> - -#include <boost/config.hpp> - -#include <boost/assert.hpp> - -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/convert.hpp> -#include <boost/fiber/detail/spinlock.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { - -class condition_variable; - -class BOOST_FIBERS_DECL recursive_timed_mutex { -private: - friend class condition_variable; - - typedef context::wait_queue_t wait_queue_type; - - detail::spinlock wait_queue_splk_{}; - wait_queue_type wait_queue_{}; - context * owner_{ nullptr }; - std::size_t count_{ 0 }; - - bool try_lock_until_( std::chrono::steady_clock::time_point const& timeout_time) noexcept; - -public: - recursive_timed_mutex() = default; - - ~recursive_timed_mutex() { - BOOST_ASSERT( nullptr == owner_); - BOOST_ASSERT( 0 == count_); - BOOST_ASSERT( wait_queue_.empty() ); - } - - recursive_timed_mutex( recursive_timed_mutex const&) = delete; - recursive_timed_mutex & operator=( recursive_timed_mutex const&) = delete; - - void lock(); - - bool try_lock() noexcept; - - template< typename Clock, typename Duration > - bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time_) { - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - return try_lock_until_( timeout_time); - } - - template< typename Rep, typename Period > - bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration) { - return try_lock_until_( std::chrono::steady_clock::now() + timeout_duration); - } - - void unlock(); -}; - -}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_RECURSIVE_TIMED_MUTEX_H diff --git a/contrib/restricted/boost/boost/fiber/scheduler.hpp b/contrib/restricted/boost/boost/fiber/scheduler.hpp deleted file mode 100644 index 14567e83b8..0000000000 --- a/contrib/restricted/boost/boost/fiber/scheduler.hpp +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_FIBER_MANAGER_H -#define BOOST_FIBERS_FIBER_MANAGER_H - -#include <chrono> -#include <functional> -#include <memory> -#include <mutex> -#include <vector> - -#include <boost/config.hpp> -#include <boost/context/fiber.hpp> -#include <boost/intrusive/list.hpp> -#include <boost/intrusive_ptr.hpp> -#include <boost/intrusive/set.hpp> -#include <boost/intrusive/slist.hpp> - -#include <boost/fiber/algo/algorithm.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/data.hpp> -#include <boost/fiber/detail/spinlock.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { - -class BOOST_FIBERS_DECL scheduler { -public: - struct timepoint_less { - bool operator()( context const& l, context const& r) const noexcept { - return l.tp_ < r.tp_; - } - }; - - typedef intrusive::list< - context, - intrusive::member_hook< - context, detail::ready_hook, & context::ready_hook_ >, - intrusive::constant_time_size< false > - > ready_queue_type; -private: - typedef intrusive::multiset< - context, - intrusive::member_hook< - context, detail::sleep_hook, & context::sleep_hook_ >, - intrusive::constant_time_size< false >, - intrusive::compare< timepoint_less > - > sleep_queue_type; - typedef intrusive::list< - context, - intrusive::member_hook< - context, detail::worker_hook, & context::worker_hook_ >, - intrusive::constant_time_size< false > - > worker_queue_type; - typedef intrusive::slist< - context, - intrusive::member_hook< - context, detail::terminated_hook, & context::terminated_hook_ >, - intrusive::linear< true >, - intrusive::cache_last< true > - > terminated_queue_type; - typedef intrusive::slist< - context, - intrusive::member_hook< - context, detail::remote_ready_hook, & context::remote_ready_hook_ >, - intrusive::linear< true >, - intrusive::cache_last< true > - > remote_ready_queue_type; - -#if ! defined(BOOST_FIBERS_NO_ATOMICS) - // remote ready-queue contains context' signaled by schedulers - // running in other threads - detail::spinlock remote_ready_splk_{}; - remote_ready_queue_type remote_ready_queue_{}; -#endif - algo::algorithm::ptr_t algo_; - // sleep-queue contains context' which have been called - // scheduler::wait_until() - sleep_queue_type sleep_queue_{}; - // worker-queue contains all context' mananged by this scheduler - // except main-context and dispatcher-context - // unlink happens on destruction of a context - worker_queue_type worker_queue_{}; - // terminated-queue contains context' which have been terminated - terminated_queue_type terminated_queue_{}; - intrusive_ptr< context > dispatcher_ctx_{}; - context * main_ctx_{ nullptr }; - bool shutdown_{ false }; - - void release_terminated_() noexcept; - -#if ! defined(BOOST_FIBERS_NO_ATOMICS) - void remote_ready2ready_() noexcept; -#endif - - void sleep2ready_() noexcept; - -public: - scheduler() noexcept; - - scheduler( scheduler const&) = delete; - scheduler & operator=( scheduler const&) = delete; - - virtual ~scheduler(); - - void schedule( context *) noexcept; - -#if ! defined(BOOST_FIBERS_NO_ATOMICS) - void schedule_from_remote( context *) noexcept; -#endif - - boost::context::fiber dispatch() noexcept; - - boost::context::fiber terminate( detail::spinlock_lock &, context *) noexcept; - - void yield( context *) noexcept; - - bool wait_until( context *, - std::chrono::steady_clock::time_point const&) noexcept; - bool wait_until( context *, - std::chrono::steady_clock::time_point const&, - detail::spinlock_lock &) noexcept; - - void suspend() noexcept; - void suspend( detail::spinlock_lock &) noexcept; - - bool has_ready_fibers() const noexcept; - - void set_algo( algo::algorithm::ptr_t) noexcept; - - void attach_main_context( context *) noexcept; - - void attach_dispatcher_context( intrusive_ptr< context >) noexcept; - - void attach_worker_context( context *) noexcept; - - void detach_worker_context( context *) noexcept; -}; - -}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_FIBER_MANAGER_H diff --git a/contrib/restricted/boost/boost/fiber/segmented_stack.hpp b/contrib/restricted/boost/boost/fiber/segmented_stack.hpp deleted file mode 100644 index 868ddf4acd..0000000000 --- a/contrib/restricted/boost/boost/fiber/segmented_stack.hpp +++ /dev/null @@ -1,35 +0,0 @@ - -// Copyright Oliver Kowalke 2014. -// 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_FIBERS_SEGMENTED_STACK_H -#define BOOST_FIBERS_SEGMENTED_STACK_H - -#include <boost/config.hpp> -#include <boost/context/segmented_stack.hpp> - -#include <boost/fiber/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -#if defined(BOOST_USE_SEGMENTED_STACKS) -# if ! defined(BOOST_WINDOWS) -using segmented_stack = boost::context::segmented_stack; -using default_stack = boost::context::default_stack; -# endif -#endif - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_SEGMENTED_STACK_H diff --git a/contrib/restricted/boost/boost/fiber/timed_mutex.hpp b/contrib/restricted/boost/boost/fiber/timed_mutex.hpp deleted file mode 100644 index f74c5e41ad..0000000000 --- a/contrib/restricted/boost/boost/fiber/timed_mutex.hpp +++ /dev/null @@ -1,85 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_TIMED_MUTEX_H -#define BOOST_FIBERS_TIMED_MUTEX_H - -#include <chrono> - -#include <boost/assert.hpp> -#include <boost/config.hpp> - -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/convert.hpp> -#include <boost/fiber/detail/spinlock.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4251) -#endif - -namespace boost { -namespace fibers { - -class condition_variable; - -class BOOST_FIBERS_DECL timed_mutex { -private: - friend class condition_variable; - - typedef context::wait_queue_t wait_queue_type; - - detail::spinlock wait_queue_splk_{}; - wait_queue_type wait_queue_{}; - context * owner_{ nullptr }; - - bool try_lock_until_( std::chrono::steady_clock::time_point const& timeout_time) noexcept; - -public: - timed_mutex() = default; - - ~timed_mutex() { - BOOST_ASSERT( nullptr == owner_); - BOOST_ASSERT( wait_queue_.empty() ); - } - - timed_mutex( timed_mutex const&) = delete; - timed_mutex & operator=( timed_mutex const&) = delete; - - void lock(); - - bool try_lock(); - - template< typename Clock, typename Duration > - bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time_) { - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - return try_lock_until_( timeout_time); - } - - template< typename Rep, typename Period > - bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration) { - return try_lock_until_( std::chrono::steady_clock::now() + timeout_duration); - } - - void unlock(); -}; - -}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_TIMED_MUTEX_H diff --git a/contrib/restricted/boost/boost/fiber/type.hpp b/contrib/restricted/boost/boost/fiber/type.hpp deleted file mode 100644 index d9ab0a94d7..0000000000 --- a/contrib/restricted/boost/boost/fiber/type.hpp +++ /dev/null @@ -1,106 +0,0 @@ - -// Copyright Oliver Kowalke 2013. -// 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_FIBERS_TYPE_H -#define BOOST_FIBERS_TYPE_H - -#include <atomic> -#include <chrono> -#include <exception> -#include <functional> -#include <map> -#include <memory> -#include <type_traits> - -#include <boost/assert.hpp> -#include <boost/config.hpp> -#include <boost/context/detail/apply.hpp> -#include <boost/context/stack_context.hpp> -#include <boost/intrusive/list.hpp> -#include <boost/intrusive/parent_from_member.hpp> -#include <boost/intrusive_ptr.hpp> -#include <boost/intrusive/set.hpp> - -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/data.hpp> -#include <boost/fiber/detail/decay_copy.hpp> -#include <boost/fiber/detail/fss.hpp> -#include <boost/fiber/detail/spinlock.hpp> -#include <boost/fiber/exceptions.hpp> -#include <boost/fiber/fixedsize_stack.hpp> -#include <boost/fiber/properties.hpp> -#include <boost/fiber/segmented_stack.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -enum class type { - none = 0, - main_context = 1 << 1, - dispatcher_context = 1 << 2, - worker_context = 1 << 3, - pinned_context = main_context | dispatcher_context -}; - -inline -constexpr type -operator&( type l, type r) { - return static_cast< type >( - static_cast< unsigned int >( l) & static_cast< unsigned int >( r) ); -} - -inline -constexpr type -operator|( type l, type r) { - return static_cast< type >( - static_cast< unsigned int >( l) | static_cast< unsigned int >( r) ); -} - -inline -constexpr type -operator^( type l, type r) { - return static_cast< type >( - static_cast< unsigned int >( l) ^ static_cast< unsigned int >( r) ); -} - -inline -constexpr type -operator~( type l) { - return static_cast< type >( ~static_cast< unsigned int >( l) ); -} - -inline -type & -operator&=( type & l, type r) { - l = l & r; - return l; -} - -inline -type & -operator|=( type & l, type r) { - l = l | r; - return l; -} - -inline -type & -operator^=( type & l, type r) { - l = l ^ r; - return l; -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_TYPE_H diff --git a/contrib/restricted/boost/boost/fiber/unbuffered_channel.hpp b/contrib/restricted/boost/boost/fiber/unbuffered_channel.hpp deleted file mode 100644 index 2236d9e22f..0000000000 --- a/contrib/restricted/boost/boost/fiber/unbuffered_channel.hpp +++ /dev/null @@ -1,620 +0,0 @@ - -// Copyright Oliver Kowalke 2016. -// 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_FIBERS_UNBUFFERED_CHANNEL_H -#define BOOST_FIBERS_UNBUFFERED_CHANNEL_H - -#include <atomic> -#include <chrono> -#include <cstddef> -#include <cstdint> -#include <memory> -#include <vector> - -#include <boost/config.hpp> - -#include <boost/fiber/channel_op_status.hpp> -#include <boost/fiber/context.hpp> -#include <boost/fiber/detail/config.hpp> -#include <boost/fiber/detail/convert.hpp> -#include <boost/fiber/detail/spinlock.hpp> -#include <boost/fiber/exceptions.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace fibers { - -template< typename T > -class unbuffered_channel { -public: - typedef typename std::remove_reference< T >::type value_type; - -private: - typedef context::wait_queue_t wait_queue_type; - - struct slot { - value_type value; - context * ctx; - - slot( value_type const& value_, context * ctx_) : - value{ value_ }, - ctx{ ctx_ } { - } - - slot( value_type && value_, context * ctx_) : - value{ std::move( value_) }, - ctx{ ctx_ } { - } - }; - - // shared cacheline - std::atomic< slot * > slot_{ nullptr }; - // shared cacheline - std::atomic_bool closed_{ false }; - mutable detail::spinlock splk_producers_{}; - wait_queue_type waiting_producers_{}; - mutable detail::spinlock splk_consumers_{}; - wait_queue_type waiting_consumers_{}; - char pad_[cacheline_length]; - - bool is_empty_() { - return nullptr == slot_.load( std::memory_order_acquire); - } - - bool try_push_( slot * own_slot) { - for (;;) { - slot * s = slot_.load( std::memory_order_acquire); - if ( nullptr == s) { - if ( ! slot_.compare_exchange_strong( s, own_slot, std::memory_order_acq_rel) ) { - continue; - } - return true; - } else { - return false; - } - } - } - - slot * try_pop_() { - slot * nil_slot = nullptr; - for (;;) { - slot * s = slot_.load( std::memory_order_acquire); - if ( nullptr != s) { - if ( ! slot_.compare_exchange_strong( s, nil_slot, std::memory_order_acq_rel) ) { - continue;} - } - return s; - } - } - -public: - unbuffered_channel() { - } - - ~unbuffered_channel() { - close(); - } - - unbuffered_channel( unbuffered_channel const&) = delete; - unbuffered_channel & operator=( unbuffered_channel const&) = delete; - - bool is_closed() const noexcept { - return closed_.load( std::memory_order_acquire); - } - - void close() noexcept { - context * active_ctx = context::active(); - // notify all waiting producers - closed_.store( true, std::memory_order_release); - detail::spinlock_lock lk1{ splk_producers_ }; - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - } - } - // notify all waiting consumers - detail::spinlock_lock lk2{ splk_consumers_ }; - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - } - } - } - - channel_op_status push( value_type const& value) { - context * active_ctx = context::active(); - slot s{ value, active_ctx }; - for (;;) { - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( try_push_( & s) ) { - detail::spinlock_lock lk{ splk_consumers_ }; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - // suspend till value has been consumed - active_ctx->suspend( lk); - // resumed, value has been consumed - return channel_op_status::success; - } else { - detail::spinlock_lock lk{ splk_producers_ }; - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( is_empty_() ) { - continue; - } - active_ctx->wait_link( waiting_producers_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // suspend this producer - active_ctx->suspend( lk); - // resumed, slot mabye free - } - } - } - - channel_op_status push( value_type && value) { - context * active_ctx = context::active(); - slot s{ std::move( value), active_ctx }; - for (;;) { - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( try_push_( & s) ) { - detail::spinlock_lock lk{ splk_consumers_ }; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - // suspend till value has been consumed - active_ctx->suspend( lk); - // resumed, value has been consumed - return channel_op_status::success; - } else { - detail::spinlock_lock lk{ splk_producers_ }; - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( is_empty_() ) { - continue; - } - active_ctx->wait_link( waiting_producers_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // suspend this producer - active_ctx->suspend( lk); - // resumed, slot mabye free - } - } - } - - template< typename Rep, typename Period > - channel_op_status push_wait_for( value_type const& value, - std::chrono::duration< Rep, Period > const& timeout_duration) { - return push_wait_until( value, - std::chrono::steady_clock::now() + timeout_duration); - } - - template< typename Rep, typename Period > - channel_op_status push_wait_for( value_type && value, - std::chrono::duration< Rep, Period > const& timeout_duration) { - return push_wait_until( std::forward< value_type >( value), - std::chrono::steady_clock::now() + timeout_duration); - } - - template< typename Clock, typename Duration > - channel_op_status push_wait_until( value_type const& value, - std::chrono::time_point< Clock, Duration > const& timeout_time_) { - context * active_ctx = context::active(); - slot s{ value, active_ctx }; - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - for (;;) { - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( try_push_( & s) ) { - detail::spinlock_lock lk{ splk_consumers_ }; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - // suspend this producer - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - // clear slot - slot * nil_slot = nullptr, * own_slot = & s; - slot_.compare_exchange_strong( own_slot, nil_slot, std::memory_order_acq_rel); - // resumed, value has not been consumed - return channel_op_status::timeout; - } - // resumed, value has been consumed - return channel_op_status::success; - } else { - detail::spinlock_lock lk{ splk_producers_ }; - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( is_empty_() ) { - continue; - } - active_ctx->wait_link( waiting_producers_); - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - // suspend this producer - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - // relock local lk - lk.lock(); - // remove from waiting-queue - waiting_producers_.remove( * active_ctx); - return channel_op_status::timeout; - } - // resumed, slot maybe free - } - } - } - - template< typename Clock, typename Duration > - channel_op_status push_wait_until( value_type && value, - std::chrono::time_point< Clock, Duration > const& timeout_time_) { - context * active_ctx = context::active(); - slot s{ std::move( value), active_ctx }; - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - for (;;) { - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( try_push_( & s) ) { - detail::spinlock_lock lk{ splk_consumers_ }; - // notify one waiting consumer - while ( ! waiting_consumers_.empty() ) { - context * consumer_ctx = & waiting_consumers_.front(); - waiting_consumers_.pop_front(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( consumer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( consumer_ctx); - break; - } - } - // suspend this producer - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - // clear slot - slot * nil_slot = nullptr, * own_slot = & s; - slot_.compare_exchange_strong( own_slot, nil_slot, std::memory_order_acq_rel); - // resumed, value has not been consumed - return channel_op_status::timeout; - } - // resumed, value has been consumed - return channel_op_status::success; - } else { - detail::spinlock_lock lk{ splk_producers_ }; - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( is_empty_() ) { - continue; - } - active_ctx->wait_link( waiting_producers_); - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - // suspend this producer - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - // relock local lk - lk.lock(); - // remove from waiting-queue - waiting_producers_.remove( * active_ctx); - return channel_op_status::timeout; - } - // resumed, slot maybe free - } - } - } - - channel_op_status pop( value_type & value) { - context * active_ctx = context::active(); - slot * s = nullptr; - for (;;) { - if ( nullptr != ( s = try_pop_() ) ) { - { - detail::spinlock_lock lk{ splk_producers_ }; - // notify one waiting producer - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - break; - } - } - } - value = std::move( s->value); - // notify context - active_ctx->schedule( s->ctx); - return channel_op_status::success; - } else { - detail::spinlock_lock lk{ splk_consumers_ }; - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( ! is_empty_() ) { - continue; - } - active_ctx->wait_link( waiting_consumers_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // suspend this consumer - active_ctx->suspend( lk); - // resumed, slot mabye set - } - } - } - - value_type value_pop() { - context * active_ctx = context::active(); - slot * s = nullptr; - for (;;) { - if ( nullptr != ( s = try_pop_() ) ) { - { - detail::spinlock_lock lk{ splk_producers_ }; - // notify one waiting producer - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - break; - } - } - } - // consume value - value_type value = std::move( s->value); - // notify context - active_ctx->schedule( s->ctx); - return std::move( value); - } else { - detail::spinlock_lock lk{ splk_consumers_ }; - if ( BOOST_UNLIKELY( is_closed() ) ) { - throw fiber_error{ - std::make_error_code( std::errc::operation_not_permitted), - "boost fiber: channel is closed" }; - } - if ( ! is_empty_() ) { - continue; - } - active_ctx->wait_link( waiting_consumers_); - active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release); - // suspend this consumer - active_ctx->suspend( lk); - // resumed, slot mabye set - } - } - } - - template< typename Rep, typename Period > - channel_op_status pop_wait_for( value_type & value, - std::chrono::duration< Rep, Period > const& timeout_duration) { - return pop_wait_until( value, - std::chrono::steady_clock::now() + timeout_duration); - } - - template< typename Clock, typename Duration > - channel_op_status pop_wait_until( value_type & value, - std::chrono::time_point< Clock, Duration > const& timeout_time_) { - context * active_ctx = context::active(); - slot * s = nullptr; - std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_); - for (;;) { - if ( nullptr != ( s = try_pop_() ) ) { - { - detail::spinlock_lock lk{ splk_producers_ }; - // notify one waiting producer - while ( ! waiting_producers_.empty() ) { - context * producer_ctx = & waiting_producers_.front(); - waiting_producers_.pop_front(); - lk.unlock(); - std::intptr_t expected = reinterpret_cast< std::intptr_t >( this); - if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) { - // notify context - active_ctx->schedule( producer_ctx); - break; - } else if ( static_cast< std::intptr_t >( 0) == expected) { - // no timed-wait op. - // notify context - active_ctx->schedule( producer_ctx); - break; - } - } - } - // consume value - value = std::move( s->value); - // notify context - active_ctx->schedule( s->ctx); - return channel_op_status::success; - } else { - detail::spinlock_lock lk{ splk_consumers_ }; - if ( BOOST_UNLIKELY( is_closed() ) ) { - return channel_op_status::closed; - } - if ( ! is_empty_() ) { - continue; - } - active_ctx->wait_link( waiting_consumers_); - active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release); - // suspend this consumer - if ( ! active_ctx->wait_until( timeout_time, lk) ) { - // relock local lk - lk.lock(); - // remove from waiting-queue - waiting_consumers_.remove( * active_ctx); - return channel_op_status::timeout; - } - } - } - } - - class iterator { - private: - typedef typename std::aligned_storage< sizeof( value_type), alignof( value_type) >::type storage_type; - - unbuffered_channel * chan_{ nullptr }; - storage_type storage_; - - void increment_() { - BOOST_ASSERT( nullptr != chan_); - try { - ::new ( static_cast< void * >( std::addressof( storage_) ) ) value_type{ chan_->value_pop() }; - } catch ( fiber_error const&) { - chan_ = nullptr; - } - } - - public: - typedef std::input_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; - typedef value_type * pointer; - typedef value_type & reference; - - typedef pointer pointer_t; - typedef reference reference_t; - - iterator() noexcept = default; - - explicit iterator( unbuffered_channel< T > * chan) noexcept : - chan_{ chan } { - increment_(); - } - - iterator( iterator const& other) noexcept : - chan_{ other.chan_ } { - } - - iterator & operator=( iterator const& other) noexcept { - if ( this == & other) return * this; - chan_ = other.chan_; - return * this; - } - - bool operator==( iterator const& other) const noexcept { - return other.chan_ == chan_; - } - - bool operator!=( iterator const& other) const noexcept { - return other.chan_ != chan_; - } - - iterator & operator++() { - increment_(); - return * this; - } - - iterator operator++( int) = delete; - - reference_t operator*() noexcept { - return * reinterpret_cast< value_type * >( std::addressof( storage_) ); - } - - pointer_t operator->() noexcept { - return reinterpret_cast< value_type * >( std::addressof( storage_) ); - } - }; - - friend class iterator; -}; - -template< typename T > -typename unbuffered_channel< T >::iterator -begin( unbuffered_channel< T > & chan) { - return typename unbuffered_channel< T >::iterator( & chan); -} - -template< typename T > -typename unbuffered_channel< T >::iterator -end( unbuffered_channel< T > &) { - return typename unbuffered_channel< T >::iterator(); -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_FIBERS_UNBUFFERED_CHANNEL_H diff --git a/contrib/restricted/boost/boost/units/absolute.hpp b/contrib/restricted/boost/boost/units/absolute.hpp deleted file mode 100644 index 254159455e..0000000000 --- a/contrib/restricted/boost/boost/units/absolute.hpp +++ /dev/null @@ -1,153 +0,0 @@ -// 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) - -/// -/// \file -/// \brief Absolute units (points rather than vectors). -/// \details Operations between absolute units, and relative units like temperature differences. -/// - -#ifndef BOOST_UNITS_ABSOLUTE_HPP -#define BOOST_UNITS_ABSOLUTE_HPP - -#include <iosfwd> - -#include <boost/units/detail/absolute_impl.hpp> - -namespace boost { - -namespace units { - -/// A wrapper to represent absolute units (points rather than vectors). Intended -/// originally for temperatures, this class implements operators for absolute units -/// so that addition of a relative unit to an absolute unit results in another -/// absolute unit : absolute<T> +/- T -> absolute<T> and subtraction of one absolute -/// unit from another results in a relative unit : absolute<T> - absolute<T> -> T. -template<class Y> -class absolute -{ - public: - typedef absolute<Y> this_type; - typedef Y value_type; - - BOOST_CONSTEXPR absolute() : val_() { } - BOOST_CONSTEXPR absolute(const value_type& val) : val_(val) { } - BOOST_CONSTEXPR absolute(const this_type& source) : val_(source.val_) { } - - BOOST_CXX14_CONSTEXPR this_type& operator=(const this_type& source) { val_ = source.val_; return *this; } - - BOOST_CONSTEXPR const value_type& value() const { return val_; } - - BOOST_CXX14_CONSTEXPR const this_type& operator+=(const value_type& val) { val_ += val; return *this; } - BOOST_CXX14_CONSTEXPR const this_type& operator-=(const value_type& val) { val_ -= val; return *this; } - - private: - value_type val_; -}; - -/// add a relative value to an absolute one -template<class Y> -BOOST_CONSTEXPR absolute<Y> operator+(const absolute<Y>& aval,const Y& rval) -{ - return absolute<Y>(aval.value()+rval); -} - -/// add a relative value to an absolute one -template<class Y> -BOOST_CONSTEXPR absolute<Y> operator+(const Y& rval,const absolute<Y>& aval) -{ - return absolute<Y>(aval.value()+rval); -} - -/// subtract a relative value from an absolute one -template<class Y> -BOOST_CONSTEXPR absolute<Y> operator-(const absolute<Y>& aval,const Y& rval) -{ - return absolute<Y>(aval.value()-rval); -} - -/// subtracting two absolutes gives a difference -template<class Y> -BOOST_CONSTEXPR Y operator-(const absolute<Y>& aval1,const absolute<Y>& aval2) -{ - return Y(aval1.value()-aval2.value()); -} - -/// creates a quantity from an absolute unit and a raw value -template<class D, class S, class T> -BOOST_CONSTEXPR quantity<absolute<unit<D, S> >, T> operator*(const T& t, const absolute<unit<D, S> >&) -{ - return(quantity<absolute<unit<D, S> >, T>::from_value(t)); -} - -/// creates a quantity from an absolute unit and a raw value -template<class D, class S, class T> -BOOST_CONSTEXPR quantity<absolute<unit<D, S> >, T> operator*(const absolute<unit<D, S> >&, const T& t) -{ - return(quantity<absolute<unit<D, S> >, T>::from_value(t)); -} - -/// Print an absolute unit -template<class Char, class Traits, class Y> -std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os,const absolute<Y>& aval) -{ - - os << "absolute " << aval.value(); - - return os; -} - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::absolute, (class)) - -#endif - -namespace boost { - -namespace units { - -/// Macro to define the offset between two absolute units. -/// Requires the value to be in the destination units e.g -/// @code -/// BOOST_UNITS_DEFINE_CONVERSION_OFFSET(celsius_base_unit, fahrenheit_base_unit, double, 32.0); -/// @endcode -/// @c BOOST_UNITS_DEFINE_CONVERSION_FACTOR is also necessary to -/// specify the conversion factor. Like @c BOOST_UNITS_DEFINE_CONVERSION_FACTOR -/// this macro defines both forward and reverse conversions so -/// defining, e.g., the conversion from celsius to fahrenheit as above will also -/// define the inverse conversion from fahrenheit to celsius. -#define BOOST_UNITS_DEFINE_CONVERSION_OFFSET(From, To, type_, value_) \ - namespace boost { \ - namespace units { \ - template<> \ - struct affine_conversion_helper< \ - reduce_unit<From::unit_type>::type, \ - reduce_unit<To::unit_type>::type> \ - { \ - BOOST_STATIC_CONSTEXPR bool is_defined = true; \ - typedef type_ type; \ - static BOOST_CONSTEXPR type value() { return(value_); } \ - }; \ - } \ - } \ - void boost_units_require_semicolon() - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ABSOLUTE_HPP diff --git a/contrib/restricted/boost/boost/units/base_dimension.hpp b/contrib/restricted/boost/boost/units/base_dimension.hpp deleted file mode 100644 index 430f019e6b..0000000000 --- a/contrib/restricted/boost/boost/units/base_dimension.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// 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) 2007-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) - -/// \file -/// \brief base dimensions (mass, length, time...). -/// \details base dimension definition registration. - -#ifndef BOOST_UNITS_BASE_DIMENSION_HPP -#define BOOST_UNITS_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/dim.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/dimension_list.hpp> -#include <boost/units/detail/ordinal.hpp> -#include <boost/units/detail/prevent_redefinition.hpp> - -namespace boost { - -namespace units { - -/// This must be in namespace boost::units so that ADL -/// will work with friend functions defined inline. -/// INTERNAL ONLY -template<long N> struct base_dimension_ordinal { }; - -/// INTERNAL ONLY -template<class T, long N> struct base_dimension_pair { }; - -/// INTERNAL ONLY -template<class T, long N> -struct check_base_dimension { - enum { - value = - sizeof(boost_units_is_registered(units::base_dimension_ordinal<N>())) == sizeof(detail::yes) && - sizeof(boost_units_is_registered(units::base_dimension_pair<T, N>())) != sizeof(detail::yes) - }; -}; - -/// Defines a base dimension. To define a dimension you need to provide -/// the derived class (CRTP) and a unique integer. -/// @code -/// struct my_dimension : boost::units::base_dimension<my_dimension, 1> {}; -/// @endcode -/// It is designed so that you will get an error message if you try -/// to use the same value in multiple definitions. -template<class Derived, - long N -#if !defined(BOOST_UNITS_DOXYGEN) && !defined(__BORLANDC__) - , - class = typename detail::ordinal_has_already_been_defined< - check_base_dimension<Derived, N>::value - >::type -#endif -> -class base_dimension : - public ordinal<N> -{ - public: - /// INTERNAL ONLY - typedef base_dimension this_type; - /// A convenience typedef. Equivalent to boost::units::derived_dimension<Derived,1>::type. -#ifndef BOOST_UNITS_DOXYGEN - typedef list<dim<Derived,static_rational<1> >, dimensionless_type> dimension_type; -#else - typedef detail::unspecified dimension_type; -#endif - /// Provided for mpl compatability. - typedef Derived type; - - private: - /// Check for C++0x. In C++0x, we have to have identical - /// arguments but a different return type to trigger an - /// error. Note that this is only needed for clang as - /// check_base_dimension will trigger an error earlier - /// for compilers with less strict name lookup. - /// INTERNAL ONLY - friend BOOST_CONSTEXPR Derived* - check_double_register(const units::base_dimension_ordinal<N>&) - { return(0); } - - /// Register this ordinal - /// INTERNAL ONLY - friend BOOST_CONSTEXPR detail::yes - boost_units_is_registered(const units::base_dimension_ordinal<N>&) - { return(detail::yes()); } - - /// But make sure we can identify the current instantiation! - /// INTERNAL ONLY - friend BOOST_CONSTEXPR detail::yes - boost_units_is_registered(const units::base_dimension_pair<Derived, N>&) - { return(detail::yes()); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/base_unit.hpp b/contrib/restricted/boost/boost/units/base_unit.hpp deleted file mode 100644 index b66558a66b..0000000000 --- a/contrib/restricted/boost/boost/units/base_unit.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// 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) 2007-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) - -/// \file -/// \brief base unit (meter, kg, sec...). -/// \details base unit definition registration. - -#ifndef BOOST_UNITS_BASE_UNIT_HPP -#define BOOST_UNITS_BASE_UNIT_HPP - -#include <boost/units/config.hpp> -#include <boost/units/heterogeneous_system.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/unit.hpp> -#include <boost/units/detail/dimension_list.hpp> -#include <boost/units/detail/ordinal.hpp> -#include <boost/units/detail/prevent_redefinition.hpp> - -namespace boost { - -namespace units { - -/// This must be in namespace boost::units so that ADL -/// will work with friend functions defined inline. -/// Base dimensions and base units are independent. -/// INTERNAL ONLY -template<long N> struct base_unit_ordinal { }; - -/// INTERNAL ONLY -template<class T, long N> struct base_unit_pair { }; - -/// INTERNAL ONLY -template<class T, long N> -struct check_base_unit { - enum { - value = - sizeof(boost_units_unit_is_registered(units::base_unit_ordinal<N>())) == sizeof(detail::yes) && - sizeof(boost_units_unit_is_registered(units::base_unit_pair<T, N>())) != sizeof(detail::yes) - }; -}; - -/// Defines a base unit. To define a unit you need to provide -/// the derived class (CRTP), a dimension list and a unique integer. -/// @code -/// struct my_unit : boost::units::base_unit<my_unit, length_dimension, 1> {}; -/// @endcode -/// It is designed so that you will get an error message if you try -/// to use the same value in multiple definitions. -template<class Derived, - class Dim, - long N -#if !defined(BOOST_UNITS_DOXYGEN) && !defined(__BORLANDC__) - , - class = typename detail::ordinal_has_already_been_defined< - check_base_unit<Derived, N>::value - >::type -#endif -> -class base_unit : - public ordinal<N> -{ - public: - /// INTERNAL ONLY - typedef void boost_units_is_base_unit_type; - /// INTERNAL ONLY - typedef base_unit this_type; - /// The dimensions of this base unit. - typedef Dim dimension_type; - - /// Provided for mpl compatability. - typedef Derived type; - - /// The unit corresponding to this base unit. -#ifndef BOOST_UNITS_DOXYGEN - typedef unit< - Dim, - heterogeneous_system< - heterogeneous_system_impl< - list< - heterogeneous_system_dim<Derived,static_rational<1> >, - dimensionless_type - >, - Dim, - no_scale - > - > - > unit_type; -#else - typedef detail::unspecified unit_type; -#endif - - private: - /// Check for C++0x. In C++0x, we have to have identical - /// arguments but a different return type to trigger an - /// error. Note that this is only needed for clang as - /// check_base_unit will trigger an error earlier - /// for compilers with less strict name lookup. - /// INTERNAL ONLY - friend BOOST_CONSTEXPR Derived* - check_double_register(const units::base_unit_ordinal<N>&) - { return(0); } - - /// Register this ordinal - /// INTERNAL ONLY - friend BOOST_CONSTEXPR detail::yes - boost_units_unit_is_registered(const units::base_unit_ordinal<N>&) - { return(detail::yes()); } - - /// But make sure we can identify the current instantiation! - /// INTERNAL ONLY - friend BOOST_CONSTEXPR detail::yes - boost_units_unit_is_registered(const units::base_unit_pair<Derived, N>&) - { return(detail::yes()); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/angle/arcminute.hpp b/contrib/restricted/boost/boost/units/base_units/angle/arcminute.hpp deleted file mode 100644 index 27570fbbbb..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/angle/arcminute.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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) 2007-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_UNIT_BASE_UNITS_ANGLE_ARCMINUTE_HPP_INCLUDED -#define BOOST_UNIT_BASE_UNITS_ANGLE_ARCMINUTE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/angle/degree.hpp> - -namespace boost { -namespace units { -namespace angle { - -typedef scaled_base_unit<degree_base_unit, scale<60, static_rational<-1> > > arcminute_base_unit; - -} - -template<> -struct base_unit_info<angle::arcminute_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("arcminute"); } - static BOOST_CONSTEXPR const char* symbol() { return("'"); } -}; - -} -} - -#endif // BOOST_UNIT_BASE_UNITS_ANGLE_ARCMINUTE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/angle/arcsecond.hpp b/contrib/restricted/boost/boost/units/base_units/angle/arcsecond.hpp deleted file mode 100644 index 97851ffb70..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/angle/arcsecond.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_ANGLE_ARCSECOND_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_ANGLE_ARCSECOND_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/angle/degree.hpp> - -namespace boost { -namespace units { -namespace angle { - -//typedef scaled_base_unit<degree_base_unit, scale<60, static_rational<-2> > > arcsecond_base_unit; -typedef scaled_base_unit<degree_base_unit, scale<3600, static_rational<-1> > > arcsecond_base_unit; - -} - -template<> -struct base_unit_info<angle::arcsecond_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("arcsecond"); } - static BOOST_CONSTEXPR const char* symbol() { return("\""); } -}; - -} -} - -#endif // BOOST_UNIT_SYSTEMS_ANGLE_ARCSECOND_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/angle/degree.hpp b/contrib/restricted/boost/boost/units/base_units/angle/degree.hpp deleted file mode 100644 index 63edb70eef..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/angle/degree.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// 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) 2007-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_ANGLE_DEGREE_BASE_UNIT_HPP -#define BOOST_UNITS_ANGLE_DEGREE_BASE_UNIT_HPP - -#include <boost/units/conversion.hpp> -#include <boost/units/base_units/angle/radian.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(angle,degree,"degree","deg",6.28318530718/360.,boost::units::angle::radian_base_unit,-101); - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::angle::degree_base_unit) - -#endif - -#endif // BOOST_UNITS_ANGLE_DEGREE_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/angle/gradian.hpp b/contrib/restricted/boost/boost/units/base_units/angle/gradian.hpp deleted file mode 100644 index 7b291b4697..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/angle/gradian.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// 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) 2007-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_ANGLE_GRADIAN_BASE_UNIT_HPP -#define BOOST_UNITS_ANGLE_GRADIAN_BASE_UNIT_HPP - -#include <boost/units/conversion.hpp> -#include <boost/units/base_units/angle/radian.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(angle,gradian,"gradian","grad",6.28318530718/400.,boost::units::angle::radian_base_unit,-102); - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::angle::gradian_base_unit) - -#endif - -#endif // BOOST_UNITS_ANGLE_GRADIAN_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/angle/radian.hpp b/contrib/restricted/boost/boost/units/base_units/angle/radian.hpp deleted file mode 100644 index f2b56673f4..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/angle/radian.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_ANGLE_RADIAN_BASE_UNIT_HPP -#define BOOST_UNITS_ANGLE_RADIAN_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/plane_angle.hpp> - -namespace boost { - -namespace units { - -namespace angle { - -struct radian_base_unit : public base_unit<radian_base_unit, plane_angle_dimension, -2> -{ - static std::string name() { return("radian"); } - static std::string symbol() { return("rad"); } -}; - -} // namespace angle - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::angle::radian_base_unit) - -#endif - -//#include <boost/units/base_units/angle/conversions.hpp> - -#endif // BOOST_UNITS_ANGLE_RADIAN_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/angle/revolution.hpp b/contrib/restricted/boost/boost/units/base_units/angle/revolution.hpp deleted file mode 100644 index 3d576286ef..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/angle/revolution.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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) 2007-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_BASE_UNITS_REVOLUTION_HPP -#define BOOST_UNITS_BASE_UNITS_REVOLUTION_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/angle/degree.hpp> - -namespace boost { -namespace units { -namespace angle { - -typedef scaled_base_unit<degree_base_unit, scale<360, static_rational<1> > > revolution_base_unit; - -} - -template<> -struct base_unit_info<angle::revolution_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("revolution"); } - static BOOST_CONSTEXPR const char* symbol() { return("rev"); } -}; - -} -} - -#endif // BOOST_UNITS_BASE_UNITS_REVOLUTION_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/angle/steradian.hpp b/contrib/restricted/boost/boost/units/base_units/angle/steradian.hpp deleted file mode 100644 index 5e8c5bda00..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/angle/steradian.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_ANGLE_STERADIAN_BASE_UNIT_HPP -#define BOOST_UNITS_ANGLE_STERADIAN_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/solid_angle.hpp> - -namespace boost { - -namespace units { - -namespace angle { - -struct steradian_base_unit : public base_unit<steradian_base_unit, solid_angle_dimension, -1> -{ - static std::string name() { return("steradian"); } - static std::string symbol() { return("sr"); } -}; - -} // namespace angle - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::angle::steradian_base_unit) - -#endif - -//#include <boost/units/base_units/angle/conversions.hpp> - -#endif // BOOST_UNITS_ANGLE_STERADIAN_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/astronomical_unit.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/astronomical_unit.hpp deleted file mode 100644 index 4b1640d95f..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/astronomical/astronomical_unit.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_ASTRONOMICAL_ASTRONOMICAL_UNIT_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_ASTRONOMICAL_UNIT_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/base_units/si/meter.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(astronomical, astronomical_unit, "astronomical unit", "a.u.", 149597870691.0, boost::units::si::meter_base_unit, -207); - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::astronomical::astronomical_unit_base_unit) - -#endif - -#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_ASTRONOMICAL_UNIT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_day.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_day.hpp deleted file mode 100644 index a0ad93becb..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_day.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_DAY_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_DAY_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/astronomical/light_second.hpp> - -namespace boost { - -namespace units { - -namespace astronomical { - -typedef scaled_base_unit<boost::units::astronomical::light_second_base_unit, scale<86400, static_rational<1> > > light_day_base_unit; - -} // namespace astronomical - -template<> -struct base_unit_info<astronomical::light_day_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("light day"); } - static BOOST_CONSTEXPR const char* symbol() { return("ldy"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_DAY_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_hour.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_hour.hpp deleted file mode 100644 index 91bc09a28c..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_hour.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_HOUR_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_HOUR_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/astronomical/light_second.hpp> - -namespace boost { - -namespace units { - -namespace astronomical { - -typedef scaled_base_unit<boost::units::astronomical::light_second_base_unit, scale<3600, static_rational<1> > > light_hour_base_unit; - -} // namespace astronomical - -template<> -struct base_unit_info<astronomical::light_hour_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("light hour"); } - static BOOST_CONSTEXPR const char* symbol() { return("lhr"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_HOUR_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_minute.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_minute.hpp deleted file mode 100644 index 6301745c29..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_minute.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_MINUTE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_MINUTE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/astronomical/light_second.hpp> - -namespace boost { - -namespace units { - -namespace astronomical { - -typedef scaled_base_unit<boost::units::astronomical::light_second_base_unit, scale<60, static_rational<1> > > light_minute_base_unit; - -} // namespace astronomical - -template<> -struct base_unit_info<astronomical::light_minute_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("light minute"); } - static BOOST_CONSTEXPR const char* symbol() { return("lmn"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_MINUTE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_second.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_second.hpp deleted file mode 100644 index 555a315fb4..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_second.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_SECOND_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_SECOND_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/base_units/si/meter.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(astronomical, light_second, "light second", "lsc", 2.99792458e8, boost::units::si::meter_base_unit, -201); - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::astronomical::light_second_base_unit) - -#endif - -#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_SECOND_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_year.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_year.hpp deleted file mode 100644 index f3434a7918..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_year.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_YEAR_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_YEAR_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/astronomical/light_second.hpp> - -namespace boost { - -namespace units { - -namespace astronomical { - -typedef scaled_base_unit<boost::units::astronomical::light_second_base_unit, scale<31557600, static_rational<1> > > light_year_base_unit; - -} // namespace astronomical - -template<> -struct base_unit_info<astronomical::light_year_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("light year"); } - static BOOST_CONSTEXPR const char* symbol() { return("ly"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_YEAR_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/parsec.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/parsec.hpp deleted file mode 100644 index dd116e555c..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/astronomical/parsec.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_ASTRONOMICAL_PARSEC_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_PARSEC_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/base_units/si/meter.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(astronomical, parsec, "parsec", "psc", 3.0856775813e16, boost::units::si::meter_base_unit, -206); - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::astronomical::parsec_base_unit) - -#endif - -#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_PARSEC_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/cgs/biot.hpp b/contrib/restricted/boost/boost/units/base_units/cgs/biot.hpp deleted file mode 100644 index 1fa03f2e8f..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/cgs/biot.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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) 2007-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_CGS_BIOT_BASE_UNIT_HPP -#define BOOST_UNITS_CGS_BIOT_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/base_units/si/ampere.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef scaled_base_unit<boost::units::si::ampere_base_unit, scale<10, static_rational<+1> > > biot_base_unit; - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_BIOT_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/cgs/centimeter.hpp b/contrib/restricted/boost/boost/units/base_units/cgs/centimeter.hpp deleted file mode 100644 index 1ff712ed25..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/cgs/centimeter.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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) 2007-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_CENTIMETER_BASE_UNIT_HPP -#define BOOST_UNITS_CENTIMETER_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/base_units/si/meter.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<10, static_rational<-2> > > centimeter_base_unit; - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CENTIMETER_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/cgs/gram.hpp b/contrib/restricted/boost/boost/units/base_units/cgs/gram.hpp deleted file mode 100644 index 1c2cc18b97..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/cgs/gram.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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) 2007-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_CGS_GRAM_BASE_UNIT_HPP -#define BOOST_UNITS_CGS_GRAM_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/physical_dimensions/mass.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -struct gram_base_unit : public base_unit<gram_base_unit, mass_dimension, -8> -{ - static std::string name() { return("gram"); } - static std::string symbol() { return("g"); } -}; - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::cgs::gram_base_unit) - -#endif - -//#include <boost/units/base_units/detail/conversions.hpp> - -#endif // BOOST_UNITS_CGS_GRAM_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/conversions.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/conversions.hpp deleted file mode 100644 index 54cf6385ea..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/conversions.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// 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) 2007-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) - -// No include guards. This header is intended to be included -// multiple times. - -// imperial units - -#if 0 - -#if defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED) && defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_GALLON_HPP_INCLUDED) &&\ - !defined(BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_GALLON_CONVERSION_DEFINED) - #define BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_GALLON_CONVERSION_DEFINED - #include <boost/units/conversion.hpp> - BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial::pint_base_unit,boost::units::imperial::gallon_base_unit, double, 1./8.); -#endif - -#if defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED) && defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_QUART_HPP_INCLUDED) &&\ - !defined(BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_QUART_CONVERSION_DEFINED) - #define BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_QUART_CONVERSION_DEFINED - #include <boost/units/conversion.hpp> - BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial::pint_base_unit,boost::units::imperial::quart_base_unit, double, 1./2.); -#endif - -#if defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED) && defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_GILL_HPP_INCLUDED) &&\ - !defined(BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_GILL_CONVERSION_DEFINED) - #define BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_GILL_CONVERSION_DEFINED - #include <boost/units/conversion.hpp> - BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial::pint_base_unit,boost::units::imperial::gill_base_unit, double, 4.); -#endif - -#if defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED) && defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_FLUID_OUNCE_HPP_INCLUDED) &&\ - !defined(BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_FLUID_OUNCE_CONVERSION_DEFINED) - #define BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_FLUID_OUNCE_CONVERSION_DEFINED - #include <boost/units/conversion.hpp> - BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial::pint_base_unit,boost::units::imperial::fluid_ounce_base_unit, double, 20.); -#endif - -#endif diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/drachm.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/drachm.hpp deleted file mode 100644 index b965040c3b..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/drachm.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_IMPERIAL_DRACHM_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_IMPERIAL_DRACHM_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pound.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<pound_base_unit, scale<16, static_rational<-2> > > drachm_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::drachm_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("drachm"); } - static BOOST_CONSTEXPR const char* symbol() { return("drachm"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_DRACHM_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/fluid_ounce.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/fluid_ounce.hpp deleted file mode 100644 index b318fb2c9f..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/fluid_ounce.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_IMPERIAL_FLUID_OUNCE_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_IMPERIAL_FLUID_OUNCE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pint.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<pint_base_unit, scale<20, static_rational<-1> > > fluid_ounce_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::fluid_ounce_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("fluid ounce (imp.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("fl oz"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_FLUID_OUNCE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/foot.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/foot.hpp deleted file mode 100644 index 429c77c7b0..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/foot.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_IMPERIAL_FOOT_BASE_UNIT_HPP -#define BOOST_UNITS_IMPERIAL_FOOT_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/yard.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<yard_base_unit, scale<3, static_rational<-1> > > foot_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::foot_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("foot"); } - static BOOST_CONSTEXPR const char* symbol() { return("ft"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IMPERIAL_FOOT_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/furlong.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/furlong.hpp deleted file mode 100644 index 8851f2c0e9..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/furlong.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_IMPERIAL_FURLONG_BASE_UNIT_HPP -#define BOOST_UNITS_IMPERIAL_FURLONG_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/yard.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<yard_base_unit, scale<220, static_rational<1> > > furlong_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::furlong_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("furlong"); } - static BOOST_CONSTEXPR const char* symbol() { return("furlong"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IMPERIAL_FURLONG_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/gallon.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/gallon.hpp deleted file mode 100644 index c0e1513631..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/gallon.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// 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) 2007-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_BASE_UNITS_IMPERIAL_GALLON_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_IMPERIAL_GALLON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pint.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -//typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<3> > > gallon_base_unit; -typedef scaled_base_unit<pint_base_unit, scale<8, static_rational<1> > > gallon_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::gallon_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("gallon (imp.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("gal"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_GALLON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/gill.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/gill.hpp deleted file mode 100644 index 353a46b409..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/gill.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// 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) 2007-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_BASE_UNITS_IMPERIAL_GILL_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_IMPERIAL_GILL_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pint.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -//typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-2> > > gill_base_unit; -typedef scaled_base_unit<pint_base_unit, scale<4, static_rational<-1> > > gill_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::gill_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("gill (imp.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("gill"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_GILL_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/grain.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/grain.hpp deleted file mode 100644 index 7567f9912e..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/grain.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_IMPERIAL_GRAIN_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_IMPERIAL_GRAIN_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pound.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<pound_base_unit, scale<7000, static_rational<-1> > > grain_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::grain_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("grain"); } - static BOOST_CONSTEXPR const char* symbol() { return("grain"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_GRAIN_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/hundredweight.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/hundredweight.hpp deleted file mode 100644 index 8f03763ff6..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/hundredweight.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_IMPERIAL_HUNDREDWEIGHT_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_IMPERIAL_HUNDREDWEIGHT_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pound.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<pound_base_unit, scale<112, static_rational<1> > > hundredweight_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::hundredweight_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("hundredweight"); } - static BOOST_CONSTEXPR const char* symbol() { return("cwt"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_HUNDREDWEIGHT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/inch.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/inch.hpp deleted file mode 100644 index d39c332342..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/inch.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_IMPERIAL_INCH_BASE_UNIT_HPP -#define BOOST_UNITS_IMPERIAL_INCH_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/yard.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<yard_base_unit, scale<36, static_rational<-1> > > inch_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::inch_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("inch"); } - static BOOST_CONSTEXPR const char* symbol() { return("in"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IMPERIAL_INCH_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/league.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/league.hpp deleted file mode 100644 index 87c0cfb575..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/league.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_IMPERIAL_LEAGUE_BASE_UNIT_HPP -#define BOOST_UNITS_IMPERIAL_LEAGUE_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/yard.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<yard_base_unit, scale<5280, static_rational<1> > > league_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::league_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("league"); } - static BOOST_CONSTEXPR const char* symbol() { return("league"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IMPERIAL_LEAGUE_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/mile.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/mile.hpp deleted file mode 100644 index 230537f5b3..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/mile.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_IMPERIAL_MILE_BASE_UNIT_HPP -#define BOOST_UNITS_IMPERIAL_MILE_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/yard.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<yard_base_unit, scale<1760, static_rational<1> > > mile_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::mile_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("mile"); } - static BOOST_CONSTEXPR const char* symbol() { return("mi"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IMPERIAL_MILE_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/ounce.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/ounce.hpp deleted file mode 100644 index 05bfcc1594..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/ounce.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_IMPERIAL_OUNCE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_IMPERIAL_OUNCE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pound.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<pound_base_unit, scale<2, static_rational<-4> > > ounce_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::ounce_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("ounce"); } - static BOOST_CONSTEXPR const char* symbol() { return("oz"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_OUNCE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/pint.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/pint.hpp deleted file mode 100644 index 1a1440f9cc..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/pint.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// 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) 2007-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_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED - -#include <string> - -#include <boost/units/systems/si/volume.hpp> -#include <boost/units/conversion.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(imperial, pint, "pint (imp.)", "pt", 4.54609e-3/8., si::volume, -303); // exact conversion - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::imperial::pint_base_unit) - -#endif - -#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/pound.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/pound.hpp deleted file mode 100644 index c586e6d0d0..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/pound.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_IMPERIAL_POUND_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_IMPERIAL_POUND_HPP_INCLUDED - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/base_units/cgs/gram.hpp> -#include <boost/units/conversion.hpp> - -// can't define in terms of kilogram because it is a scaled_base_unit -//BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(imperial, pound, "pound", "lb", 0.45359237, si::kilogram_base_unit, -302); // exact conversion -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(imperial, pound, "pound", "lb", 453.59237, cgs::gram_base_unit, -302); // exact conversion - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::imperial::pound_base_unit) - -#endif - -#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_POUND_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/quart.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/quart.hpp deleted file mode 100644 index f4c0a00995..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/quart.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// 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) 2007-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_BASE_UNITS_IMPERIAL_QUART_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_IMPERIAL_QUART_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pint.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -//typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<1> > > quart_base_unit; -typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<1> > > quart_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::quart_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("quart (imp.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("qt"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_QUART_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/quarter.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/quarter.hpp deleted file mode 100644 index 912d51d78d..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/quarter.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_IMPERIAL_QUARTER_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_IMPERIAL_QUARTER_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pound.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<pound_base_unit, scale<28, static_rational<1> > > quarter_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::quarter_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("quarter"); } - static BOOST_CONSTEXPR const char* symbol() { return("quarter"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_QUARTER_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/stone.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/stone.hpp deleted file mode 100644 index 1b260a29e3..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/stone.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_IMPERIAL_STONE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_IMPERIAL_STONE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pound.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<pound_base_unit, scale<14, static_rational<1> > > stone_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::stone_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("stone"); } - static BOOST_CONSTEXPR const char* symbol() { return("st"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_STONE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/thou.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/thou.hpp deleted file mode 100644 index af1f911e46..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/thou.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_IMPERIAL_THOU_BASE_UNIT_HPP -#define BOOST_UNITS_IMPERIAL_THOU_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/yard.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<yard_base_unit, scale<36000, static_rational<-1> > > thou_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::thou_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("thou"); } - static BOOST_CONSTEXPR const char* symbol() { return("thou"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IMPERIAL_THOU_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/ton.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/ton.hpp deleted file mode 100644 index a1f709ec6b..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/ton.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_IMPERIAL_TON_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_IMPERIAL_TON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/imperial/pound.hpp> - -namespace boost { - -namespace units { - -namespace imperial { - -typedef scaled_base_unit<pound_base_unit, scale<2240, static_rational<1> > > ton_base_unit; - -} // namespace imperial - -template<> -struct base_unit_info<imperial::ton_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("long ton"); } - static BOOST_CONSTEXPR const char* symbol() { return("t"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_TON_HPP_INCLUDED - diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/yard.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/yard.hpp deleted file mode 100644 index d15b99d0cf..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/imperial/yard.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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) 2007-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_SYSTEMS_IMPERIAL_YARD_BASE_UNIT_HPP -#define BOOST_UNITS_SYSTEMS_IMPERIAL_YARD_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/base_units/si/meter.hpp> -#include <boost/units/conversion.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(imperial, yard, "yard", "yd", 0.9144, si::meter_base_unit, -301); // exact conversion - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::imperial::yard_base_unit) - -#endif - -#endif // BOOST_UNITS_SYSTEMS_IMPERIAL_YARD_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/information/bit.hpp b/contrib/restricted/boost/boost/units/base_units/information/bit.hpp deleted file mode 100644 index 28a413ea18..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/information/bit.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_BASE_UNITS_INFORMATION_BIT_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_INFORMATION_BIT_HPP_INCLUDED - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/information.hpp> - -namespace boost { -namespace units { -namespace information { - -struct bit_base_unit : public base_unit<bit_base_unit, information_dimension, -700> -{ - static std::string name() { return("bit"); } - static std::string symbol() { return("b"); } -}; - -} // namespace information -} // namespace units -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::information::bit_base_unit) - -#endif - -#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_BIT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/information/byte.hpp b/contrib/restricted/boost/boost/units/base_units/information/byte.hpp deleted file mode 100644 index 6dcfde2557..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/information/byte.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_BASE_UNITS_INFORMATION_BYTE_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_INFORMATION_BYTE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/base_units/information/bit.hpp> - -namespace boost { -namespace units { -namespace information { - -typedef scaled_base_unit<boost::units::information::bit_base_unit, scale<2, static_rational<3> > > byte_base_unit; - -} // namespace information - -template<> -struct base_unit_info<information::byte_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("byte"); } - static BOOST_CONSTEXPR const char* symbol() { return("B"); } -}; - -} // namespace units -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_BYTE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/information/hartley.hpp b/contrib/restricted/boost/boost/units/base_units/information/hartley.hpp deleted file mode 100644 index c3df2d287b..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/information/hartley.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_BASE_UNITS_INFORMATION_HARTLEY_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_INFORMATION_HARTLEY_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/base_units/information/bit.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(information, hartley, - "hartley", "Hart", - 3.321928094887363, - boost::units::information::bit_base_unit, - -703); - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::information::hartley_base_unit) - -#endif - -#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_HARTLEY_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/information/nat.hpp b/contrib/restricted/boost/boost/units/base_units/information/nat.hpp deleted file mode 100644 index a307215193..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/information/nat.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_BASE_UNITS_INFORMATION_NAT_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_INFORMATION_NAT_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/base_units/information/bit.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(information, nat, - "nat", "nat", - 1.442695040888964, - boost::units::information::bit_base_unit, - -702); - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::information::nat_base_unit) - -#endif - -#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_NAT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/information/shannon.hpp b/contrib/restricted/boost/boost/units/base_units/information/shannon.hpp deleted file mode 100644 index 60e37b2cd9..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/information/shannon.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_BASE_UNITS_INFORMATION_SHANNON_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_INFORMATION_SHANNON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/base_units/information/bit.hpp> - -namespace boost { -namespace units { -namespace information { - -typedef scaled_base_unit<boost::units::information::bit_base_unit, scale<1, static_rational<1> > > shannon_base_unit; - -} // namespace information - -template<> -struct base_unit_info<information::shannon_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("shannon"); } - static BOOST_CONSTEXPR const char* symbol() { return("Sh"); } -}; - -} // namespace units -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_SHANNON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/angstrom.hpp b/contrib/restricted/boost/boost/units/base_units/metric/angstrom.hpp deleted file mode 100644 index 64cc3379be..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/angstrom.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_ANGSTROM_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_ANGSTROM_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/base_units/si/meter.hpp> - -namespace boost { -namespace units { -namespace metric { - -typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<10, static_rational<-10> > > angstrom_base_unit; - -} - -template<> -struct base_unit_info<metric::angstrom_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("angstrom"); } - static BOOST_CONSTEXPR const char* symbol() { return("A"); } -}; - -} -} - -#endif // BOOST_UNIT_SYSTEMS_METRIC_ANGSTROM_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/are.hpp b/contrib/restricted/boost/boost/units/base_units/metric/are.hpp deleted file mode 100644 index bd697f43ed..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/are.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_ARE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_ARE_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/area.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, are, "are", "a", 1.0e2, si::area, 10); - -#endif // BOOST_UNIT_SYSTEMS_METRIC_ARE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/atmosphere.hpp b/contrib/restricted/boost/boost/units/base_units/metric/atmosphere.hpp deleted file mode 100644 index b714e90d9d..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/atmosphere.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_ATMOSPHERE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_ATMOSPHERE_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/pressure.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, atmosphere, "atmosphere", "atm", 1.01325e5, si::pressure, 33); - -#endif // BOOST_UNIT_SYSTEMS_METRIC_ATMOSPHERE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/bar.hpp b/contrib/restricted/boost/boost/units/base_units/metric/bar.hpp deleted file mode 100644 index 682d54ffec..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/bar.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_BAR_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_BAR_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/pressure.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, bar, "bar", "bar", 1.0e5, si::pressure, 14); - -#endif // BOOST_UNIT_SYSTEMS_METRIC_BAR_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/barn.hpp b/contrib/restricted/boost/boost/units/base_units/metric/barn.hpp deleted file mode 100644 index ae2b28cab4..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/barn.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_BARN_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_BARN_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/area.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, barn, "barn", "b", 1.0e-28, si::area, 11); - -#endif // BOOST_UNIT_SYSTEMS_METRIC_BARN_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/day.hpp b/contrib/restricted/boost/boost/units/base_units/metric/day.hpp deleted file mode 100644 index ac111c9ee0..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/day.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_OTHER_DAY_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_OTHER_DAY_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/si/second.hpp> - -namespace boost { - -namespace units { - -namespace metric { - -typedef scaled_base_unit<boost::units::si::second_base_unit, scale<86400, static_rational<1> > > day_base_unit; - -} // namespace metric - -template<> -struct base_unit_info<metric::day_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("day"); } - static BOOST_CONSTEXPR const char* symbol() { return("d"); } -}; - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/base_units/metric/fermi.hpp b/contrib/restricted/boost/boost/units/base_units/metric/fermi.hpp deleted file mode 100644 index f12c903f49..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/fermi.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_FERMI_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_FERMI_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/si/meter.hpp> - -namespace boost { -namespace units { -namespace metric { - -typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<10, static_rational<-15> > > fermi_base_unit; - -} - -template<> -struct base_unit_info<metric::fermi_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("fermi"); } - static BOOST_CONSTEXPR const char* symbol() { return("fm"); } -}; - -} -} - -#endif // BOOST_UNIT_SYSTEMS_METRIC_FERMI_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/hectare.hpp b/contrib/restricted/boost/boost/units/base_units/metric/hectare.hpp deleted file mode 100644 index 476b0fc790..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/hectare.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_HECTARE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_HECTARE_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/area.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, hectare, "hectare", "ha", 1.0e4, si::area, 12); - -#endif // BOOST_UNIT_SYSTEMS_METRIC_HECTARE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/hour.hpp b/contrib/restricted/boost/boost/units/base_units/metric/hour.hpp deleted file mode 100644 index 65657ce030..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/hour.hpp +++ /dev/null @@ -1,37 +0,0 @@ - // 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) 2007-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_UNIT_SYSTEMS_METRIC_HOUR_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_HOUR_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/base_units/si/second.hpp> - -namespace boost { -namespace units { -namespace metric { - -typedef scaled_base_unit<boost::units::si::second_base_unit, scale<60, static_rational<2> > > hour_base_unit; - -} - -template<> -struct base_unit_info<metric::hour_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("hour"); } - static BOOST_CONSTEXPR const char* symbol() { return("h"); } -}; - -} -} - -#endif // BOOST_UNIT_SYSTEMS_METRIC_HOUR_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/knot.hpp b/contrib/restricted/boost/boost/units/base_units/metric/knot.hpp deleted file mode 100644 index 6b85e6e806..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/knot.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_KNOT_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_KNOT_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/velocity.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, knot, "knot", "kt", 1852./3600., boost::units::si::velocity, -403); - -#endif // BOOST_UNIT_SYSTEMS_METRIC_KNOT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/liter.hpp b/contrib/restricted/boost/boost/units/base_units/metric/liter.hpp deleted file mode 100644 index da901759b7..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/liter.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_LITER_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_LITER_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/volume.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, liter, "liter", "L", 1.0e-3, si::volume, 13); - -#endif // BOOST_UNIT_SYSTEMS_METRIC_LITER_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/micron.hpp b/contrib/restricted/boost/boost/units/base_units/metric/micron.hpp deleted file mode 100644 index c169cfdb32..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/micron.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_MICRON_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_MICRON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/si/meter.hpp> - -namespace boost { -namespace units { -namespace metric { - -typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<10, static_rational<-6> > > micron_base_unit; - -} - -template<> -struct base_unit_info<metric::micron_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("micron"); } - static BOOST_CONSTEXPR const char* symbol() { return("u"); } -}; - -} -} - -#endif // BOOST_UNIT_SYSTEMS_METRIC_MICRON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/minute.hpp b/contrib/restricted/boost/boost/units/base_units/metric/minute.hpp deleted file mode 100644 index 3c0a68fc2c..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/minute.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_MINUTE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_MINUTE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/base_units/si/second.hpp> - -namespace boost { -namespace units { -namespace metric { - -typedef scaled_base_unit<boost::units::si::second_base_unit, scale<60, static_rational<1> > > minute_base_unit; - -} - -template<> -struct base_unit_info<metric::minute_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("minute"); } - static BOOST_CONSTEXPR const char* symbol() { return("min"); } -}; - -} -} - -#endif // BOOST_UNIT_SYSTEMS_METRIC_MINUTE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/mmHg.hpp b/contrib/restricted/boost/boost/units/base_units/metric/mmHg.hpp deleted file mode 100644 index 93e3869589..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/mmHg.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_MMHG_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_MMHG_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/pressure.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, mmHg, "millimeters mercury", "mmHg", 133.322, si::pressure, -404); - -#endif // BOOST_UNIT_SYSTEMS_METRIC_MMHG_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/nautical_mile.hpp b/contrib/restricted/boost/boost/units/base_units/metric/nautical_mile.hpp deleted file mode 100644 index 4f20951af8..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/nautical_mile.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_NAUTICAL_MILE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_NAUTICAL_MILE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/si/meter.hpp> - -namespace boost { -namespace units { -namespace metric { - -typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<1852, static_rational<1> > > nautical_mile_base_unit; - -} - -template<> -struct base_unit_info<metric::nautical_mile_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("nautical mile"); } - static BOOST_CONSTEXPR const char* symbol() { return("nmi"); } -}; - -} -} - -#endif // BOOST_UNIT_SYSTEMS_METRIC_NAUTICAL_MILE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/ton.hpp b/contrib/restricted/boost/boost/units/base_units/metric/ton.hpp deleted file mode 100644 index 4f8e9643cd..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/ton.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_TON_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_TON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/base_units/si/kilogram.hpp> -//#include <boost/units/base_units/cgs/gram.hpp> - -namespace boost { -namespace units { -namespace metric { - -//typedef scaled_base_unit<boost::units::cgs::gram_base_unit, scale<10, static_rational<6> > > ton_base_unit; -typedef scaled_base_unit<boost::units::si::kilogram_base_unit, scale<1000, static_rational<1> > > ton_base_unit; - -} - -template<> -struct base_unit_info<metric::ton_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("metric ton"); } - static BOOST_CONSTEXPR const char* symbol() { return("t"); } -}; - -} -} - -#endif // BOOST_UNIT_SYSTEMS_METRIC_TON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/metric/torr.hpp b/contrib/restricted/boost/boost/units/base_units/metric/torr.hpp deleted file mode 100644 index 08fd29a52c..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/torr.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_METRIC_TORR_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_METRIC_TORR_HPP_INCLUDED - -#include <boost/units/conversion.hpp> -#include <boost/units/systems/si/pressure.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, torr, "torr", "Torr", 1.01325e5/760.0, si::pressure, -401); - -#endif diff --git a/contrib/restricted/boost/boost/units/base_units/metric/year.hpp b/contrib/restricted/boost/boost/units/base_units/metric/year.hpp deleted file mode 100644 index 5d715e2de1..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/metric/year.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_OTHER_YEAR_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_OTHER_YEAR_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/si/second.hpp> - -// Julian year = 365.25 days exactly = 8766 hours exactly - -namespace boost { -namespace units { -namespace metric { - -typedef scaled_base_unit<boost::units::si::second_base_unit, scale<31557600, static_rational<1> > > year_base_unit; - -} - -template<> -struct base_unit_info<metric::year_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("Julian year"); } - static BOOST_CONSTEXPR const char* symbol() { return("yr"); } -}; - -} -} - -#endif diff --git a/contrib/restricted/boost/boost/units/base_units/si/ampere.hpp b/contrib/restricted/boost/boost/units/base_units/si/ampere.hpp deleted file mode 100644 index 0c21d67d16..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/si/ampere.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_SI_AMPERE_BASE_UNIT_HPP -#define BOOST_UNITS_SI_AMPERE_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -namespace si { - -struct ampere_base_unit : public base_unit<ampere_base_unit, current_dimension, -6> -{ - static std::string name() { return("ampere"); } - static std::string symbol() { return("A"); } -}; - -} // namespace si - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::ampere_base_unit) - -#endif - -//#include <boost/units/base_units/detail/conversions.hpp> - -#endif // BOOST_UNITS_SI_AMPERE_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/si/candela.hpp b/contrib/restricted/boost/boost/units/base_units/si/candela.hpp deleted file mode 100644 index ab7a795e2a..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/si/candela.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_SI_CANDELA_BASE_UNIT_HPP -#define BOOST_UNITS_SI_CANDELA_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/luminous_intensity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -struct candela_base_unit : public base_unit<candela_base_unit, luminous_intensity_dimension, -3> -{ - static std::string name() { return("candela"); } - static std::string symbol() { return("cd"); } -}; - -} // namespace si - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::candela_base_unit) - -#endif - -//#include <boost/units/base_units/detail/conversions.hpp> - -#endif // BOOST_UNITS_SI_CANDELA_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/si/kelvin.hpp b/contrib/restricted/boost/boost/units/base_units/si/kelvin.hpp deleted file mode 100644 index 78fe1dd3cd..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/si/kelvin.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_SI_KELVIN_BASE_UNIT_HPP -#define BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> - -namespace boost { - -namespace units { - -namespace si { - -struct kelvin_base_unit : public base_unit<kelvin_base_unit, temperature_dimension, -5> -{ - static std::string name() { return("kelvin"); } - static std::string symbol() { return("K"); } -}; - -} // namespace si - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::kelvin_base_unit) - -#endif - -//#include <boost/units/base_units/detail/conversions.hpp> - -#endif // BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/si/kilogram.hpp b/contrib/restricted/boost/boost/units/base_units/si/kilogram.hpp deleted file mode 100644 index 0f8b0a6c71..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/si/kilogram.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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) 2007-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_SI_KILOGRAM_BASE_UNIT_HPP -#define BOOST_UNITS_SI_KILOGRAM_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/base_units/cgs/gram.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef scaled_base_unit<boost::units::cgs::gram_base_unit, scale<10, static_rational<3> > > kilogram_base_unit; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_KILOGRAM_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/si/meter.hpp b/contrib/restricted/boost/boost/units/base_units/si/meter.hpp deleted file mode 100644 index 3a5fed237d..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/si/meter.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// 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) 2007-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_SI_METER_BASE_UNIT_HPP -#define BOOST_UNITS_SI_METER_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/physical_dimensions/length.hpp> - -namespace boost { - -namespace units { - -namespace si { - -struct meter_base_unit : public base_unit<meter_base_unit, length_dimension, -9> -{ - static std::string name() { return("meter"); } - static std::string symbol() { return("m"); } -}; - -} // namespace si - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::meter_base_unit) - -#endif - -//#include <boost/units/base_units/detail/conversions.hpp> - -#endif // BOOST_UNITS_SI_METER_BASE_UNIT_HPP - diff --git a/contrib/restricted/boost/boost/units/base_units/si/mole.hpp b/contrib/restricted/boost/boost/units/base_units/si/mole.hpp deleted file mode 100644 index 5b73313e1a..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/si/mole.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_SI_MOLE_BASE_UNIT_HPP -#define BOOST_UNITS_SI_MOLE_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/amount.hpp> - -namespace boost { - -namespace units { - -namespace si { - -struct mole_base_unit : public base_unit<mole_base_unit, amount_dimension, -4> -{ - static std::string name() { return("mole"); } - static std::string symbol() { return("mol"); } -}; - -} // namespace si - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::mole_base_unit) - -#endif - -//#include <boost/units/base_units/detail/conversions.hpp> - -#endif // BOOST_UNITS_SI_MOLE_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/si/second.hpp b/contrib/restricted/boost/boost/units/base_units/si/second.hpp deleted file mode 100644 index 946c671973..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/si/second.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_SI_SECOND_BASE_UNIT_HPP -#define BOOST_UNITS_SI_SECOND_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -namespace si { - -struct second_base_unit : public base_unit<second_base_unit, time_dimension, -7> -{ - static std::string name() { return("second"); } - static std::string symbol() { return("s"); } -}; - -} // namespace si - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::second_base_unit) - -#endif - -//#include <boost/units/base_units/detail/conversions.hpp> - -#endif // BOOST_UNITS_SI_SECOND_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/temperature/celsius.hpp b/contrib/restricted/boost/boost/units/base_units/temperature/celsius.hpp deleted file mode 100644 index dff70a1cd1..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/temperature/celsius.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_TEMPERATURE_CELSIUS_BASE_UNIT_HPP -#define BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> - -namespace boost { - -namespace units { - -namespace temperature { - -struct celsius_base_unit : public base_unit<celsius_base_unit, temperature_dimension, -1008> -{ - static std::string name() { return("celsius"); } - static std::string symbol() { return("C"); } -}; - -} // namespace temperature - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::temperature::celsius_base_unit) - -#endif - -#include <boost/units/base_units/temperature/conversions.hpp> - -#endif // BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/temperature/conversions.hpp b/contrib/restricted/boost/boost/units/base_units/temperature/conversions.hpp deleted file mode 100644 index e4e45de99f..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/temperature/conversions.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// 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) 2007-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) - -// No include guards. This header is intended to be included -// multiple times. - -// units of temperature - -#if defined(BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP) && defined(BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP) &&\ - !defined(BOOST_UNITS_SYSTEMS_KELVIN_TO_CELSIUS_CONVERSION_DEFINED) - #define BOOST_UNITS_SYSTEMS_KELVIN_TO_CELSIUS_CONVERSION_DEFINED - #include <boost/units/conversion.hpp> - #include <boost/units/absolute.hpp> - BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::si::kelvin_base_unit, boost::units::temperature::celsius_base_unit, one, make_one()); - BOOST_UNITS_DEFINE_CONVERSION_OFFSET(boost::units::si::kelvin_base_unit, boost::units::temperature::celsius_base_unit, double, -273.15); -#endif - -#if defined(BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP) && defined(BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP) &&\ - !defined(BOOST_UNITS_SYSTEMS_KELVIN_TO_FAHRENHEIT_CONVERSION_DEFINED) - #define BOOST_UNITS_SYSTEMS_KELVIN_TO_FAHRENHEIT_CONVERSION_DEFINED - #include <boost/units/conversion.hpp> - #include <boost/units/absolute.hpp> - BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::si::kelvin_base_unit, boost::units::temperature::fahrenheit_base_unit, double, 9.0/5.0); - BOOST_UNITS_DEFINE_CONVERSION_OFFSET(boost::units::si::kelvin_base_unit, boost::units::temperature::fahrenheit_base_unit, double, -273.15 * 9.0 / 5.0 + 32.0); -#endif - -#if defined(BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP) && defined(BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP) &&\ - !defined(BOOST_UNITS_SYSTEMS_CELSUIS_TO_FAHRENHEIT_CONVERSION_DEFINED) - #define BOOST_UNITS_SYSTEMS_CELSUIS_TO_FAHRENHEIT_CONVERSION_DEFINED - #include <boost/units/conversion.hpp> - #include <boost/units/absolute.hpp> - BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::temperature::celsius_base_unit, boost::units::temperature::fahrenheit_base_unit, double, 9.0/5.0); - BOOST_UNITS_DEFINE_CONVERSION_OFFSET(boost::units::temperature::celsius_base_unit, boost::units::temperature::fahrenheit_base_unit, double, 32.0); -#endif - diff --git a/contrib/restricted/boost/boost/units/base_units/temperature/fahrenheit.hpp b/contrib/restricted/boost/boost/units/base_units/temperature/fahrenheit.hpp deleted file mode 100644 index ff0149f856..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/temperature/fahrenheit.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) 2007-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_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP -#define BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> - -namespace boost { - -namespace units { - -namespace temperature { - -struct fahrenheit_base_unit : public base_unit<fahrenheit_base_unit, temperature_dimension, -1007> -{ - static std::string name() { return("fahrenheit"); } - static std::string symbol() { return("F"); } -}; - -} // namespace temperature - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::temperature::fahrenheit_base_unit) - -#endif - -#include <boost/units/base_units/temperature/conversions.hpp> - -#endif // BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/us/cup.hpp b/contrib/restricted/boost/boost/units/base_units/us/cup.hpp deleted file mode 100644 index 86b408322c..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/cup.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_CUP_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_CUP_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-1> > > cup_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::cup_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("cup"); } - static BOOST_CONSTEXPR const char* symbol() { return("c"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_CUP_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/dram.hpp b/contrib/restricted/boost/boost/units/base_units/us/dram.hpp deleted file mode 100644 index 29e08d9e79..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/dram.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_BASE_UNITS_US_DRAM_HPP_INCLUDED -#define BOOST_UNIT_BASE_UNITS_US_DRAM_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pound.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pound_base_unit, scale<16, static_rational<-2> > > dram_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::dram_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("dram (U.S.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("dr"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_BASE_UNITS_US_DRAM_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/fluid_dram.hpp b/contrib/restricted/boost/boost/units/base_units/us/fluid_dram.hpp deleted file mode 100644 index 0b9c60d766..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/fluid_dram.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_FLUID_DRAM_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_FLUID_DRAM_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-7> > > fluid_dram_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::fluid_dram_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("fluid dram (U.S.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("fl dr"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_FLUID_DRAM_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/fluid_ounce.hpp b/contrib/restricted/boost/boost/units/base_units/us/fluid_ounce.hpp deleted file mode 100644 index c7f0f07ee8..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/fluid_ounce.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_FLUID_OUNCE_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_FLUID_OUNCE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<16, static_rational<-1> > > fluid_ounce_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::fluid_ounce_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("fluid ounce (U.S.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("fl oz"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_FLUID_OUNCE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/foot.hpp b/contrib/restricted/boost/boost/units/base_units/us/foot.hpp deleted file mode 100644 index 16cbf6d2b4..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/foot.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_US_FOOT_BASE_UNIT_HPP -#define BOOST_UNITS_US_FOOT_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/yard.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<yard_base_unit, scale<3, static_rational<-1> > > foot_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::foot_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("foot"); } - static BOOST_CONSTEXPR const char* symbol() { return("ft"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_US_FOOT_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/us/gallon.hpp b/contrib/restricted/boost/boost/units/base_units/us/gallon.hpp deleted file mode 100644 index 1b54b28f19..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/gallon.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_GALLON_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_GALLON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<3> > > gallon_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::gallon_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("gallon (U.S.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("gal"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_GALLON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/gill.hpp b/contrib/restricted/boost/boost/units/base_units/us/gill.hpp deleted file mode 100644 index c654386a21..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/gill.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_GILL_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_GILL_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-2> > > gill_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::gill_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("gill (U.S.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("gi"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_GILL_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/grain.hpp b/contrib/restricted/boost/boost/units/base_units/us/grain.hpp deleted file mode 100644 index 485b68723f..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/grain.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_BASE_UNITS_US_GRAIN_HPP_INCLUDED -#define BOOST_UNIT_BASE_UNITS_US_GRAIN_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pound.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pound_base_unit, scale<7000, static_rational<-1> > > grain_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::grain_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("grain"); } - static BOOST_CONSTEXPR const char* symbol() { return("gr"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_BASE_UNITS_US_GRAIN_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/hundredweight.hpp b/contrib/restricted/boost/boost/units/base_units/us/hundredweight.hpp deleted file mode 100644 index 2ac991b975..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/hundredweight.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// 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) 2007-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_UNIT_BASE_UNITS_US_HUNDREDWEIGHT_HPP_INCLUDED -#define BOOST_UNIT_BASE_UNITS_US_HUNDREDWEIGHT_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pound.hpp> - -namespace boost { - -namespace units { - -namespace us { - -//typedef scaled_base_unit<pound_base_unit, scale<10, static_rational<2> > > hundredweight_base_unit; -typedef scaled_base_unit<pound_base_unit, scale<100, static_rational<1> > > hundredweight_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::hundredweight_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("hundredweight (U.S.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("cwt"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_BASE_UNITS_US_HUNDREDWEIGHT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/inch.hpp b/contrib/restricted/boost/boost/units/base_units/us/inch.hpp deleted file mode 100644 index e7bd91da5a..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/inch.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_US_INCH_BASE_UNIT_HPP -#define BOOST_UNITS_US_INCH_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/yard.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<yard_base_unit, scale<36, static_rational<-1> > > inch_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::inch_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("inch"); } - static BOOST_CONSTEXPR const char* symbol() { return("in"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_US_INCH_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/us/mil.hpp b/contrib/restricted/boost/boost/units/base_units/us/mil.hpp deleted file mode 100644 index e3276fe7b8..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/mil.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_US_MIL_BASE_UNIT_HPP -#define BOOST_UNITS_US_MIL_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/yard.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<yard_base_unit, scale<36000, static_rational<-1> > > mil_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::mil_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("mil"); } - static BOOST_CONSTEXPR const char* symbol() { return("mil"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_US_MIL_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/us/mile.hpp b/contrib/restricted/boost/boost/units/base_units/us/mile.hpp deleted file mode 100644 index c62c0d5fc8..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/mile.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_US_MILE_BASE_UNIT_HPP -#define BOOST_UNITS_US_MILE_BASE_UNIT_HPP - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/yard.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<yard_base_unit, scale<1760, static_rational<1> > > mile_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::mile_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("mile"); } - static BOOST_CONSTEXPR const char* symbol() { return("mi"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_US_MILE_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/base_units/us/minim.hpp b/contrib/restricted/boost/boost/units/base_units/us/minim.hpp deleted file mode 100644 index d877e2652c..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/minim.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_MINIM_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_MINIM_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<7680, static_rational<-1> > > minim_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::minim_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("minim (U.S.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("minim"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_MINIM_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/ounce.hpp b/contrib/restricted/boost/boost/units/base_units/us/ounce.hpp deleted file mode 100644 index 9a4ec3e63a..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/ounce.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_US_OUNCE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_US_OUNCE_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pound.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pound_base_unit, scale<2, static_rational<-4> > > ounce_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::ounce_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("ounce"); } - static BOOST_CONSTEXPR const char* symbol() { return("oz"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_SYSTEMS_US_OUNCE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/pint.hpp b/contrib/restricted/boost/boost/units/base_units/us/pint.hpp deleted file mode 100644 index 3a923b883e..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/pint.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_PINT_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_PINT_HPP_INCLUDED - -#include <boost/units/config.hpp> -#include <boost/units/systems/si/volume.hpp> -#include <boost/units/conversion.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(us, pint, "pint (U.S.)", "pt", 0.4731765e-3, si::volume, -503); - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::us::pint_base_unit) - -#endif - -#endif // BOOST_UNITS_BASE_UNITS_US_PINT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/pound.hpp b/contrib/restricted/boost/boost/units/base_units/us/pound.hpp deleted file mode 100644 index bef6cde3b9..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/pound.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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) 2007-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_UNIT_SYSTEMS_US_POUND_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_US_POUND_HPP_INCLUDED - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/base_units/cgs/gram.hpp> -#include <boost/units/conversion.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(us, pound, "pound", "lb", 453.59237, cgs::gram_base_unit, -502); // exact conversion - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::us::pound_base_unit) - -#endif - -#endif // BOOST_UNIT_SYSTEMS_US_POUND_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/pound_force.hpp b/contrib/restricted/boost/boost/units/base_units/us/pound_force.hpp deleted file mode 100644 index 9749d5eb0e..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/pound_force.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2003-2009 Matthias Christian Schabel -// Copyright (C) 2007-2009 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_UNIT_SYSTEMS_US_POUND_FORCE_HPP_INCLUDED -#define BOOST_UNIT_SYSTEMS_US_POUND_FORCE_HPP_INCLUDED - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -//#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/systems/si/force.hpp> -#include <boost/units/conversion.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(us, pound_force, "pound-force", "lbf", 4.4482216152605, si::force, -600); // exact conversion - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::us::pound_force_base_unit) - -#endif - -#endif // BOOST_UNIT_SYSTEMS_US_POUND_FORCE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/quart.hpp b/contrib/restricted/boost/boost/units/base_units/us/quart.hpp deleted file mode 100644 index b39252a418..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/quart.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_QUART_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_QUART_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<1> > > quart_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::quart_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("quart (U.S.)"); } - static BOOST_CONSTEXPR const char* symbol() { return("qt"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_QUART_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/tablespoon.hpp b/contrib/restricted/boost/boost/units/base_units/us/tablespoon.hpp deleted file mode 100644 index 43418ed3eb..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/tablespoon.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_TABLESPOON_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_TABLESPOON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-5> > > tablespoon_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::tablespoon_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("tablespoon"); } - static BOOST_CONSTEXPR const char* symbol() { return("tbsp"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_TABLESPOON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/teaspoon.hpp b/contrib/restricted/boost/boost/units/base_units/us/teaspoon.hpp deleted file mode 100644 index 94fe655b7e..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/teaspoon.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_BASE_UNITS_US_TEASPOON_HPP_INCLUDED -#define BOOST_UNITS_BASE_UNITS_US_TEASPOON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pint.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pint_base_unit, scale<96, static_rational<-1> > > teaspoon_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::teaspoon_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("teaspoon"); } - static BOOST_CONSTEXPR const char* symbol() { return("tsp"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_BASE_UNITS_US_TEASPOON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/ton.hpp b/contrib/restricted/boost/boost/units/base_units/us/ton.hpp deleted file mode 100644 index d1f52e8319..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/ton.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// 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) 2007-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_UNIT_BASE_UNITS_US_TON_HPP_INCLUDED -#define BOOST_UNIT_BASE_UNITS_US_TON_HPP_INCLUDED - -#include <boost/units/scaled_base_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/base_units/us/pound.hpp> - -namespace boost { - -namespace units { - -namespace us { - -typedef scaled_base_unit<pound_base_unit, scale<2000, static_rational<1> > > ton_base_unit; - -} // namespace us - -template<> -struct base_unit_info<us::ton_base_unit> { - static BOOST_CONSTEXPR const char* name() { return("short ton"); } - static BOOST_CONSTEXPR const char* symbol() { return("t"); } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNIT_BASE_UNITS_US_TON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/base_units/us/yard.hpp b/contrib/restricted/boost/boost/units/base_units/us/yard.hpp deleted file mode 100644 index b609eaefa6..0000000000 --- a/contrib/restricted/boost/boost/units/base_units/us/yard.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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) 2007-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_SYSTEMS_US_YARD_BASE_UNIT_HPP -#define BOOST_UNITS_SYSTEMS_US_YARD_BASE_UNIT_HPP - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/base_unit.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/base_units/si/meter.hpp> -#include <boost/units/conversion.hpp> - -BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(us, yard, "yard", "yd", 0.9144, si::meter_base_unit, -501); // exact conversion - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::us::yard_base_unit) - -#endif - -#endif // BOOST_UNITS_SYSTEMS_US_YARD_BASE_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/cmath.hpp b/contrib/restricted/boost/boost/units/cmath.hpp deleted file mode 100644 index da3da46f46..0000000000 --- a/contrib/restricted/boost/boost/units/cmath.hpp +++ /dev/null @@ -1,729 +0,0 @@ -// 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) 2007-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_CMATH_HPP -#define BOOST_UNITS_CMATH_HPP - -#include <boost/config/no_tr1/cmath.hpp> -#include <cstdlib> - -#include <boost/math/special_functions/fpclassify.hpp> -#include <boost/math/special_functions/hypot.hpp> -#include <boost/math/special_functions/next.hpp> -#include <boost/math/special_functions/round.hpp> -#include <boost/math/special_functions/sign.hpp> - -#include <boost/units/dimensionless_quantity.hpp> -#include <boost/units/pow.hpp> -#include <boost/units/quantity.hpp> -#include <boost/units/detail/cmath_impl.hpp> -#include <boost/units/detail/dimensionless_unit.hpp> - -#include <boost/units/systems/si/plane_angle.hpp> - -/// \file -/// \brief Overloads of functions in \<cmath\> for quantities. -/// \details Only functions for which a dimensionally-correct result type -/// can be determined are overloaded. -/// All functions work with dimensionless quantities. - -// BOOST_PREVENT_MACRO_SUBSTITUTION is needed on certain compilers that define -// some <cmath> functions as macros; it is used for all functions even though it -// isn't necessary -- I didn't want to think :) -// -// the form using namespace detail; return(f(x)); is used -// to enable ADL for UDTs. - -namespace boost { - -namespace units { - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -isfinite BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using boost::math::isfinite; - return isfinite BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -isinf BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using boost::math::isinf; - return isinf BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -isnan BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using boost::math::isnan; - return isnan BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -isnormal BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using boost::math::isnormal; - return isnormal BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -isgreater BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - return isgreater BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -isgreaterequal BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - return isgreaterequal BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -isless BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - return isless BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -islessequal BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - return islessequal BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -islessgreater BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - return islessgreater BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -bool -isunordered BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - return isunordered BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -abs BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using std::abs; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(abs BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -ceil BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using std::ceil; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(ceil BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -copysign BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using boost::math::copysign; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(copysign BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -fabs BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using std::fabs; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(fabs BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -floor BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using std::floor; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(floor BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -fdim BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(fdim BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value())); -} - -#if 0 - -template<class Unit1,class Unit2,class Unit3,class Y> -inline -BOOST_CONSTEXPR -typename add_typeof_helper< - typename multiply_typeof_helper<quantity<Unit1,Y>, - quantity<Unit2,Y> >::type, - quantity<Unit3,Y> >::type -fma BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit1,Y>& q1, - const quantity<Unit2,Y>& q2, - const quantity<Unit3,Y>& q3) -{ - using namespace detail; - - typedef quantity<Unit1,Y> type1; - typedef quantity<Unit2,Y> type2; - typedef quantity<Unit3,Y> type3; - - typedef typename multiply_typeof_helper<type1,type2>::type prod_type; - typedef typename add_typeof_helper<prod_type,type3>::type quantity_type; - - return quantity_type::from_value(fma BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value(),q3.value())); -} - -#endif - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -fmax BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(fmax BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -fmin BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using namespace detail; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(fmin BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -int -fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using boost::math::fpclassify; - - return fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -typename root_typeof_helper< - typename add_typeof_helper< - typename power_typeof_helper<quantity<Unit,Y>, - static_rational<2> >::type, - typename power_typeof_helper<quantity<Unit,Y>, - static_rational<2> >::type>::type, - static_rational<2> >::type -hypot BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,const quantity<Unit,Y>& q2) -{ - using boost::math::hypot; - - typedef quantity<Unit,Y> type1; - - typedef typename power_typeof_helper<type1,static_rational<2> >::type pow_type; - typedef typename add_typeof_helper<pow_type,pow_type>::type add_type; - typedef typename root_typeof_helper<add_type,static_rational<2> >::type quantity_type; - - return quantity_type::from_value(hypot BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value())); -} - -// does ISO C++ support long long? g++ claims not -//template<class Unit,class Y> -//inline -//BOOST_CONSTEXPR -//quantity<Unit,long long> -//llrint BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -//{ -// using namespace detail; -// -// typedef quantity<Unit,long long> quantity_type; -// -// return quantity_type::from_value(llrint BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -//} - -// does ISO C++ support long long? g++ claims not -//template<class Unit,class Y> -//inline -//BOOST_CONSTEXPR -//quantity<Unit,long long> -//llround BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -//{ -// using namespace detail; -// -// typedef quantity<Unit,long long> quantity_type; -// -// return quantity_type::from_value(llround BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -//} - -#if 0 - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -nearbyint BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using namespace detail; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(nearbyint BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -} - -#endif - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> nextafter BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - using boost::math::nextafter; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(nextafter BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value())); -} -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> nexttoward BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1, - const quantity<Unit,Y>& q2) -{ - // the only difference between nextafter and nexttowards is - // in the argument types. Since we are requiring identical - // argument types, there is no difference. - using boost::math::nextafter; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(nextafter BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value())); -} - -#if 0 - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -rint BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using namespace detail; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(rint BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -} - -#endif - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -round BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using boost::math::round; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(round BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -int -signbit BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using boost::math::signbit; - - return signbit BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit,Y> -trunc BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q) -{ - using namespace detail; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(trunc BOOST_PREVENT_MACRO_SUBSTITUTION (q.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -quantity<Unit, Y> -fmod(const quantity<Unit,Y>& q1, const quantity<Unit,Y>& q2) -{ - using std::fmod; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(fmod(q1.value(), q2.value())); -} - -template<class Unit, class Y> -inline -BOOST_CONSTEXPR -quantity<Unit, Y> -modf(const quantity<Unit, Y>& q1, quantity<Unit, Y>* q2) -{ - using std::modf; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(modf(q1.value(), &quantity_cast<Y&>(*q2))); -} - -template<class Unit, class Y, class Int> -inline -BOOST_CONSTEXPR -quantity<Unit, Y> -frexp(const quantity<Unit, Y>& q,Int* ex) -{ - using std::frexp; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(frexp(q.value(),ex)); -} - -/// For non-dimensionless quantities, integral and rational powers -/// and roots can be computed by @c pow<Ex> and @c root<Rt> respectively. -template<class S, class Y> -inline -BOOST_CONSTEXPR -quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> -pow(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q1, - const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q2) -{ - using std::pow; - - typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S),Y> quantity_type; - - return quantity_type::from_value(pow(q1.value(), q2.value())); -} - -template<class S, class Y> -inline -BOOST_CONSTEXPR -quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> -exp(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q) -{ - using std::exp; - - typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> quantity_type; - - return quantity_type::from_value(exp(q.value())); -} - -template<class Unit, class Y, class Int> -inline -BOOST_CONSTEXPR -quantity<Unit, Y> -ldexp(const quantity<Unit, Y>& q,const Int& ex) -{ - using std::ldexp; - - typedef quantity<Unit,Y> quantity_type; - - return quantity_type::from_value(ldexp(q.value(), ex)); -} - -template<class S, class Y> -inline -BOOST_CONSTEXPR -quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> -log(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q) -{ - using std::log; - - typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> quantity_type; - - return quantity_type::from_value(log(q.value())); -} - -template<class S, class Y> -inline -BOOST_CONSTEXPR -quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> -log10(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q) -{ - using std::log10; - - typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> quantity_type; - - return quantity_type::from_value(log10(q.value())); -} - -template<class Unit,class Y> -inline -BOOST_CONSTEXPR -typename root_typeof_helper< - quantity<Unit,Y>, - static_rational<2> - >::type -sqrt(const quantity<Unit,Y>& q) -{ - using std::sqrt; - - typedef typename root_typeof_helper< - quantity<Unit,Y>, - static_rational<2> - >::type quantity_type; - - return quantity_type::from_value(sqrt(q.value())); -} - -} // namespace units - -} // namespace boost - -namespace boost { - -namespace units { - -// trig functions with si argument/return types - -/// cos of theta in radians -template<class Y> -BOOST_CONSTEXPR -typename dimensionless_quantity<si::system,Y>::type -cos(const quantity<si::plane_angle,Y>& theta) -{ - using std::cos; - return cos(theta.value()); -} - -/// sin of theta in radians -template<class Y> -BOOST_CONSTEXPR -typename dimensionless_quantity<si::system,Y>::type -sin(const quantity<si::plane_angle,Y>& theta) -{ - using std::sin; - return sin(theta.value()); -} - -/// tan of theta in radians -template<class Y> -BOOST_CONSTEXPR -typename dimensionless_quantity<si::system,Y>::type -tan(const quantity<si::plane_angle,Y>& theta) -{ - using std::tan; - return tan(theta.value()); -} - -/// cos of theta in other angular units -template<class System,class Y> -BOOST_CONSTEXPR -typename dimensionless_quantity<System,Y>::type -cos(const quantity<unit<plane_angle_dimension,System>,Y>& theta) -{ - return cos(quantity<si::plane_angle,Y>(theta)); -} - -/// sin of theta in other angular units -template<class System,class Y> -BOOST_CONSTEXPR -typename dimensionless_quantity<System,Y>::type -sin(const quantity<unit<plane_angle_dimension,System>,Y>& theta) -{ - return sin(quantity<si::plane_angle,Y>(theta)); -} - -/// tan of theta in other angular units -template<class System,class Y> -BOOST_CONSTEXPR -typename dimensionless_quantity<System,Y>::type -tan(const quantity<unit<plane_angle_dimension,System>,Y>& theta) -{ - return tan(quantity<si::plane_angle,Y>(theta)); -} - -/// acos of dimensionless quantity returning angle in same system -template<class Y,class System> -BOOST_CONSTEXPR -quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y> -acos(const quantity<unit<dimensionless_type, homogeneous_system<System> >,Y>& val) -{ - using std::acos; - return quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>(acos(val.value())*si::radians); -} - -/// acos of dimensionless quantity returning angle in radians -template<class Y> -BOOST_CONSTEXPR -quantity<angle::radian_base_unit::unit_type,Y> -acos(const quantity<unit<dimensionless_type, heterogeneous_dimensionless_system>,Y>& val) -{ - using std::acos; - return quantity<angle::radian_base_unit::unit_type,Y>::from_value(acos(val.value())); -} - -/// asin of dimensionless quantity returning angle in same system -template<class Y,class System> -BOOST_CONSTEXPR -quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y> -asin(const quantity<unit<dimensionless_type, homogeneous_system<System> >,Y>& val) -{ - using std::asin; - return quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>(asin(val.value())*si::radians); -} - -/// asin of dimensionless quantity returning angle in radians -template<class Y> -BOOST_CONSTEXPR -quantity<angle::radian_base_unit::unit_type,Y> -asin(const quantity<unit<dimensionless_type, heterogeneous_dimensionless_system>,Y>& val) -{ - using std::asin; - return quantity<angle::radian_base_unit::unit_type,Y>::from_value(asin(val.value())); -} - -/// atan of dimensionless quantity returning angle in same system -template<class Y,class System> -BOOST_CONSTEXPR -quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y> -atan(const quantity<unit<dimensionless_type, homogeneous_system<System> >, Y>& val) -{ - using std::atan; - return quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>(atan(val.value())*si::radians); -} - -/// atan of dimensionless quantity returning angle in radians -template<class Y> -BOOST_CONSTEXPR -quantity<angle::radian_base_unit::unit_type,Y> -atan(const quantity<unit<dimensionless_type, heterogeneous_dimensionless_system>, Y>& val) -{ - using std::atan; - return quantity<angle::radian_base_unit::unit_type,Y>::from_value(atan(val.value())); -} - -/// atan2 of @c value_type returning angle in radians -template<class Y, class Dimension, class System> -BOOST_CONSTEXPR -quantity<unit<plane_angle_dimension, homogeneous_system<System> >, Y> -atan2(const quantity<unit<Dimension, homogeneous_system<System> >, Y>& y, - const quantity<unit<Dimension, homogeneous_system<System> >, Y>& x) -{ - using std::atan2; - return quantity<unit<plane_angle_dimension, homogeneous_system<System> >, Y>(atan2(y.value(),x.value())*si::radians); -} - -/// atan2 of @c value_type returning angle in radians -template<class Y, class Dimension, class System> -BOOST_CONSTEXPR -quantity<angle::radian_base_unit::unit_type,Y> -atan2(const quantity<unit<Dimension, heterogeneous_system<System> >, Y>& y, - const quantity<unit<Dimension, heterogeneous_system<System> >, Y>& x) -{ - using std::atan2; - return quantity<angle::radian_base_unit::unit_type,Y>::from_value(atan2(y.value(),x.value())); -} - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CMATH_HPP diff --git a/contrib/restricted/boost/boost/units/config.hpp b/contrib/restricted/boost/boost/units/config.hpp deleted file mode 100644 index 64e9025ce6..0000000000 --- a/contrib/restricted/boost/boost/units/config.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// 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_CONFIG_HPP -#define BOOST_UNITS_CONFIG_HPP - -#include <boost/config.hpp> -#include <boost/version.hpp> - -#ifndef BOOST_UNITS_HAS_BOOST_TYPEOF - #if (BOOST_VERSION >= 103400) - ///INTERNAL ONLY - #define BOOST_UNITS_HAS_BOOST_TYPEOF 1 - #else - ///INTERNAL ONLY - #define BOOST_UNITS_HAS_BOOST_TYPEOF 0 - #endif -#endif - -#if (BOOST_UNITS_HAS_BOOST_TYPEOF) - #include <boost/typeof/typeof.hpp> - ///INTERNAL ONLY - #define BOOST_UNITS_HAS_TYPEOF 1 -#else - #if (__GNUC__ && __cplusplus) - ///INTERNAL ONLY - #define BOOST_UNITS_HAS_TYPEOF 1 - ///INTERNAL ONLY - #define BOOST_UNITS_HAS_GNU_TYPEOF 1 - #elif defined(__MWERKS__) - ///INTERNAL ONLY - #define BOOST_UNITS_HAS_TYPEOF 1 - ///INTERNAL ONLY - #define BOOST_UNITS_HAS_MWERKS_TYPEOF 1 - #else - ///INTERNAL ONLY - #define BOOST_UNITS_HAS_TYPEOF 0 - #endif -#endif - -// uncomment this to test without typeof support at all -//#undef BOOST_UNITS_HAS_TYPEOF -//#define BOOST_UNITS_HAS_TYPEOF 0 - -#ifndef BOOST_UNITS_NO_COMPILER_CHECK - - #ifdef BOOST_NO_MEMBER_TEMPLATES - #error Boost.Units requires member template - #endif - - #ifdef BOOST_NO_MEMBER_TEMPLATE_KEYWORD - #error Boost.Units requires member template keyword - #endif - - #ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION - #error Boost.Units requires in class member initialization - #endif - - #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - #error Boost.Units requires function template partial ordering - #endif - - -#endif - -#ifdef BOOST_UNITS_REQUIRE_LAYOUT_COMPATIBILITY - ///INTERNAL ONLY - #define BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(a, b) BOOST_STATIC_ASSERT((sizeof(a) == sizeof(b))) -#else - ///INTERNAL ONLY - #define BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(a, b) -#endif - -#ifdef BOOST_UNITS_DOXYGEN - -/// If defined will trigger a static assertion if quantity<Unit, T> -/// is not layout compatible with T -#define BOOST_UNITS_REQUIRE_LAYOUT_COMPATIBILITY - -/// If defined will disable a preprocessor check that the -/// compiler is able to handle the library. -#define BOOST_UNITS_NO_COMPILER_CHECK - -/// Enable checking to verify that a homogeneous system -/// is actually capable of representing all the dimensions -/// that it is used with. Off by default. -#define BOOST_UNITS_CHECK_HOMOGENEOUS_UNITS - -#endif - -#endif diff --git a/contrib/restricted/boost/boost/units/conversion.hpp b/contrib/restricted/boost/boost/units/conversion.hpp deleted file mode 100644 index f5d4a1ef2f..0000000000 --- a/contrib/restricted/boost/boost/units/conversion.hpp +++ /dev/null @@ -1,186 +0,0 @@ -// 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) 2007-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_CONVERSION_HPP -#define BOOST_UNITS_CONVERSION_HPP - -/// \file -/// \brief Template for defining conversions between quantities. - -#include <boost/units/detail/conversion_impl.hpp> - -namespace boost { - -namespace units { - -template<class From, class To> -struct conversion_helper; - -#ifdef BOOST_UNITS_DOXYGEN - -/// Template for defining conversions between -/// quantities. This template should be specialized -/// for every quantity that allows conversions. -/// For example, if you have a two units -/// called pair and dozen you would write -/// @code -/// namespace boost { -/// namespace units { -/// template<class T0, class T1> -/// struct conversion_helper<quantity<dozen, T0>, quantity<pair, T1> > -/// { -/// static quantity<pair, T1> convert(const quantity<dozen, T0>& source) -/// { -/// return(quantity<pair, T1>::from_value(6 * source.value())); -/// } -/// }; -/// } -/// } -/// @endcode -/// -/// In most cases, the predefined specializations for @c unit -/// and @c absolute should be sufficient, so users should rarely -/// need to use this. -template<class From, class To> -struct conversion_helper -{ - static BOOST_CONSTEXPR To convert(const From&); -}; - -#endif - -/// Defines the conversion factor from a base unit to any unit -/// or to another base unit with the correct dimensions. Uses -/// of this macro must appear at global scope. -/// If the destination unit is a base unit or a unit that contains -/// only one base unit which is raised to the first power (e.g. feet->meters) -/// the reverse (meters->feet in this example) need not be defined explicitly. -#define BOOST_UNITS_DEFINE_CONVERSION_FACTOR(Source, Destination, type_, value_) \ - namespace boost { \ - namespace units { \ - template<> \ - struct select_base_unit_converter< \ - unscale<Source>::type, \ - unscale<reduce_unit<Destination::unit_type>::type>::type \ - > \ - { \ - typedef Source source_type; \ - typedef reduce_unit<Destination::unit_type>::type destination_type; \ - }; \ - template<> \ - struct base_unit_converter<Source, reduce_unit<Destination::unit_type>::type> \ - { \ - BOOST_STATIC_CONSTEXPR bool is_defined = true; \ - typedef type_ type; \ - static BOOST_CONSTEXPR type value() { return(value_); } \ - }; \ - } \ - } \ - void boost_units_require_semicolon() - -/// Defines the conversion factor from a base unit to any other base -/// unit with the same dimensions. Params should be a Boost.Preprocessor -/// Seq of template parameters, such as (class T1)(class T2) -/// All uses of must appear at global scope. The reverse conversion will -/// be defined automatically. This macro is a little dangerous, because, -/// unlike the non-template form, it will silently fail if either base -/// unit is scaled. This is probably not an issue if both the source -/// and destination types depend on the template parameters, but be aware -/// that a generic conversion to kilograms is not going to work. -#define BOOST_UNITS_DEFINE_CONVERSION_FACTOR_TEMPLATE(Params, Source, Destination, type_, value_) \ - namespace boost { \ - namespace units { \ - template<BOOST_PP_SEQ_ENUM(Params)> \ - struct base_unit_converter< \ - Source, \ - BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Destination, typename Source::dimension_type)\ - > \ - { \ - BOOST_STATIC_CONSTEXPR bool is_defined = true; \ - typedef type_ type; \ - static BOOST_CONSTEXPR type value() { return(value_); } \ - }; \ - } \ - } \ - void boost_units_require_semicolon() - -/// Specifies the default conversion to be applied when -/// no direct conversion is available. -/// Source is a base unit. Dest is any unit with the -/// same dimensions. -#define BOOST_UNITS_DEFAULT_CONVERSION(Source, Dest) \ - namespace boost { \ - namespace units { \ - template<> \ - struct unscaled_get_default_conversion<unscale<Source>::type> \ - { \ - BOOST_STATIC_CONSTEXPR bool is_defined = true; \ - typedef Dest::unit_type type; \ - }; \ - } \ - } \ - void boost_units_require_semicolon() - -/// Specifies the default conversion to be applied when -/// no direct conversion is available. -/// Params is a PP Sequence of template arguments. -/// Source is a base unit. Dest is any unit with the -/// same dimensions. The source must not be a scaled -/// base unit. -#define BOOST_UNITS_DEFAULT_CONVERSION_TEMPLATE(Params, Source, Dest) \ - namespace boost { \ - namespace units { \ - template<BOOST_PP_SEQ_ENUM(Params)> \ - struct unscaled_get_default_conversion<Source> \ - { \ - BOOST_STATIC_CONSTEXPR bool is_defined = true; \ - typedef typename Dest::unit_type type; \ - }; \ - } \ - } \ - void boost_units_require_semicolon() - -/// INTERNAL ONLY -/// Users should not create their units in namespace boost::units. -/// If we want to make this public it needs to allow better control over -/// the namespaces. --SJW. -/// template that defines a base_unit and conversion to another dimensionally-consistent unit -#define BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(namespace_, name_, name_string_, symbol_string_, factor, unit, id)\ -namespace boost { \ -namespace units { \ -namespace namespace_ { \ -struct name_ ## _base_unit \ - : base_unit<name_ ## _base_unit, unit::dimension_type, id> { \ - static BOOST_CONSTEXPR const char* name() { return(name_string_); } \ - static BOOST_CONSTEXPR const char* symbol() { return(symbol_string_); } \ -}; \ -} \ -} \ -} \ -BOOST_UNITS_DEFINE_CONVERSION_FACTOR(namespace_::name_ ## _base_unit, unit, double, factor); \ -BOOST_UNITS_DEFAULT_CONVERSION(namespace_::name_ ## _base_unit, unit) - -/// Find the conversion factor between two units. -template<class FromUnit,class ToUnit> -inline -BOOST_CONSTEXPR -typename one_to_double_type< - typename detail::conversion_factor_helper<FromUnit, ToUnit>::type ->::type -conversion_factor(const FromUnit&,const ToUnit&) -{ - return(one_to_double(detail::conversion_factor_helper<FromUnit, ToUnit>::value())); -} - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CONVERSION_HPP diff --git a/contrib/restricted/boost/boost/units/derived_dimension.hpp b/contrib/restricted/boost/boost/units/derived_dimension.hpp deleted file mode 100644 index 54cc46a3b1..0000000000 --- a/contrib/restricted/boost/boost/units/derived_dimension.hpp +++ /dev/null @@ -1,208 +0,0 @@ -// 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 <boost/units/dim.hpp> -#include <boost/units/dimension.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/dimension_list.hpp> - -namespace boost { - -namespace units { - -/// A utility class for defining composite dimensions with integer powers. -template<class DT1 = dimensionless_type,long E1 = 0, - class DT2 = dimensionless_type,long E2 = 0, - class DT3 = dimensionless_type,long E3 = 0, - class DT4 = dimensionless_type,long E4 = 0, - class DT5 = dimensionless_type,long E5 = 0, - class DT6 = dimensionless_type,long E6 = 0, - class DT7 = dimensionless_type,long E7 = 0, - class DT8 = dimensionless_type,long E8 = 0> -struct derived_dimension -{ -#ifdef BOOST_UNITS_DOXYGEN - typedef detail::unspecified type; -#else - typedef typename - make_dimension_list< list< dim< DT1,static_rational<E1> >, - list< dim< DT2,static_rational<E2> >, - list< dim< DT3,static_rational<E3> >, - list< dim< DT4,static_rational<E4> >, - list< dim< DT5,static_rational<E5> >, - list< dim< DT6,static_rational<E6> >, - list< dim< DT7,static_rational<E7> >, - list< dim< DT8,static_rational<E8> >, dimensionless_type > > > > > > > > >::type type; -#endif -}; - -/// INTERNAL ONLY -template<class DT1,long E1> -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<E1> >, dimensionless_type > >::type type; -}; - -/// INTERNAL ONLY -template<class DT1,long E1, - class DT2,long E2> -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<E1> >, - list< dim< DT2,static_rational<E2> >, dimensionless_type > > >::type type; -}; - -/// INTERNAL ONLY -template<class DT1,long E1, - class DT2,long E2, - class DT3,long E3> -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<E1> >, - list< dim< DT2,static_rational<E2> >, - list< dim< DT3,static_rational<E3> >, dimensionless_type > > > >::type type; -}; - -/// INTERNAL ONLY -template<class DT1,long E1, - class DT2,long E2, - class DT3,long E3, - class DT4,long E4> -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<E1> >, - list< dim< DT2,static_rational<E2> >, - list< dim< DT3,static_rational<E3> >, - list< dim< DT4,static_rational<E4> >, dimensionless_type > > > > >::type type; -}; - -/// INTERNAL ONLY -template<class DT1,long E1, - class DT2,long E2, - class DT3,long E3, - class DT4,long E4, - class DT5,long E5> -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<E1> >, - list< dim< DT2,static_rational<E2> >, - list< dim< DT3,static_rational<E3> >, - list< dim< DT4,static_rational<E4> >, - list< dim< DT5,static_rational<E5> >, dimensionless_type > > > > > >::type type; -}; - -/// INTERNAL ONLY -template<class DT1,long E1, - class DT2,long E2, - class DT3,long E3, - class DT4,long E4, - class DT5,long E5, - class DT6,long E6> -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<E1> >, - list< dim< DT2,static_rational<E2> >, - list< dim< DT3,static_rational<E3> >, - list< dim< DT4,static_rational<E4> >, - list< dim< DT5,static_rational<E5> >, - list< dim< DT6,static_rational<E6> >, dimensionless_type > > > > > > >::type type; -}; - -/// INTERNAL ONLY -template<class DT1,long E1, - class DT2,long E2, - class DT3,long E3, - class DT4,long E4, - class DT5,long E5, - class DT6,long E6, - class DT7,long E7> -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<E1> >, - list< dim< DT2,static_rational<E2> >, - list< dim< DT3,static_rational<E3> >, - list< dim< DT4,static_rational<E4> >, - list< dim< DT5,static_rational<E5> >, - list< dim< DT6,static_rational<E6> >, - list< dim< DT7,static_rational<E7> >, dimensionless_type > > > > > > > >::type type; -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/detail/absolute_impl.hpp b/contrib/restricted/boost/boost/units/detail/absolute_impl.hpp deleted file mode 100644 index ffd8b215b8..0000000000 --- a/contrib/restricted/boost/boost/units/detail/absolute_impl.hpp +++ /dev/null @@ -1,104 +0,0 @@ -// 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_ABSOLUTE_IMPL_HPP -#define BOOST_UNITS_ABSOLUTE_IMPL_HPP - -#include <iosfwd> - -#include <boost/units/config.hpp> -#include <boost/units/conversion.hpp> -#include <boost/units/heterogeneous_system.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// INTERNAL ONLY -template<class D, class S> -struct reduce_unit<absolute<unit<D, S> > > -{ - typedef absolute<typename reduce_unit<unit<D, S> >::type> type; -}; - -namespace detail { - -struct undefined_affine_conversion_base { - BOOST_STATIC_CONSTEXPR bool is_defined = false; -}; - -} // namespace detail - -/// INTERNAL ONLY -template<class From, class To> -struct affine_conversion_helper : detail::undefined_affine_conversion_base { }; - -namespace detail { - -template<bool IsDefined, bool ReverseIsDefined> -struct affine_conversion_impl; - -template<bool ReverseIsDefined> -struct affine_conversion_impl<true, ReverseIsDefined> -{ - template<class Unit1, class Unit2, class T0, class T1> - struct apply { - static BOOST_CONSTEXPR T1 value(const T0& t0) - { - return( - t0 * - conversion_factor(Unit1(), Unit2()) + - affine_conversion_helper<typename reduce_unit<Unit1>::type, typename reduce_unit<Unit2>::type>::value()); - } - }; -}; - -template<> -struct affine_conversion_impl<false, true> -{ - template<class Unit1, class Unit2, class T0, class T1> - struct apply - { - static BOOST_CONSTEXPR T1 value(const T0& t0) - { - return( - (t0 - affine_conversion_helper<typename reduce_unit<Unit2>::type, typename reduce_unit<Unit1>::type>::value()) * - conversion_factor(Unit1(), Unit2())); - } - }; -}; - -} // namespace detail - -/// INTERNAL ONLY -template<class Unit1, class T1, class Unit2, class T2> -struct conversion_helper<quantity<absolute<Unit1>, T1>, quantity<absolute<Unit2>, T2> > -{ - typedef quantity<absolute<Unit1>, T1> from_quantity_type; - typedef quantity<absolute<Unit2>, T2> to_quantity_type; - static BOOST_CONSTEXPR to_quantity_type convert(const from_quantity_type& source) - { - return( - to_quantity_type::from_value( - detail::affine_conversion_impl< - affine_conversion_helper<typename reduce_unit<Unit1>::type, typename reduce_unit<Unit2>::type>::is_defined, - affine_conversion_helper<typename reduce_unit<Unit2>::type, typename reduce_unit<Unit1>::type>::is_defined - >::template apply<Unit1, Unit2, T1, T2>::value(source.value()) - ) - ); - } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ABSOLUTE_IMPL_HPP diff --git a/contrib/restricted/boost/boost/units/detail/cmath_impl.hpp b/contrib/restricted/boost/boost/units/detail/cmath_impl.hpp deleted file mode 100644 index d5bec14f43..0000000000 --- a/contrib/restricted/boost/boost/units/detail/cmath_impl.hpp +++ /dev/null @@ -1,154 +0,0 @@ -// 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_CMATH_IMPL_HPP -#define BOOST_UNITS_CMATH_IMPL_HPP - -#include <boost/config.hpp> -#include <boost/math/special_functions/fpclassify.hpp> - -namespace boost { -namespace units { -namespace detail { - -template<class Y> -inline bool isgreater BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false; - else return v1 > v2; -} - -template<class Y> -inline bool isgreaterequal BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false; - else return v1 >= v2; -} - -template<class Y> -inline bool isless BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false; - else return v1 < v2; -} - -template<class Y> -inline bool islessequal BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false; - else return v1 <= v2; -} - -template<class Y> -inline bool islessgreater BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false; - else return v1 < v2 || v1 > v2; -} - -template<class Y> -inline bool isunordered BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - return (boost::math::isnan)(v1) || (boost::math::isnan)(v2); -} - -template<class Y> -inline Y fdim BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - if((boost::math::isnan)(v1)) return v1; - else if((boost::math::isnan)(v2)) return v2; - else if(v1 > v2) return(v1 - v2); - else return(Y(0)); -} - -#if 0 - -template<class T> -struct fma_issue_warning { - enum { value = false }; -}; - -template<class Y> -inline Y fma(const Y& v1,const Y& v2,const Y& v3) -{ - //this implementation does *not* meet the - //requirement of infinite intermediate precision - BOOST_STATIC_WARNING((fma_issue_warning<Y>::value)); - - return v1 * v2 + v3; -} - -#endif - -template<class Y> -inline Y fmax BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - if((boost::math::isnan)(v1)) return(v2); - else if((boost::math::isnan)(v2)) return(v1); - else if(v1 > v2) return(v1); - else return(v2); -} - -template<class Y> -inline Y fmin BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2) -{ - if((boost::math::isnan)(v1)) return(v2); - else if((boost::math::isnan)(v2)) return(v1); - else if(v1 < v2) return(v1); - else return(v2); -} - -//template<class Y> -//inline long long llrint(const Y& val) -//{ -// return static_cast<long long>(rint(val)); -//} -// -//template<class Y> -//inline long long llround(const Y& val) -//{ -// return static_cast<long long>(round(val)); -//} - -#if 0 - -template<class Y> -inline Y nearbyint(const Y& val) -{ - //this is not really correct. - //the result should be according to the - //current rounding mode. - using boost::math::round; - return round(val); -} - -template<class Y> -inline Y rint(const Y& val) -{ - //I don't feel like trying to figure out - //how to raise a floating pointer exception - return nearbyint(val); -} - -#endif - -template<class Y> -inline Y trunc BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& val) -{ - if(val > 0) return std::floor(val); - else if(val < 0) return std::ceil(val); - else return val; -} - -} -} -} - -#endif // BOOST_UNITS_CMATH_IMPL_HPP diff --git a/contrib/restricted/boost/boost/units/detail/conversion_impl.hpp b/contrib/restricted/boost/boost/units/detail/conversion_impl.hpp deleted file mode 100644 index f3cc19579e..0000000000 --- a/contrib/restricted/boost/boost/units/detail/conversion_impl.hpp +++ /dev/null @@ -1,452 +0,0 @@ -// 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) 2007-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_DETAIL_CONVERSION_IMPL_HPP -#define BOOST_UNITS_DETAIL_CONVERSION_IMPL_HPP - -#include <boost/mpl/bool.hpp> -#include <boost/mpl/and.hpp> -#include <boost/mpl/divides.hpp> -#include <boost/preprocessor/seq/enum.hpp> -#include <boost/type_traits/is_same.hpp> - -#include <boost/units/heterogeneous_system.hpp> -#include <boost/units/homogeneous_system.hpp> -#include <boost/units/reduce_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/dimension_list.hpp> -#include <boost/units/detail/heterogeneous_conversion.hpp> -#include <boost/units/detail/one.hpp> -#include <boost/units/detail/static_rational_power.hpp> -#include <boost/units/detail/unscale.hpp> - -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -template<class Source, class Dest> -struct conversion_factor_helper; - -template<class Source, class Dest> -struct call_base_unit_converter; - -} - -/// INTERNAL ONLY -struct undefined_base_unit_converter_base { - BOOST_STATIC_CONSTEXPR bool is_defined = false; -}; - -/// INTERNAL ONLY -struct no_default_conversion { - BOOST_STATIC_CONSTEXPR bool is_defined = false; -}; - -/// INTERNAL ONLY -template<class BaseUnit> -struct unscaled_get_default_conversion : no_default_conversion { }; - -/// INTERNAL ONLY -template<bool is_defined> -struct unscaled_get_default_conversion_impl; - -/// INTERNAL ONLY -template<> -struct unscaled_get_default_conversion_impl<true> -{ - template<class T> - struct apply - { - typedef typename unscaled_get_default_conversion<typename unscale<T>::type>::type type; - }; -}; - -/// INTERNAL ONLY -template<> -struct unscaled_get_default_conversion_impl<false> -{ - template<class T> - struct apply - { - typedef typename T::unit_type type; - }; -}; - -/// INTERNAL ONLY -template<class BaseUnit> -struct get_default_conversion -{ - typedef typename unscaled_get_default_conversion_impl< - unscaled_get_default_conversion<typename unscale<BaseUnit>::type>::is_defined - >::template apply<BaseUnit>::type type; -}; - -/// INTERNAL ONLY -template<class Source, class Destination> -struct select_base_unit_converter -{ - typedef Source source_type; - typedef Destination destination_type; -}; - -/// INTERNAL ONLY -template<class Source, class Dest> -struct base_unit_converter_base : undefined_base_unit_converter_base { -}; - -/// INTERNAL ONLY -template<class Source> -struct base_unit_converter_base<Source, BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Source, typename Source::dimension_type)> -{ - BOOST_STATIC_CONSTEXPR bool is_defined = true; - typedef one type; - static BOOST_CONSTEXPR type value() { - return(one()); - } -}; - -/// INTERNAL ONLY -template<class Source, class Dest> -struct base_unit_converter : base_unit_converter_base<Source, Dest> { }; - -namespace detail { - -template<class Source, class Dest> -struct do_call_base_unit_converter { - typedef select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type> selector; - typedef typename selector::source_type source_type; - typedef typename selector::destination_type destination_type; - typedef base_unit_converter<source_type, destination_type> converter; - typedef typename mpl::divides<typename get_scale_list<Source>::type, typename get_scale_list<source_type>::type>::type source_factor; - typedef typename mpl::divides<typename get_scale_list<Dest>::type, typename get_scale_list<destination_type>::type>::type destination_factor; - typedef typename mpl::divides<source_factor, destination_factor>::type factor; - typedef eval_scale_list<factor> eval_factor; - typedef typename multiply_typeof_helper<typename converter::type, typename eval_factor::type>::type type; - static BOOST_CONSTEXPR type value() - { - return(converter::value() * eval_factor::value()); - } -}; - -template<bool forward_is_defined, bool reverse_is_defined> -struct call_base_unit_converter_base_unit_impl; - -template<> -struct call_base_unit_converter_base_unit_impl<true, true> -{ - template<class Source, class Dest> - struct apply - : do_call_base_unit_converter<Source, typename Dest::unit_type> - { - }; -}; - -template<> -struct call_base_unit_converter_base_unit_impl<true, false> -{ - template<class Source, class Dest> - struct apply - : do_call_base_unit_converter<Source, typename Dest::unit_type> - { - }; -}; - -template<> -struct call_base_unit_converter_base_unit_impl<false, true> -{ - template<class Source, class Dest> - struct apply - { - typedef do_call_base_unit_converter<Dest, typename Source::unit_type> converter; - typedef typename divide_typeof_helper<one, typename converter::type>::type type; - static BOOST_CONSTEXPR type value() { - return(one() / converter::value()); - } - }; -}; - -template<> -struct call_base_unit_converter_base_unit_impl<false, false> -{ - template<class Source, class Dest> - struct apply - { - typedef typename reduce_unit<typename get_default_conversion<Source>::type>::type new_source; - typedef typename reduce_unit<typename get_default_conversion<Dest>::type>::type new_dest; - typedef call_base_unit_converter<Source, new_source> start; - typedef detail::conversion_factor_helper< - new_source, - new_dest - > conversion; - typedef call_base_unit_converter<Dest, new_dest> end; - typedef typename divide_typeof_helper< - typename multiply_typeof_helper< - typename start::type, - typename conversion::type - >::type, - typename end::type - >::type type; - static BOOST_CONSTEXPR type value() { - return(start::value() * conversion::value() / end::value()); - } - }; -}; - -template<int N> -struct get_default_conversion_impl -{ - template<class Begin> - struct apply - { - typedef typename Begin::item source_pair; - typedef typename source_pair::value_type exponent; - typedef typename source_pair::tag_type source; - typedef typename reduce_unit<typename get_default_conversion<source>::type>::type new_source; - typedef typename get_default_conversion_impl<N-1>::template apply<typename Begin::next> next_iteration; - typedef typename multiply_typeof_helper<typename power_typeof_helper<new_source, exponent>::type, typename next_iteration::unit_type>::type unit_type; - typedef call_base_unit_converter<source, new_source> conversion; - typedef typename multiply_typeof_helper<typename conversion::type, typename next_iteration::type>::type type; - static BOOST_CONSTEXPR type value() { - return(static_rational_power<exponent>(conversion::value()) * next_iteration::value()); - } - }; -}; - -template<> -struct get_default_conversion_impl<0> -{ - template<class Begin> - struct apply - { - typedef unit<dimensionless_type, heterogeneous_system<heterogeneous_system_impl<dimensionless_type, dimensionless_type, no_scale> > > unit_type; - typedef one type; - static BOOST_CONSTEXPR one value() { - return(one()); - } - }; -}; - -template<bool is_defined> -struct call_base_unit_converter_impl; - -template<> -struct call_base_unit_converter_impl<true> -{ - template<class Source, class Dest> - struct apply - : do_call_base_unit_converter<Source, Dest> - { - }; -}; - -template<> -struct call_base_unit_converter_impl<false> -{ - template<class Source, class Dest> - struct apply { - typedef typename reduce_unit<typename get_default_conversion<Source>::type>::type new_source; - typedef typename Dest::system_type::type system_list; - typedef typename get_default_conversion_impl<system_list::size::value>::template apply<system_list> impl; - typedef typename impl::unit_type new_dest; - typedef call_base_unit_converter<Source, new_source> start; - typedef conversion_factor_helper<new_source, new_dest> conversion; - typedef typename divide_typeof_helper< - typename multiply_typeof_helper< - typename start::type, - typename conversion::type - >::type, - typename impl::type - >::type type; - static BOOST_CONSTEXPR type value() { - return(start::value() * conversion::value() / impl::value()); - } - }; -}; - -#define BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, Dest)\ - base_unit_converter<\ - typename select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type>::source_type,\ - typename select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type>::destination_type\ - >::is_defined - -template<class Source, class Dest> -struct call_base_unit_converter : call_base_unit_converter_impl<BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, Dest)>::template apply<Source, Dest> -{ -}; - -template<class Source, class Dest> -struct call_base_unit_converter<Source, BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Dest, typename Source::dimension_type)> : - call_base_unit_converter_base_unit_impl< - BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, typename Dest::unit_type), - BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Dest, typename Source::unit_type) - >::template apply<Source, Dest> -{ -}; - -template<int N> -struct conversion_impl -{ - template<class Begin, class DestinationSystem> - struct apply - { - typedef typename conversion_impl<N-1>::template apply< - typename Begin::next, - DestinationSystem - > next_iteration; - typedef typename Begin::item unit_pair; - typedef typename unit_pair::tag_type unit; - typedef typename unit::dimension_type dimensions; - typedef typename reduce_unit<units::unit<dimensions, DestinationSystem> >::type reduced_unit; - typedef detail::call_base_unit_converter<unit, reduced_unit> converter; - typedef typename multiply_typeof_helper<typename converter::type, typename next_iteration::type>::type type; - static BOOST_CONSTEXPR type value() { return(static_rational_power<typename unit_pair::value_type>(converter::value()) * next_iteration::value()); } - }; -}; - -template<> -struct conversion_impl<0> -{ - template<class Begin, class DestinationSystem> - struct apply - { - typedef one type; - static BOOST_CONSTEXPR type value() { return(one()); } - }; -}; - -} // namespace detail - -/// forward to conversion_factor (intentionally allowing ADL) -/// INTERNAL ONLY -template<class Unit1, class T1, class Unit2, class T2> -struct conversion_helper<quantity<Unit1, T1>, quantity<Unit2, T2> > -{ - /// INTERNAL ONLY - typedef quantity<Unit2, T2> destination_type; - static BOOST_CONSTEXPR destination_type convert(const quantity<Unit1, T1>& source) - { - return(destination_type::from_value(static_cast<T2>(source.value() * conversion_factor(Unit1(), Unit2())))); - } -}; - -namespace detail { - -template<class Source, class Dest> -struct conversion_factor_helper; - -template<class D, class L1, class L2> -struct conversion_factor_helper<unit<D, homogeneous_system<L1> >, unit<D, homogeneous_system<L2> > > - : conversion_factor_helper< - typename reduce_unit<unit<D, homogeneous_system<L1> > >::type, - typename reduce_unit<unit<D, homogeneous_system<L2> > >::type - > -{ - //typedef typename reduce_unit<unit<D, homogeneous_system<L1> > >::type source_unit; - //typedef typename source_unit::system_type::type unit_list; - //typedef typename detail::conversion_impl<unit_list::size::value>::template apply< - // unit_list, - // homogeneous_system<L2> - //> impl; - //typedef typename impl::type type; - //static BOOST_CONSTEXPR type value() - //{ - // return(impl::value()); - //} -}; - -template<class D, class L1, class L2> -struct conversion_factor_helper<unit<D, heterogeneous_system<L1> >, unit<D, homogeneous_system<L2> > > - : conversion_factor_helper< - typename reduce_unit<unit<D, heterogeneous_system<L1> > >::type, - typename reduce_unit<unit<D, homogeneous_system<L2> > >::type - > -{ - //typedef typename detail::conversion_impl<L1::type::size::value>::template apply< - // typename L1::type, - // homogeneous_system<L2> - //> impl; - //typedef eval_scale_list<typename L1::scale> scale; - //typedef typename multiply_typeof_helper<typename impl::type, typename scale::type>::type type; - //static BOOST_CONSTEXPR type value() - //{ - // return(impl::value() * scale::value()); - //} -}; - -// There is no simple algorithm for doing this conversion -// other than just defining it as the reverse of the -// heterogeneous->homogeneous case -template<class D, class L1, class L2> -struct conversion_factor_helper<unit<D, homogeneous_system<L1> >, unit<D, heterogeneous_system<L2> > > - : conversion_factor_helper< - typename reduce_unit<unit<D, homogeneous_system<L1> > >::type, - typename reduce_unit<unit<D, heterogeneous_system<L2> > >::type - > -{ - //typedef typename detail::conversion_impl<L2::type::size::value>::template apply< - // typename L2::type, - // homogeneous_system<L1> - //> impl; - //typedef eval_scale_list<typename L2::scale> scale; - //typedef typename multiply_typeof_helper<typename impl::type, typename scale::type>::type type; - //static BOOST_CONSTEXPR type value() - //{ - // return(one() / (impl::value() * scale::value())); - //} -}; - -/// Requires that all possible conversions -/// between base units are defined. -template<class D, class S1, class S2> -struct conversion_factor_helper<unit<D, heterogeneous_system<S1> >, unit<D, heterogeneous_system<S2> > > -{ - /// INTERNAL ONLY - typedef typename detail::extract_base_units<S1::type::size::value>::template apply< - typename S1::type, - dimensionless_type - >::type from_base_units; - /// INTERNAL ONLY - typedef typename detail::extract_base_units<S2::type::size::value>::template apply< - typename S2::type, - from_base_units - >::type all_base_units; - /// INTERNAL ONLY - typedef typename detail::make_homogeneous_system<all_base_units>::type system; - typedef typename detail::conversion_impl<S1::type::size::value>::template apply< - typename S1::type, - system - > conversion1; - typedef typename detail::conversion_impl<S2::type::size::value>::template apply< - typename S2::type, - system - > conversion2; - typedef eval_scale_list<typename mpl::divides<typename S1::scale, typename S2::scale>::type> scale; - typedef typename multiply_typeof_helper< - typename conversion1::type, - typename divide_typeof_helper<typename scale::type, typename conversion2::type>::type - >::type type; - static BOOST_CONSTEXPR type value() - { - return(conversion1::value() * (scale::value() / conversion2::value())); - } -}; - -} // namespace detail - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CONVERSION_IMPL_HPP diff --git a/contrib/restricted/boost/boost/units/detail/dim_impl.hpp b/contrib/restricted/boost/boost/units/detail/dim_impl.hpp deleted file mode 100644 index 85792b8acb..0000000000 --- a/contrib/restricted/boost/boost/units/detail/dim_impl.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// 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 diff --git a/contrib/restricted/boost/boost/units/detail/dimension_impl.hpp b/contrib/restricted/boost/boost/units/detail/dimension_impl.hpp deleted file mode 100644 index dbe77afef7..0000000000 --- a/contrib/restricted/boost/boost/units/detail/dimension_impl.hpp +++ /dev/null @@ -1,347 +0,0 @@ -// 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_DIMENSION_IMPL_HPP -#define BOOST_UNITS_DIMENSION_IMPL_HPP - -#include <boost/mpl/begin_end.hpp> -#include <boost/mpl/deref.hpp> -#include <boost/mpl/if.hpp> -#include <boost/mpl/list.hpp> -#include <boost/mpl/next.hpp> -#include <boost/mpl/size.hpp> -#include <boost/mpl/less.hpp> - -#include <boost/units/config.hpp> -#include <boost/units/dimensionless_type.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/dimension_list.hpp> -#include <boost/units/detail/push_front_if.hpp> -#include <boost/units/detail/push_front_or_add.hpp> - -/// \file -/// \brief Core class and metaprogramming utilities for compile-time dimensional analysis. - -namespace boost { - -namespace units { - -namespace detail { - -template<int N> -struct insertion_sort_dims_insert; - -template<bool is_greater> -struct insertion_sort_dims_comparison_impl; - -// have to recursively add the element to the next sequence. -template<> -struct insertion_sort_dims_comparison_impl<true> { - template<class Begin, int N, class T> - struct apply { - typedef list< - typename Begin::item, - typename insertion_sort_dims_insert<N - 1>::template apply< - typename Begin::next, - T - >::type - > type; - }; -}; - -// either prepend the current element or join it to -// the first remaining element of the sequence. -template<> -struct insertion_sort_dims_comparison_impl<false> { - template<class Begin, int N, class T> - struct apply { - typedef typename push_front_or_add<Begin, T>::type type; - }; -}; - -template<int N> -struct insertion_sort_dims_insert { - template<class Begin, class T> - struct apply { - typedef typename insertion_sort_dims_comparison_impl<mpl::less<typename Begin::item, T>::value>::template apply< - Begin, - N, - T - >::type type; - }; -}; - -template<> -struct insertion_sort_dims_insert<0> { - template<class Begin, class T> - struct apply { - typedef list<T, dimensionless_type> type; - }; -}; - -template<int N> -struct insertion_sort_dims_mpl_sequence { - template<class Begin> - struct apply { - typedef typename insertion_sort_dims_mpl_sequence<N - 1>::template apply<typename mpl::next<Begin>::type>::type next; - typedef typename insertion_sort_dims_insert<(next::size::value)>::template apply<next, typename mpl::deref<Begin>::type>::type type; - }; -}; - -template<> -struct insertion_sort_dims_mpl_sequence<0> { - template<class Begin> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<int N> -struct insertion_sort_dims_impl { - template<class Begin> - struct apply { - typedef typename insertion_sort_dims_impl<N - 1>::template apply<typename Begin::next>::type next; - typedef typename insertion_sort_dims_insert<(next::size::value)>::template apply<next, typename Begin::item>::type type; - }; -}; - -template<> -struct insertion_sort_dims_impl<0> { - template<class Begin> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<class T> -struct sort_dims -{ - typedef typename insertion_sort_dims_mpl_sequence<mpl::size<T>::value>::template apply<typename mpl::begin<T>::type>::type type; -}; - - -template<class T, class Next> -struct sort_dims<list<T, Next> > -{ - typedef typename insertion_sort_dims_impl<list<T, Next>::size::value>::template apply<list<T, Next> >::type type; -}; - -/// sorted sequences can be merged in linear time -template<bool less, bool greater> -struct merge_dimensions_func; - -template<int N1, int N2> -struct merge_dimensions_impl; - -template<> -struct merge_dimensions_func<true, false> -{ - template<typename Begin1, typename Begin2, int N1, int N2> - struct apply - { - typedef list< - typename Begin1::item, - typename merge_dimensions_impl<N1 - 1, N2>::template apply< - typename Begin1::next, - Begin2 - >::type - > type; - }; -}; - -template<> -struct merge_dimensions_func<false, true> { - template<typename Begin1, typename Begin2, int N1, int N2> - struct apply - { - typedef list< - typename Begin2::item, - typename merge_dimensions_impl<N2 - 1, N1>::template apply< - typename Begin2::next, - Begin1 - >::type - > type; - }; -}; - -template<> -struct merge_dimensions_func<false, false> { - template<typename Begin1, typename Begin2, int N1, int N2> - struct apply - { - typedef typename mpl::plus<typename Begin1::item, typename Begin2::item>::type combined; - typedef typename push_front_if<!is_empty_dim<combined>::value>::template apply< - typename merge_dimensions_impl<N1 - 1, N2 - 1>::template apply< - typename Begin1::next, - typename Begin2::next - >::type, - combined - >::type type; - }; -}; - -template<int N1, int N2> -struct merge_dimensions_impl { - template<typename Begin1, typename Begin2> - struct apply - { - typedef typename Begin1::item dim1; - typedef typename Begin2::item dim2; - - typedef typename merge_dimensions_func<(mpl::less<dim1,dim2>::value == true), - (mpl::less<dim2,dim1>::value == true)>::template apply< - Begin1, - Begin2, - N1, - N2 - >::type type; - }; -}; - -template<typename Sequence1, typename Sequence2> -struct merge_dimensions -{ - typedef typename detail::merge_dimensions_impl<Sequence1::size::value, - Sequence2::size::value>::template - apply< - Sequence1, - Sequence2 - >::type type; -}; - -template<int N> -struct iterator_to_list -{ - template<typename Begin> - struct apply - { - typedef list< - typename Begin::item, - typename iterator_to_list<N - 1>::template apply< - typename Begin::next - >::type - > type; - }; -}; - -template<> -struct iterator_to_list<0> -{ - template<typename Begin> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<int N> -struct merge_dimensions_impl<N, 0> -{ - template<typename Begin1, typename Begin2> - struct apply - { - typedef typename iterator_to_list<N>::template apply<Begin1>::type type; - }; -}; - -template<int N> -struct merge_dimensions_impl<0, N> -{ - template<typename Begin1, typename Begin2> - struct apply - { - typedef typename iterator_to_list<N>::template apply<Begin2>::type type; - }; -}; - -template<> -struct merge_dimensions_impl<0, 0> -{ - template<typename Begin1, typename Begin2> - struct apply - { - typedef dimensionless_type type; - }; -}; - -template<int N> -struct static_inverse_impl -{ - template<typename Begin> - struct apply { - typedef list< - typename mpl::negate<typename Begin::item>::type, - typename static_inverse_impl<N - 1>::template apply< - typename Begin::next - >::type - > type; - }; -}; - -template<> -struct static_inverse_impl<0> -{ - template<typename Begin> - struct apply - { - typedef dimensionless_type type; - }; -}; - -template<int N> -struct static_power_impl -{ - template<typename Begin, typename Ex> - struct apply - { - typedef list< - typename mpl::times<typename Begin::item, Ex>::type, - typename detail::static_power_impl<N - 1>::template apply<typename Begin::next, Ex>::type - > type; - }; -}; - -template<> -struct static_power_impl<0> -{ - template<typename Begin, typename Ex> - struct apply - { - typedef dimensionless_type type; - }; -}; - -template<int N> -struct static_root_impl { - template<class Begin, class Ex> - struct apply { - typedef list< - typename mpl::divides<typename Begin::item, Ex>::type, - typename detail::static_root_impl<N - 1>::template apply<typename Begin::next, Ex>::type - > type; - }; -}; - -template<> -struct static_root_impl<0> { - template<class Begin, class Ex> - struct apply - { - typedef dimensionless_type type; - }; -}; - -} // namespace detail - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_DIMENSION_IMPL_HPP diff --git a/contrib/restricted/boost/boost/units/detail/dimension_list.hpp b/contrib/restricted/boost/boost/units/detail/dimension_list.hpp deleted file mode 100644 index fc05547765..0000000000 --- a/contrib/restricted/boost/boost/units/detail/dimension_list.hpp +++ /dev/null @@ -1,133 +0,0 @@ -// 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_DIMENSION_LIST_HPP -#define BOOST_UNITS_DIMENSION_LIST_HPP - -#include <boost/mpl/next.hpp> -#include <boost/mpl/deref.hpp> -#include <boost/mpl/push_front_fwd.hpp> -#include <boost/mpl/pop_front_fwd.hpp> -#include <boost/mpl/size_fwd.hpp> -#include <boost/mpl/begin_end_fwd.hpp> -#include <boost/mpl/front_fwd.hpp> - -#include <boost/units/config.hpp> - -namespace boost { - -namespace units { - -struct dimensionless_type; - -namespace detail { - -struct dimension_list_tag { }; - -} // namespace detail - -template<class Item, class Next> -struct list -{ - typedef detail::dimension_list_tag tag; - typedef list type; - typedef Item item; - typedef Next next; - typedef typename mpl::next<typename Next::size>::type size; -}; - -} // namespace units - -namespace mpl { - -// INTERNAL ONLY -template<> -struct size_impl<units::detail::dimension_list_tag> -{ - template<class L> struct apply : public L::size { }; -}; - -// INTERNAL ONLY -template<> -struct begin_impl<units::detail::dimension_list_tag> -{ - template<class L> - struct apply - { - typedef L type; - }; -}; - -// INTERNAL ONLY -template<> -struct end_impl<units::detail::dimension_list_tag> -{ - template<class L> - struct apply - { - typedef units::dimensionless_type type; - }; -}; - -// INTERNAL ONLY -template<> -struct push_front_impl<units::detail::dimension_list_tag> -{ - template<class L, class T> - struct apply - { - typedef units::list<T, L> type; - }; -}; - -// INTERNAL ONLY -template<> -struct pop_front_impl<units::detail::dimension_list_tag> -{ - template<class L> - struct apply - { - typedef typename L::next type; - }; -}; - -// INTERNAL ONLY -template<> -struct front_impl<units::detail::dimension_list_tag> -{ - template<class L> - struct apply - { - typedef typename L::item type; - }; -}; - -// INTERNAL ONLY -template<class Item, class Next> -struct deref<units::list<Item, Next> > -{ - typedef Item type; -}; - -} // namespace mpl - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::list, 2) - -#endif - -#include <boost/units/dimensionless_type.hpp> - -#endif // BOOST_UNITS_DIMENSION_LIST_HPP diff --git a/contrib/restricted/boost/boost/units/detail/dimensionless_unit.hpp b/contrib/restricted/boost/boost/units/detail/dimensionless_unit.hpp deleted file mode 100644 index 291bec43ba..0000000000 --- a/contrib/restricted/boost/boost/units/detail/dimensionless_unit.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// 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) 2007-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_DETAIL_DIMENSIONLESS_UNIT_HPP -#define BOOST_UNITS_DETAIL_DIMENSIONLESS_UNIT_HPP - -#include <boost/mpl/bool.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { -namespace units { - -template<class T> -struct heterogeneous_system; - -template<class T> -struct homogeneous_system; - -template<class T1, class T2, class Scale> -struct heterogeneous_system_impl; - -typedef boost::units::heterogeneous_system< - boost::units::heterogeneous_system_impl< - boost::units::dimensionless_type, - boost::units::dimensionless_type, - boost::units::dimensionless_type - > -> heterogeneous_dimensionless_system; - -namespace detail { - -template<class System> -struct void_if_dimensionless { - typedef int type; -}; - -template<class T> -struct void_if_dimensionless<boost::units::homogeneous_system<T> > { - typedef void type; -}; - -template<> -struct void_if_dimensionless<heterogeneous_dimensionless_system> { - typedef void type; -}; - -template<class System, class Test = void> -struct void_if_heterogeneous { - typedef void type; -}; - -template<class System> -struct void_if_heterogeneous<System, typename void_if_dimensionless<System>::type> { - typedef int type; -}; - -template<class System, class Enable=void> -struct is_dimensionless_system : mpl::false_ {}; - -template<class System> -struct is_dimensionless_system<System, typename void_if_dimensionless<System>::type> : mpl::true_ {}; - -#define BOOST_UNITS_DIMENSIONLESS_UNIT(T)\ - boost::units::unit<\ - boost::units::dimensionless_type,\ - T,\ - typename ::boost::units::detail::void_if_dimensionless<T>::type\ - > - -#define BOOST_UNITS_HETEROGENEOUS_DIMENSIONLESS_UNIT(T)\ - boost::units::unit<\ - boost::units::dimensionless_type,\ - T,\ - typename ::boost::units::detail::void_if_heterogeneous<T>::type\ - > - -} -} -} - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/heterogeneous_conversion.hpp b/contrib/restricted/boost/boost/units/detail/heterogeneous_conversion.hpp deleted file mode 100644 index bfdf9876d4..0000000000 --- a/contrib/restricted/boost/boost/units/detail/heterogeneous_conversion.hpp +++ /dev/null @@ -1,309 +0,0 @@ -// 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_DETAIL_HETEROGENEOUS_CONVERSION_HPP -#define BOOST_UNITS_DETAIL_HETEROGENEOUS_CONVERSION_HPP - -#include <boost/mpl/minus.hpp> -#include <boost/mpl/times.hpp> - -#include <boost/units/static_rational.hpp> -#include <boost/units/homogeneous_system.hpp> -#include <boost/units/detail/linear_algebra.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -struct solve_end { - template<class Begin, class Y> - struct apply { - typedef dimensionless_type type; - }; -}; - -struct no_solution {}; - -template<class X1, class X2, class Next> -struct solve_normal { - template<class Begin, class Y> - struct apply { - typedef typename Begin::next next; - typedef list< - typename mpl::minus< - typename mpl::times<X1, Y>::type, - typename mpl::times<X2, typename Begin::item>::type - >::type, - typename Next::template apply<next, Y>::type - > type; - }; -}; - -template<class Next> -struct solve_leading_zeroes { - template<class Begin> - struct apply { - typedef list< - typename Begin::item, - typename Next::template apply<typename Begin::next>::type - > type; - }; - typedef solve_leading_zeroes type; -}; - -template<> -struct solve_leading_zeroes<no_solution> { - typedef no_solution type; -}; - -template<class Next> -struct solve_first_non_zero { - template<class Begin> - struct apply { - typedef typename Next::template apply< - typename Begin::next, - typename Begin::item - >::type type; - }; -}; - -template<class Next> -struct solve_internal_zero { - template<class Begin, class Y> - struct apply { - typedef list< - typename Begin::item, - typename Next::template apply<typename Begin::next, Y>::type - > type; - }; -}; - -template<class T> -struct make_solve_list_internal_zero { - template<class Next, class X> - struct apply { - typedef solve_normal<T, X, Next> type; - }; -}; - -template<> -struct make_solve_list_internal_zero<static_rational<0> > { - template<class Next, class X> - struct apply { - typedef solve_internal_zero<Next> type; - }; -}; - -template<int N> -struct make_solve_list_normal { - template<class Begin, class X> - struct apply { - typedef typename make_solve_list_internal_zero< - typename Begin::item - >::template apply< - typename make_solve_list_normal<N-1>::template apply<typename Begin::next, X>::type, - X - >::type type; - }; -}; - -template<> -struct make_solve_list_normal<0> { - template<class Begin, class X> - struct apply { - typedef solve_end type; - }; -}; - -template<int N> -struct make_solve_list_leading_zeroes; - -template<class T> -struct make_solve_list_first_non_zero { - template<class Begin, int N> - struct apply { - typedef solve_first_non_zero< - typename make_solve_list_normal<N-1>::template apply< - typename Begin::next, - typename Begin::item - >::type - > type; - }; -}; - -template<> -struct make_solve_list_first_non_zero<static_rational<0> > { - template<class Begin, int N> - struct apply { - typedef typename solve_leading_zeroes< - typename make_solve_list_leading_zeroes<N-1>::template apply< - typename Begin::next - >::type - >::type type; - }; -}; - -template<int N> -struct make_solve_list_leading_zeroes { - template<class Begin> - struct apply { - typedef typename make_solve_list_first_non_zero<typename Begin::item>::template apply<Begin, N>::type type; - }; -}; - -template<> -struct make_solve_list_leading_zeroes<0> { - template<class Begin> - struct apply { - typedef no_solution type; - }; -}; - -template<int N> -struct try_add_unit_impl { - template<class Begin, class L> - struct apply { - typedef typename try_add_unit_impl<N-1>::template apply<typename Begin::next, L>::type next; - typedef typename Begin::item::template apply<next>::type type; - BOOST_STATIC_ASSERT((next::size::value - 1 == type::size::value)); - }; -}; - -template<> -struct try_add_unit_impl<0> { - template<class Begin, class L> - struct apply { - typedef L type; - }; -}; - -template<int N> -struct make_homogeneous_system_impl; - -template<class T, bool is_done> -struct make_homogeneous_system_func; - -template<class T> -struct make_homogeneous_system_func<T, false> { - template<class Begin, class Current, class Units, class Dimensions, int N> - struct apply { - typedef typename make_homogeneous_system_impl<N-1>::template apply< - typename Begin::next, - list<T, Current>, - list<typename Begin::item, Units>, - Dimensions - >::type type; - }; -}; - -template<class T> -struct make_homogeneous_system_func<T, true> { - template<class Begin, class Current, class Units, class Dimensions, int N> - struct apply { - typedef list<typename Begin::item, Units> type; - }; -}; - -template<> -struct make_homogeneous_system_func<no_solution, false> { - template<class Begin, class Current, class Units, class Dimensions, int N> - struct apply { - typedef typename make_homogeneous_system_impl<N-1>::template apply< - typename Begin::next, - Current, - Units, - Dimensions - >::type type; - }; -}; - -template<> -struct make_homogeneous_system_func<no_solution, true> { - template<class Begin, class Current, class Units, class Dimensions, int N> - struct apply { - typedef typename make_homogeneous_system_impl<N-1>::template apply< - typename Begin::next, - Current, - Units, - Dimensions - >::type type; - }; -}; - -template<int N> -struct make_homogeneous_system_impl { - template<class Begin, class Current, class Units, class Dimensions> - struct apply { - typedef typename expand_dimensions<Dimensions::size::value>::template apply< - Dimensions, - typename Begin::item::dimension_type - >::type dimensions; - typedef typename try_add_unit_impl<Current::size::value>::template apply<Current, dimensions>::type new_element; - typedef typename make_solve_list_leading_zeroes<new_element::size::value>::template apply<new_element>::type new_func; - typedef typename make_homogeneous_system_func< - new_func, - ((Current::size::value)+1) == (Dimensions::size::value) - >::template apply<Begin, Current, Units, Dimensions, N>::type type; - }; -}; - -template<> -struct make_homogeneous_system_impl<0> { - template<class Begin, class Current, class Units, class Dimensions> - struct apply { - typedef Units type; - }; -}; - -template<class Units> -struct make_homogeneous_system { - typedef typename find_base_dimensions<Units>::type base_dimensions; - typedef homogeneous_system< - typename insertion_sort< - typename make_homogeneous_system_impl< - Units::size::value - >::template apply< - Units, - dimensionless_type, - dimensionless_type, - base_dimensions - >::type - >::type - > type; -}; - -template<int N> -struct extract_base_units { - template<class Begin, class T> - struct apply { - typedef list< - typename Begin::item::tag_type, - typename extract_base_units<N-1>::template apply<typename Begin::next, T>::type - > type; - }; -}; - -template<> -struct extract_base_units<0> { - template<class Begin, class T> - struct apply { - typedef T type; - }; -}; - -} - -} - -} - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/linear_algebra.hpp b/contrib/restricted/boost/boost/units/detail/linear_algebra.hpp deleted file mode 100644 index 17ed34bd1b..0000000000 --- a/contrib/restricted/boost/boost/units/detail/linear_algebra.hpp +++ /dev/null @@ -1,1060 +0,0 @@ -// 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_DETAIL_LINEAR_ALGEBRA_HPP -#define BOOST_UNITS_DETAIL_LINEAR_ALGEBRA_HPP - -#include <boost/units/static_rational.hpp> -#include <boost/mpl/next.hpp> -#include <boost/mpl/arithmetic.hpp> -#include <boost/mpl/and.hpp> -#include <boost/mpl/assert.hpp> - -#include <boost/units/dim.hpp> -#include <boost/units/dimensionless_type.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/detail/dimension_list.hpp> -#include <boost/units/detail/sort.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -// typedef list<rational> equation; - -template<int N> -struct eliminate_from_pair_of_equations_impl; - -template<class E1, class E2> -struct eliminate_from_pair_of_equations; - -template<int N> -struct elimination_impl; - -template<bool is_zero, bool element_is_last> -struct elimination_skip_leading_zeros_impl; - -template<class Equation, class Vars> -struct substitute; - -template<int N> -struct substitute_impl; - -template<bool is_end> -struct solve_impl; - -template<class T> -struct solve; - -template<int N> -struct check_extra_equations_impl; - -template<int N> -struct normalize_units_impl; - -struct inconsistent {}; - -// generally useful utilies. - -template<int N> -struct divide_equation { - template<class Begin, class Divisor> - struct apply { - typedef list<typename mpl::divides<typename Begin::item, Divisor>::type, typename divide_equation<N - 1>::template apply<typename Begin::next, Divisor>::type> type; - }; -}; - -template<> -struct divide_equation<0> { - template<class Begin, class Divisor> - struct apply { - typedef dimensionless_type type; - }; -}; - -// eliminate_from_pair_of_equations takes a pair of -// equations and eliminates the first variable. -// -// equation eliminate_from_pair_of_equations(equation l1, equation l2) { -// rational x1 = l1.front(); -// rational x2 = l2.front(); -// return(transform(pop_front(l1), pop_front(l2), _1 * x2 - _2 * x1)); -// } - -template<int N> -struct eliminate_from_pair_of_equations_impl { - template<class Begin1, class Begin2, class X1, class X2> - struct apply { - typedef list< - typename mpl::minus< - typename mpl::times<typename Begin1::item, X2>::type, - typename mpl::times<typename Begin2::item, X1>::type - >::type, - typename eliminate_from_pair_of_equations_impl<N - 1>::template apply< - typename Begin1::next, - typename Begin2::next, - X1, - X2 - >::type - > type; - }; -}; - -template<> -struct eliminate_from_pair_of_equations_impl<0> { - template<class Begin1, class Begin2, class X1, class X2> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<class E1, class E2> -struct eliminate_from_pair_of_equations { - typedef E1 begin1; - typedef E2 begin2; - typedef typename eliminate_from_pair_of_equations_impl<(E1::size::value - 1)>::template apply< - typename begin1::next, - typename begin2::next, - typename begin1::item, - typename begin2::item - >::type type; -}; - - - -// Stage 1. Determine which dimensions should -// have dummy base units. For this purpose -// row reduce the matrix. - -template<int N> -struct make_zero_vector { - typedef list<static_rational<0>, typename make_zero_vector<N - 1>::type> type; -}; -template<> -struct make_zero_vector<0> { - typedef dimensionless_type type; -}; - -template<int Column, int TotalColumns> -struct create_row_of_identity { - typedef list<static_rational<0>, typename create_row_of_identity<Column - 1, TotalColumns - 1>::type> type; -}; -template<int TotalColumns> -struct create_row_of_identity<0, TotalColumns> { - typedef list<static_rational<1>, typename make_zero_vector<TotalColumns - 1>::type> type; -}; -template<int Column> -struct create_row_of_identity<Column, 0> { - // error -}; - -template<int RemainingRows> -struct determine_extra_equations_impl; - -template<bool first_is_zero, bool is_last> -struct determine_extra_equations_skip_zeros_impl; - -// not the last row and not zero. -template<> -struct determine_extra_equations_skip_zeros_impl<false, false> { - template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result> - struct apply { - // remove the equation being eliminated against from the set of equations. - typedef typename determine_extra_equations_impl<RemainingRows - 1>::template apply<typename RowsBegin::next, typename RowsBegin::item>::type next_equations; - // since this column was present, strip it out. - typedef Result type; - }; -}; - -// the last row but not zero. -template<> -struct determine_extra_equations_skip_zeros_impl<false, true> { - template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result> - struct apply { - // remove this equation. - typedef dimensionless_type next_equations; - // since this column was present, strip it out. - typedef Result type; - }; -}; - - -// the first columns is zero but it is not the last column. -// continue with the same loop. -template<> -struct determine_extra_equations_skip_zeros_impl<true, false> { - template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result> - struct apply { - typedef typename RowsBegin::next::item next_row; - typedef typename determine_extra_equations_skip_zeros_impl< - next_row::item::Numerator == 0, - RemainingRows == 2 // the next one will be the last. - >::template apply< - typename RowsBegin::next, - RemainingRows - 1, - CurrentColumn, - TotalColumns, - Result - > next; - typedef list<typename RowsBegin::item::next, typename next::next_equations> next_equations; - typedef typename next::type type; - }; -}; - -// all the elements in this column are zero. -template<> -struct determine_extra_equations_skip_zeros_impl<true, true> { - template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result> - struct apply { - typedef list<typename RowsBegin::item::next, dimensionless_type> next_equations; - typedef list<typename create_row_of_identity<CurrentColumn, TotalColumns>::type, Result> type; - }; -}; - -template<int RemainingRows> -struct determine_extra_equations_impl { - template<class RowsBegin, class EliminateAgainst> - struct apply { - typedef list< - typename eliminate_from_pair_of_equations<typename RowsBegin::item, EliminateAgainst>::type, - typename determine_extra_equations_impl<RemainingRows-1>::template apply<typename RowsBegin::next, EliminateAgainst>::type - > type; - }; -}; - -template<> -struct determine_extra_equations_impl<0> { - template<class RowsBegin, class EliminateAgainst> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<int RemainingColumns, bool is_done> -struct determine_extra_equations { - template<class RowsBegin, int TotalColumns, class Result> - struct apply { - typedef typename RowsBegin::item top_row; - typedef typename determine_extra_equations_skip_zeros_impl< - top_row::item::Numerator == 0, - RowsBegin::size::value == 1 - >::template apply< - RowsBegin, - RowsBegin::size::value, - TotalColumns - RemainingColumns, - TotalColumns, - Result - > column_info; - typedef typename determine_extra_equations< - RemainingColumns - 1, - column_info::next_equations::size::value == 0 - >::template apply< - typename column_info::next_equations, - TotalColumns, - typename column_info::type - >::type type; - }; -}; - -template<int RemainingColumns> -struct determine_extra_equations<RemainingColumns, true> { - template<class RowsBegin, int TotalColumns, class Result> - struct apply { - typedef typename determine_extra_equations<RemainingColumns - 1, true>::template apply< - RowsBegin, - TotalColumns, - list<typename create_row_of_identity<TotalColumns - RemainingColumns, TotalColumns>::type, Result> - >::type type; - }; -}; - -template<> -struct determine_extra_equations<0, true> { - template<class RowsBegin, int TotalColumns, class Result> - struct apply { - typedef Result type; - }; -}; - -// Stage 2 -// invert the matrix using Gauss-Jordan elimination - - -template<bool is_zero, bool is_last> -struct invert_strip_leading_zeroes; - -template<int N> -struct invert_handle_after_pivot_row; - -// When processing column N, none of the first N rows -// can be the pivot column. -template<int N> -struct invert_handle_inital_rows { - template<class RowsBegin, class IdentityBegin> - struct apply { - typedef typename invert_handle_inital_rows<N - 1>::template apply< - typename RowsBegin::next, - typename IdentityBegin::next - > next; - typedef typename RowsBegin::item current_row; - typedef typename IdentityBegin::item current_identity_row; - typedef typename next::pivot_row pivot_row; - typedef typename next::identity_pivot_row identity_pivot_row; - typedef list< - typename eliminate_from_pair_of_equations_impl<(current_row::size::value) - 1>::template apply< - typename current_row::next, - pivot_row, - typename current_row::item, - static_rational<1> - >::type, - typename next::new_matrix - > new_matrix; - typedef list< - typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply< - current_identity_row, - identity_pivot_row, - typename current_row::item, - static_rational<1> - >::type, - typename next::identity_result - > identity_result; - }; -}; - -// This handles the switch to searching for a pivot column. -// The pivot row will be propagated up in the typedefs -// pivot_row and identity_pivot_row. It is inserted here. -template<> -struct invert_handle_inital_rows<0> { - template<class RowsBegin, class IdentityBegin> - struct apply { - typedef typename RowsBegin::item current_row; - typedef typename invert_strip_leading_zeroes< - (current_row::item::Numerator == 0), - (RowsBegin::size::value == 1) - >::template apply< - RowsBegin, - IdentityBegin - > next; - // results - typedef list<typename next::pivot_row, typename next::new_matrix> new_matrix; - typedef list<typename next::identity_pivot_row, typename next::identity_result> identity_result; - typedef typename next::pivot_row pivot_row; - typedef typename next::identity_pivot_row identity_pivot_row; - }; -}; - -// The first internal element which is not zero. -template<> -struct invert_strip_leading_zeroes<false, false> { - template<class RowsBegin, class IdentityBegin> - struct apply { - typedef typename RowsBegin::item current_row; - typedef typename current_row::item current_value; - typedef typename divide_equation<(current_row::size::value - 1)>::template apply<typename current_row::next, current_value>::type new_equation; - typedef typename divide_equation<(IdentityBegin::item::size::value)>::template apply<typename IdentityBegin::item, current_value>::type transformed_identity_equation; - typedef typename invert_handle_after_pivot_row<(RowsBegin::size::value - 1)>::template apply< - typename RowsBegin::next, - typename IdentityBegin::next, - new_equation, - transformed_identity_equation - > next; - - // results - // Note that we don't add the pivot row to the - // results here, because it needs to propagated up - // to the diagonal. - typedef typename next::new_matrix new_matrix; - typedef typename next::identity_result identity_result; - typedef new_equation pivot_row; - typedef transformed_identity_equation identity_pivot_row; - }; -}; - -// The one and only non-zero element--at the end -template<> -struct invert_strip_leading_zeroes<false, true> { - template<class RowsBegin, class IdentityBegin> - struct apply { - typedef typename RowsBegin::item current_row; - typedef typename current_row::item current_value; - typedef typename divide_equation<(current_row::size::value - 1)>::template apply<typename current_row::next, current_value>::type new_equation; - typedef typename divide_equation<(IdentityBegin::item::size::value)>::template apply<typename IdentityBegin::item, current_value>::type transformed_identity_equation; - - // results - // Note that we don't add the pivot row to the - // results here, because it needs to propagated up - // to the diagonal. - typedef dimensionless_type identity_result; - typedef dimensionless_type new_matrix; - typedef new_equation pivot_row; - typedef transformed_identity_equation identity_pivot_row; - }; -}; - -// One of the initial zeroes -template<> -struct invert_strip_leading_zeroes<true, false> { - template<class RowsBegin, class IdentityBegin> - struct apply { - typedef typename RowsBegin::item current_row; - typedef typename RowsBegin::next::item next_row; - typedef typename invert_strip_leading_zeroes< - next_row::item::Numerator == 0, - RowsBegin::size::value == 2 - >::template apply< - typename RowsBegin::next, - typename IdentityBegin::next - > next; - typedef typename IdentityBegin::item current_identity_row; - // these are propagated up. - typedef typename next::pivot_row pivot_row; - typedef typename next::identity_pivot_row identity_pivot_row; - typedef list< - typename eliminate_from_pair_of_equations_impl<(current_row::size::value - 1)>::template apply< - typename current_row::next, - pivot_row, - typename current_row::item, - static_rational<1> - >::type, - typename next::new_matrix - > new_matrix; - typedef list< - typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply< - current_identity_row, - identity_pivot_row, - typename current_row::item, - static_rational<1> - >::type, - typename next::identity_result - > identity_result; - }; -}; - -// the last element, and is zero. -// Should never happen. -template<> -struct invert_strip_leading_zeroes<true, true> { -}; - -template<int N> -struct invert_handle_after_pivot_row { - template<class RowsBegin, class IdentityBegin, class MatrixPivot, class IdentityPivot> - struct apply { - typedef typename invert_handle_after_pivot_row<N - 1>::template apply< - typename RowsBegin::next, - typename IdentityBegin::next, - MatrixPivot, - IdentityPivot - > next; - typedef typename RowsBegin::item current_row; - typedef typename IdentityBegin::item current_identity_row; - typedef MatrixPivot pivot_row; - typedef IdentityPivot identity_pivot_row; - - // results - typedef list< - typename eliminate_from_pair_of_equations_impl<(current_row::size::value - 1)>::template apply< - typename current_row::next, - pivot_row, - typename current_row::item, - static_rational<1> - >::type, - typename next::new_matrix - > new_matrix; - typedef list< - typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply< - current_identity_row, - identity_pivot_row, - typename current_row::item, - static_rational<1> - >::type, - typename next::identity_result - > identity_result; - }; -}; - -template<> -struct invert_handle_after_pivot_row<0> { - template<class RowsBegin, class IdentityBegin, class MatrixPivot, class IdentityPivot> - struct apply { - typedef dimensionless_type new_matrix; - typedef dimensionless_type identity_result; - }; -}; - -template<int N> -struct invert_impl { - template<class RowsBegin, class IdentityBegin> - struct apply { - typedef typename invert_handle_inital_rows<RowsBegin::size::value - N>::template apply<RowsBegin, IdentityBegin> process_column; - typedef typename invert_impl<N - 1>::template apply< - typename process_column::new_matrix, - typename process_column::identity_result - >::type type; - }; -}; - -template<> -struct invert_impl<0> { - template<class RowsBegin, class IdentityBegin> - struct apply { - typedef IdentityBegin type; - }; -}; - -template<int N> -struct make_identity { - template<int Size> - struct apply { - typedef list<typename create_row_of_identity<Size - N, Size>::type, typename make_identity<N - 1>::template apply<Size>::type> type; - }; -}; - -template<> -struct make_identity<0> { - template<int Size> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<class Matrix> -struct make_square_and_invert { - typedef typename Matrix::item top_row; - typedef typename determine_extra_equations<(top_row::size::value), false>::template apply< - Matrix, // RowsBegin - top_row::size::value, // TotalColumns - Matrix // Result - >::type invertible; - typedef typename invert_impl<invertible::size::value>::template apply< - invertible, - typename make_identity<invertible::size::value>::template apply<invertible::size::value>::type - >::type type; -}; - - -// find_base_dimensions takes a list of -// base_units and returns a sorted list -// of all the base_dimensions they use. -// -// list<base_dimension> find_base_dimensions(list<base_unit> l) { -// set<base_dimension> dimensions; -// for_each(base_unit unit : l) { -// for_each(dim d : unit.dimension_type) { -// dimensions = insert(dimensions, d.tag_type); -// } -// } -// return(sort(dimensions, _1 > _2, front_inserter(list<base_dimension>()))); -// } - -typedef char set_no; -struct set_yes { set_no dummy[2]; }; - -template<class T> -struct wrap {}; - -struct set_end { - static set_no lookup(...); - typedef mpl::long_<0> size; -}; - -template<class T, class Next> -struct set : Next { - using Next::lookup; - static set_yes lookup(wrap<T>*); - typedef T item; - typedef Next next; - typedef typename mpl::next<typename Next::size>::type size; -}; - -template<bool has_key> -struct set_insert; - -template<> -struct set_insert<true> { - template<class Set, class T> - struct apply { - typedef Set type; - }; -}; - -template<> -struct set_insert<false> { - template<class Set, class T> - struct apply { - typedef set<T, Set> type; - }; -}; - -template<class Set, class T> -struct has_key { - BOOST_STATIC_CONSTEXPR long size = sizeof(Set::lookup((wrap<T>*)0)); - BOOST_STATIC_CONSTEXPR bool value = (size == sizeof(set_yes)); -}; - -template<int N> -struct find_base_dimensions_impl_impl { - template<class Begin, class S> - struct apply { - typedef typename find_base_dimensions_impl_impl<N-1>::template apply< - typename Begin::next, - S - >::type next; - - typedef typename set_insert< - (has_key<next, typename Begin::item::tag_type>::value) - >::template apply< - next, - typename Begin::item::tag_type - >::type type; - }; -}; - -template<> -struct find_base_dimensions_impl_impl<0> { - template<class Begin, class S> - struct apply { - typedef S type; - }; -}; - -template<int N> -struct find_base_dimensions_impl { - template<class Begin> - struct apply { - typedef typename find_base_dimensions_impl_impl<(Begin::item::dimension_type::size::value)>::template apply< - typename Begin::item::dimension_type, - typename find_base_dimensions_impl<N-1>::template apply<typename Begin::next>::type - >::type type; - }; -}; - -template<> -struct find_base_dimensions_impl<0> { - template<class Begin> - struct apply { - typedef set_end type; - }; -}; - -template<class T> -struct find_base_dimensions { - typedef typename insertion_sort< - typename find_base_dimensions_impl< - (T::size::value) - >::template apply<T>::type - >::type type; -}; - -// calculate_base_dimension_coefficients finds -// the coefficients corresponding to the first -// base_dimension in each of the dimension_lists. -// It returns two values. The first result -// is a list of the coefficients. The second -// is a list with all the incremented iterators. -// When we encounter a base_dimension that is -// missing from a dimension_list, we do not -// increment the iterator and we set the -// coefficient to zero. - -template<bool has_dimension> -struct calculate_base_dimension_coefficients_func; - -template<> -struct calculate_base_dimension_coefficients_func<true> { - template<class T> - struct apply { - typedef typename T::item::value_type type; - typedef typename T::next next; - }; -}; - -template<> -struct calculate_base_dimension_coefficients_func<false> { - template<class T> - struct apply { - typedef static_rational<0> type; - typedef T next; - }; -}; - -// begins_with_dimension returns true iff its first -// parameter is a valid iterator which yields its -// second parameter when dereferenced. - -template<class Iterator> -struct begins_with_dimension { - template<class Dim> - struct apply : - boost::is_same< - Dim, - typename Iterator::item::tag_type - > {}; -}; - -template<> -struct begins_with_dimension<dimensionless_type> { - template<class Dim> - struct apply : mpl::false_ {}; -}; - -template<int N> -struct calculate_base_dimension_coefficients_impl { - template<class BaseUnitDimensions,class Dim,class T> - struct apply { - typedef typename calculate_base_dimension_coefficients_func< - begins_with_dimension<typename BaseUnitDimensions::item>::template apply< - Dim - >::value - >::template apply< - typename BaseUnitDimensions::item - > result; - typedef typename calculate_base_dimension_coefficients_impl<N-1>::template apply< - typename BaseUnitDimensions::next, - Dim, - list<typename result::type, T> - > next_; - typedef typename next_::type type; - typedef list<typename result::next, typename next_::next> next; - }; -}; - -template<> -struct calculate_base_dimension_coefficients_impl<0> { - template<class Begin, class BaseUnitDimensions, class T> - struct apply { - typedef T type; - typedef dimensionless_type next; - }; -}; - -// add_zeroes pushs N zeroes onto the -// front of a list. -// -// list<rational> add_zeroes(list<rational> l, int N) { -// if(N == 0) { -// return(l); -// } else { -// return(push_front(add_zeroes(l, N-1), 0)); -// } -// } - -template<int N> -struct add_zeroes_impl { - // If you get an error here and your base units are - // in fact linearly independent, please report it. - BOOST_MPL_ASSERT_MSG((N > 0), base_units_are_probably_not_linearly_independent, (void)); - template<class T> - struct apply { - typedef list< - static_rational<0>, - typename add_zeroes_impl<N-1>::template apply<T>::type - > type; - }; -}; - -template<> -struct add_zeroes_impl<0> { - template<class T> - struct apply { - typedef T type; - }; -}; - -// expand_dimensions finds the exponents of -// a set of dimensions in a dimension_list. -// the second parameter is assumed to be -// a superset of the base_dimensions of -// the first parameter. -// -// list<rational> expand_dimensions(dimension_list, list<base_dimension>); - -template<int N> -struct expand_dimensions { - template<class Begin, class DimensionIterator> - struct apply { - typedef typename calculate_base_dimension_coefficients_func< - begins_with_dimension<DimensionIterator>::template apply<typename Begin::item>::value - >::template apply<DimensionIterator> result; - typedef list< - typename result::type, - typename expand_dimensions<N-1>::template apply<typename Begin::next, typename result::next>::type - > type; - }; -}; - -template<> -struct expand_dimensions<0> { - template<class Begin, class DimensionIterator> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<int N> -struct create_unit_matrix { - template<class Begin, class Dimensions> - struct apply { - typedef typename create_unit_matrix<N - 1>::template apply<typename Begin::next, Dimensions>::type next; - typedef list<typename expand_dimensions<Dimensions::size::value>::template apply<Dimensions, typename Begin::item::dimension_type>::type, next> type; - }; -}; - -template<> -struct create_unit_matrix<0> { - template<class Begin, class Dimensions> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<class T> -struct normalize_units { - typedef typename find_base_dimensions<T>::type dimensions; - typedef typename create_unit_matrix<(T::size::value)>::template apply< - T, - dimensions - >::type matrix; - typedef typename make_square_and_invert<matrix>::type type; - BOOST_STATIC_CONSTEXPR long extra = (type::size::value) - (T::size::value); -}; - -// multiply_add_units computes M x V -// where M is a matrix and V is a horizontal -// vector -// -// list<rational> multiply_add_units(list<list<rational> >, list<rational>); - -template<int N> -struct multiply_add_units_impl { - template<class Begin1, class Begin2 ,class X> - struct apply { - typedef list< - typename mpl::plus< - typename mpl::times< - typename Begin2::item, - X - >::type, - typename Begin1::item - >::type, - typename multiply_add_units_impl<N-1>::template apply< - typename Begin1::next, - typename Begin2::next, - X - >::type - > type; - }; -}; - -template<> -struct multiply_add_units_impl<0> { - template<class Begin1, class Begin2 ,class X> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<int N> -struct multiply_add_units { - template<class Begin1, class Begin2> - struct apply { - typedef typename multiply_add_units_impl< - (Begin2::item::size::value) - >::template apply< - typename multiply_add_units<N-1>::template apply< - typename Begin1::next, - typename Begin2::next - >::type, - typename Begin2::item, - typename Begin1::item - >::type type; - }; -}; - -template<> -struct multiply_add_units<1> { - template<class Begin1, class Begin2> - struct apply { - typedef typename add_zeroes_impl< - (Begin2::item::size::value) - >::template apply<dimensionless_type>::type type1; - typedef typename multiply_add_units_impl< - (Begin2::item::size::value) - >::template apply< - type1, - typename Begin2::item, - typename Begin1::item - >::type type; - }; -}; - - -// strip_zeroes erases the first N elements of a list if -// they are all zero, otherwise returns inconsistent -// -// list strip_zeroes(list l, int N) { -// if(N == 0) { -// return(l); -// } else if(l.front == 0) { -// return(strip_zeroes(pop_front(l), N-1)); -// } else { -// return(inconsistent); -// } -// } - -template<int N> -struct strip_zeroes_impl; - -template<class T> -struct strip_zeroes_func { - template<class L, int N> - struct apply { - typedef inconsistent type; - }; -}; - -template<> -struct strip_zeroes_func<static_rational<0> > { - template<class L, int N> - struct apply { - typedef typename strip_zeroes_impl<N-1>::template apply<typename L::next>::type type; - }; -}; - -template<int N> -struct strip_zeroes_impl { - template<class T> - struct apply { - typedef typename strip_zeroes_func<typename T::item>::template apply<T, N>::type type; - }; -}; - -template<> -struct strip_zeroes_impl<0> { - template<class T> - struct apply { - typedef T type; - }; -}; - -// Given a list of base_units, computes the -// exponents of each base unit for a given -// dimension. -// -// list<rational> calculate_base_unit_exponents(list<base_unit> units, dimension_list dimensions); - -template<class T> -struct is_base_dimension_unit { - typedef mpl::false_ type; - typedef void base_dimension_type; -}; -template<class T> -struct is_base_dimension_unit<list<dim<T, static_rational<1> >, dimensionless_type> > { - typedef mpl::true_ type; - typedef T base_dimension_type; -}; - -template<int N> -struct is_simple_system_impl { - template<class Begin, class Prev> - struct apply { - typedef is_base_dimension_unit<typename Begin::item::dimension_type> test; - typedef mpl::and_< - typename test::type, - mpl::less<Prev, typename test::base_dimension_type>, - typename is_simple_system_impl<N-1>::template apply< - typename Begin::next, - typename test::base_dimension_type - > - > type; - BOOST_STATIC_CONSTEXPR bool value = (type::value); - }; -}; - -template<> -struct is_simple_system_impl<0> { - template<class Begin, class Prev> - struct apply : mpl::true_ { - }; -}; - -template<class T> -struct is_simple_system { - typedef T Begin; - typedef is_base_dimension_unit<typename Begin::item::dimension_type> test; - typedef typename mpl::and_< - typename test::type, - typename is_simple_system_impl< - T::size::value - 1 - >::template apply< - typename Begin::next::type, - typename test::base_dimension_type - > - >::type type; - BOOST_STATIC_CONSTEXPR bool value = type::value; -}; - -template<bool> -struct calculate_base_unit_exponents_impl; - -template<> -struct calculate_base_unit_exponents_impl<true> { - template<class T, class Dimensions> - struct apply { - typedef typename expand_dimensions<(T::size::value)>::template apply< - typename find_base_dimensions<T>::type, - Dimensions - >::type type; - }; -}; - -template<> -struct calculate_base_unit_exponents_impl<false> { - template<class T, class Dimensions> - struct apply { - // find the units that correspond to each base dimension - typedef normalize_units<T> base_solutions; - // pad the dimension with zeroes so it can just be a - // list of numbers, making the multiplication easy - // e.g. if the arguments are list<pound, foot> and - // list<mass,time^-2> then this step will - // yield list<0,1,-2> - typedef typename expand_dimensions<(base_solutions::dimensions::size::value)>::template apply< - typename base_solutions::dimensions, - Dimensions - >::type dimensions; - // take the unit corresponding to each base unit - // multiply each of its exponents by the exponent - // of the base_dimension in the result and sum. - typedef typename multiply_add_units<dimensions::size::value>::template apply< - dimensions, - typename base_solutions::type - >::type units; - // Now, verify that the dummy units really - // cancel out and remove them. - typedef typename strip_zeroes_impl<base_solutions::extra>::template apply<units>::type type; - }; -}; - -template<class T, class Dimensions> -struct calculate_base_unit_exponents { - typedef typename calculate_base_unit_exponents_impl<is_simple_system<T>::value>::template apply<T, Dimensions>::type type; -}; - -} // namespace detail - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/one.hpp b/contrib/restricted/boost/boost/units/detail/one.hpp deleted file mode 100644 index 1643e6a662..0000000000 --- a/contrib/restricted/boost/boost/units/detail/one.hpp +++ /dev/null @@ -1,117 +0,0 @@ -// 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_DETAIL_ONE_HPP -#define BOOST_UNITS_DETAIL_ONE_HPP - -#include <boost/units/operators.hpp> - -namespace boost { - -namespace units { - -struct one { BOOST_CONSTEXPR one() {} }; - -// workaround for pathscale. -inline BOOST_CONSTEXPR one make_one() { - return(one()); -} - -template<class T> -struct multiply_typeof_helper<one, T> -{ - typedef T type; -}; - -template<class T> -struct multiply_typeof_helper<T, one> -{ - typedef T type; -}; - -template<> -struct multiply_typeof_helper<one, one> -{ - typedef one type; -}; - -template<class T> -inline BOOST_CONSTEXPR T operator*(const one&, const T& t) -{ - return(t); -} - -template<class T> -inline BOOST_CONSTEXPR T operator*(const T& t, const one&) -{ - return(t); -} - -inline BOOST_CONSTEXPR one operator*(const one&, const one&) -{ - return(one()); -} - -template<class T> -struct divide_typeof_helper<T, one> -{ - typedef T type; -}; - -template<class T> -struct divide_typeof_helper<one, T> -{ - typedef T type; -}; - -template<> -struct divide_typeof_helper<one, one> -{ - typedef one type; -}; - -template<class T> -inline BOOST_CONSTEXPR T operator/(const T& t, const one&) -{ - return(t); -} - -template<class T> -inline BOOST_CONSTEXPR T operator/(const one&, const T& t) -{ - return(1/t); -} - -inline BOOST_CONSTEXPR one operator/(const one&, const one&) -{ - return(one()); -} - -template<class T> -inline BOOST_CONSTEXPR bool operator>(const boost::units::one&, const T& t) { - return(1 > t); -} - -template<class T> -BOOST_CONSTEXPR T one_to_double(const T& t) { return t; } - -inline BOOST_CONSTEXPR double one_to_double(const one&) { return 1.0; } - -template<class T> -struct one_to_double_type { typedef T type; }; - -template<> -struct one_to_double_type<one> { typedef double type; }; - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/ordinal.hpp b/contrib/restricted/boost/boost/units/detail/ordinal.hpp deleted file mode 100644 index eaf5bde316..0000000000 --- a/contrib/restricted/boost/boost/units/detail/ordinal.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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) 2007-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_DETAIL_ORDINAL_HPP_INCLUDED -#define BOOST_UNITS_DETAIL_ORDINAL_HPP_INCLUDED - -#include <boost/mpl/less.hpp> -#include <boost/mpl/bool.hpp> - -namespace boost { -namespace units { - -namespace detail { - -struct ordinal_tag {}; - -} - -template<int N> -struct ordinal { - typedef detail::ordinal_tag tag; - BOOST_STATIC_CONSTEXPR long value = N; -}; - -template<int N> -BOOST_CONSTEXPR_OR_CONST long ordinal<N>::value; - -} - -namespace mpl { - -template<> -struct less_impl<units::detail::ordinal_tag, units::detail::ordinal_tag> { - template<class T1, class T2> - struct apply : bool_<(T1::value) < (T2::value)> {}; -}; - -} - -} - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/prevent_redefinition.hpp b/contrib/restricted/boost/boost/units/detail/prevent_redefinition.hpp deleted file mode 100644 index 1f23575370..0000000000 --- a/contrib/restricted/boost/boost/units/detail/prevent_redefinition.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// 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) 2007-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_DETAIL_PREVENT_REDEFINITION_HPP -#define BOOST_UNITS_DETAIL_PREVENT_REDEFINITION_HPP - -#include <boost/mpl/long.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -struct no { BOOST_CONSTEXPR no() : dummy() {} char dummy; }; -struct yes { no dummy[2]; }; - -template<bool> struct ordinal_has_already_been_defined; - -template<> -struct ordinal_has_already_been_defined<true> { }; - -template<> -struct ordinal_has_already_been_defined<false> { typedef void type; }; - -} - -/// This must be in namespace boost::units so that ADL -/// will work. we need a mangled name because it must -/// be found by ADL -/// INTERNAL ONLY -template<class T> -BOOST_CONSTEXPR -detail::no -boost_units_is_registered(const T&) -{ return(detail::no()); } - -/// INTERNAL ONLY -template<class T> -BOOST_CONSTEXPR -detail::no -boost_units_unit_is_registered(const T&) -{ return(detail::no()); } - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_PREVENT_ORDINAL_REDEFINITION_IMPL_HPP diff --git a/contrib/restricted/boost/boost/units/detail/push_front_if.hpp b/contrib/restricted/boost/boost/units/detail/push_front_if.hpp deleted file mode 100644 index b924a24c6b..0000000000 --- a/contrib/restricted/boost/boost/units/detail/push_front_if.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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_DETAIL_PUSH_FRONT_IF_HPP -#define BOOST_UNITS_DETAIL_PUSH_FRONT_IF_HPP - -namespace boost { - -namespace units { - -template<class T, class Next> -struct list; - -namespace detail { - -template<bool> -struct push_front_if; - -template<> -struct push_front_if<true> { - template<class L, class T> - struct apply { - typedef list<T, L> type; - }; -}; - -template<> -struct push_front_if<false> { - template<class L, class T> - struct apply { - typedef L type; - }; -}; - -} - -} - -} - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/push_front_or_add.hpp b/contrib/restricted/boost/boost/units/detail/push_front_or_add.hpp deleted file mode 100644 index a3092da766..0000000000 --- a/contrib/restricted/boost/boost/units/detail/push_front_or_add.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// 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_DETAIL_PUSH_FRONT_OR_ADD_HPP -#define BOOST_UNITS_DETAIL_PUSH_FRONT_OR_ADD_HPP - -#include <boost/mpl/plus.hpp> -#include <boost/mpl/front.hpp> -#include <boost/mpl/push_front.hpp> -#include <boost/mpl/pop_front.hpp> -#include <boost/type_traits/is_same.hpp> - -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/push_front_if.hpp> - -namespace boost { - -namespace units { - -template<class Item, class Next> -struct list; - -namespace detail { - -template<class T> -struct is_empty_dim; - -/// add an instantiation of dim to Sequence. -template<bool> -struct push_front_or_add_impl; - -template<> -struct push_front_or_add_impl<true> -{ - template<typename Sequence, typename T> - struct apply - { - typedef typename mpl::plus<T, typename Sequence::item>::type item; - typedef typename push_front_if<!is_empty_dim<item>::value>::template apply< - typename Sequence::next, - item - > type; - }; -}; - -template<> -struct push_front_or_add_impl<false> -{ - template<typename Sequence, typename T> - struct apply - { - typedef list<T, Sequence> type; - }; -}; - -template<typename Sequence, typename T> -struct push_front_or_add -{ - typedef typename push_front_or_add_impl<boost::is_same<typename T::tag_type, typename Sequence::item::tag_type>::value>::template apply< - Sequence, - T - >::type type; -}; - -template<typename T> -struct push_front_or_add<dimensionless_type, T> -{ - typedef list<T, dimensionless_type> type; -}; - -} // namespace detail - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/sort.hpp b/contrib/restricted/boost/boost/units/detail/sort.hpp deleted file mode 100644 index 389adfe6ec..0000000000 --- a/contrib/restricted/boost/boost/units/detail/sort.hpp +++ /dev/null @@ -1,109 +0,0 @@ -// 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_DETAIL_SORT_HPP -#define BOOST_UNITS_DETAIL_SORT_HPP - -#include <boost/mpl/size.hpp> -#include <boost/mpl/begin.hpp> -#include <boost/mpl/next.hpp> -#include <boost/mpl/deref.hpp> -#include <boost/mpl/push_front.hpp> -#include <boost/mpl/less.hpp> - -#include <boost/units/dimensionless_type.hpp> -#include <boost/units/detail/dimension_list.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -template<int N> -struct insertion_sort_insert; - -template<bool is_greater> -struct insertion_sort_comparison_impl; - -// have to recursively add the element to the next sequence. -template<> -struct insertion_sort_comparison_impl<true> { - template<class Begin, int N, class T> - struct apply { - typedef list< - typename Begin::item, - typename insertion_sort_insert<N - 1>::template apply< - typename Begin::next, - T - >::type - > type; - }; -}; - -// prepend the current element -template<> -struct insertion_sort_comparison_impl<false> { - template<class Begin, int N, class T> - struct apply { - typedef list<T, Begin> type; - }; -}; - -template<int N> -struct insertion_sort_insert { - template<class Begin, class T> - struct apply { - typedef typename insertion_sort_comparison_impl<mpl::less<typename Begin::item, T>::value>::template apply< - Begin, - N, - T - >::type type; - }; -}; - -template<> -struct insertion_sort_insert<0> { - template<class Begin, class T> - struct apply { - typedef list<T, dimensionless_type> type; - }; -}; - -template<int N> -struct insertion_sort_impl { - template<class Begin> - struct apply { - typedef typename insertion_sort_impl<N - 1>::template apply<typename Begin::next>::type next; - typedef typename insertion_sort_insert<(next::size::value)>::template apply<next, typename Begin::item>::type type; - }; -}; - -template<> -struct insertion_sort_impl<0> { - template<class Begin> - struct apply { - typedef dimensionless_type type; - }; -}; - -template<class T> -struct insertion_sort -{ - typedef typename insertion_sort_impl<T::size::value>::template apply<T>::type type; -}; - -} // namespace detail - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/static_rational_power.hpp b/contrib/restricted/boost/boost/units/detail/static_rational_power.hpp deleted file mode 100644 index e8e62c757a..0000000000 --- a/contrib/restricted/boost/boost/units/detail/static_rational_power.hpp +++ /dev/null @@ -1,201 +0,0 @@ -// 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) 2007-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_DETAIL_STATIC_RATIONAL_POWER_HPP -#define BOOST_UNITS_DETAIL_STATIC_RATIONAL_POWER_HPP - -#include <boost/config/no_tr1/cmath.hpp> - -#include <boost/units/detail/one.hpp> -#include <boost/units/operators.hpp> - -namespace boost { - -namespace units { - -template<long N,long D> -class static_rational; - -namespace detail { - -namespace typeof_pow_adl_barrier { - -using std::pow; - -template<class Y> -struct typeof_pow -{ -#if defined(BOOST_UNITS_HAS_BOOST_TYPEOF) - BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, pow(typeof_::make<Y>(), 0.0)) - typedef typename nested::type type; -#elif defined(BOOST_UNITS_HAS_MWERKS_TYPEOF) - typedef __typeof__(pow(typeof_::make<Y>(), 0.0)) type; -#elif defined(BOOST_UNITS_HAS_GNU_TYPEOF) - typedef typeof(pow(typeof_::make<Y>(), 0.0)) type; -#else - typedef Y type; -#endif -}; - -} - -template<class R, class Y> -struct static_rational_power_impl -{ - typedef typename typeof_pow_adl_barrier::typeof_pow<Y>::type type; - static BOOST_CONSTEXPR type call(const Y& y) - { - using std::pow; - return(pow(y, static_cast<double>(R::Numerator) / static_cast<double>(R::Denominator))); - } -}; - -template<class R> -struct static_rational_power_impl<R, one> -{ - typedef one type; - static BOOST_CONSTEXPR one call(const one&) - { - return(one()); - } -}; - -template<long N> -struct static_rational_power_impl<static_rational<N, 1>, one> -{ - typedef one type; - static BOOST_CONSTEXPR one call(const one&) - { - return(one()); - } -}; - -template<long N, bool = (N % 2 == 0)> -struct static_int_power_impl; - -template<long N> -struct static_int_power_impl<N, true> -{ - template<class Y, class R> - struct apply - { - typedef typename multiply_typeof_helper<Y, Y>::type square_type; - typedef typename static_int_power_impl<(N >> 1)>::template apply<square_type, R> next; - typedef typename next::type type; - static BOOST_CONSTEXPR type call(const Y& y, const R& r) - { - return(next::call(static_cast<square_type>(y * y), r)); - } - }; -}; - -template<long N> -struct static_int_power_impl<N, false> -{ - template<class Y, class R> - struct apply - { - typedef typename multiply_typeof_helper<Y, Y>::type square_type; - typedef typename multiply_typeof_helper<Y, R>::type new_r; - typedef typename static_int_power_impl<(N >> 1)>::template apply<square_type, new_r> next; - typedef typename next::type type; - static BOOST_CONSTEXPR type call(const Y& y, const R& r) - { - return(next::call(static_cast<Y>(y * y), y * r)); - } - }; -}; - -template<> -struct static_int_power_impl<1, false> -{ - template<class Y, class R> - struct apply - { - typedef typename multiply_typeof_helper<Y, R>::type type; - static BOOST_CONSTEXPR type call(const Y& y, const R& r) - { - return(y * r); - } - }; -}; - -template<> -struct static_int_power_impl<0, true> -{ - template<class Y, class R> - struct apply - { - typedef R type; - static BOOST_CONSTEXPR R call(const Y&, const R& r) - { - return(r); - } - }; -}; - -template<int N, bool = (N < 0)> -struct static_int_power_sign_impl; - -template<int N> -struct static_int_power_sign_impl<N, false> -{ - template<class Y> - struct apply - { - typedef typename static_int_power_impl<N>::template apply<Y, one> impl; - typedef typename impl::type type; - static BOOST_CONSTEXPR type call(const Y& y) - { - return(impl::call(y, one())); - } - }; -}; - -template<int N> -struct static_int_power_sign_impl<N, true> -{ - template<class Y> - struct apply - { - typedef typename static_int_power_impl<-N>::template apply<Y, one> impl; - typedef typename divide_typeof_helper<one, typename impl::type>::type type; - static BOOST_CONSTEXPR type call(const Y& y) - { - return(one()/impl::call(y, one())); - } - }; -}; - -template<long N, class Y> -struct static_rational_power_impl<static_rational<N, 1>, Y> -{ - typedef typename static_int_power_sign_impl<N>::template apply<Y> impl; - typedef typename impl::type type; - static BOOST_CONSTEXPR type call(const Y& y) - { - return(impl::call(y)); - } -}; - -template<class R, class Y> -BOOST_CONSTEXPR -typename detail::static_rational_power_impl<R, Y>::type static_rational_power(const Y& y) -{ - return(detail::static_rational_power_impl<R, Y>::call(y)); -} - -} // namespace detail - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/unscale.hpp b/contrib/restricted/boost/boost/units/detail/unscale.hpp deleted file mode 100644 index e221756b11..0000000000 --- a/contrib/restricted/boost/boost/units/detail/unscale.hpp +++ /dev/null @@ -1,249 +0,0 @@ -// 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) 2007-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_DETAIL_UNSCALE_HPP_INCLUDED -#define BOOST_UNITS_DETAIL_UNSCALE_HPP_INCLUDED - -#include <string> - -#include <boost/mpl/bool.hpp> -#include <boost/mpl/size.hpp> -#include <boost/mpl/begin.hpp> -#include <boost/mpl/next.hpp> -#include <boost/mpl/deref.hpp> -#include <boost/mpl/plus.hpp> -#include <boost/mpl/times.hpp> -#include <boost/mpl/negate.hpp> -#include <boost/mpl/less.hpp> - -#include <boost/units/config.hpp> -#include <boost/units/dimension.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/one.hpp> - -namespace boost { - -namespace units { - -template<class T> -struct heterogeneous_system; - -template<class T, class D, class Scale> -struct heterogeneous_system_impl; - -template<class T, class E> -struct heterogeneous_system_dim; - -template<class S, class Scale> -struct scaled_base_unit; - -/// removes all scaling from a unit or a base unit. -template<class T> -struct unscale -{ -#ifndef BOOST_UNITS_DOXYGEN - typedef T type; -#else - typedef detail::unspecified type; -#endif -}; - -/// INTERNAL ONLY -template<class S, class Scale> -struct unscale<scaled_base_unit<S, Scale> > -{ - typedef typename unscale<S>::type type; -}; - -/// INTERNAL ONLY -template<class D, class S> -struct unscale<unit<D, S> > -{ - typedef unit<D, typename unscale<S>::type> type; -}; - -/// INTERNAL ONLY -template<class Scale> -struct scale_list_dim; - -/// INTERNAL ONLY -template<class T> -struct get_scale_list -{ - typedef dimensionless_type type; -}; - -/// INTERNAL ONLY -template<class S, class Scale> -struct get_scale_list<scaled_base_unit<S, Scale> > -{ - typedef typename mpl::times<list<scale_list_dim<Scale>, dimensionless_type>, typename get_scale_list<S>::type>::type type; -}; - -/// INTERNAL ONLY -template<class D, class S> -struct get_scale_list<unit<D, S> > -{ - typedef typename get_scale_list<S>::type type; -}; - -/// INTERNAL ONLY -struct scale_dim_tag {}; - -/// INTERNAL ONLY -template<class Scale> -struct scale_list_dim : Scale -{ - typedef scale_dim_tag tag; - typedef scale_list_dim type; -}; - -} // namespace units - -#ifndef BOOST_UNITS_DOXYGEN - -namespace mpl { - -/// INTERNAL ONLY -template<> -struct less_impl<boost::units::scale_dim_tag, boost::units::scale_dim_tag> -{ - template<class T0, class T1> - struct apply : mpl::bool_<((T0::base) < (T1::base))> {}; -}; - -} - -#endif - -namespace units { - -namespace detail { - -template<class Scale> -struct is_empty_dim<scale_list_dim<Scale> > : mpl::false_ {}; - -template<long N> -struct is_empty_dim<scale_list_dim<scale<N, static_rational<0, 1> > > > : mpl::true_ {}; - -template<int N> -struct eval_scale_list_impl -{ - template<class Begin> - struct apply - { - typedef typename eval_scale_list_impl<N-1>::template apply<typename Begin::next> next_iteration; - typedef typename multiply_typeof_helper<typename next_iteration::type, typename Begin::item::value_type>::type type; - static BOOST_CONSTEXPR type value() - { - return(next_iteration::value() * Begin::item::value()); - } - }; -}; - -template<> -struct eval_scale_list_impl<0> -{ - template<class Begin> - struct apply - { - typedef one type; - static BOOST_CONSTEXPR one value() - { - return(one()); - } - }; -}; - -} - -/// INTERNAL ONLY -template<class T> -struct eval_scale_list : detail::eval_scale_list_impl<T::size::value>::template apply<T> {}; - -} // namespace units - -#ifndef BOOST_UNITS_DOXYGEN - -namespace mpl { - -/// INTERNAL ONLY -template<> -struct plus_impl<boost::units::scale_dim_tag, boost::units::scale_dim_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::scale_list_dim< - boost::units::scale< - (T0::base), - typename mpl::plus<typename T0::exponent, typename T1::exponent>::type - > - > type; - }; -}; - -/// INTERNAL ONLY -template<> -struct negate_impl<boost::units::scale_dim_tag> -{ - template<class T0> - struct apply - { - typedef boost::units::scale_list_dim< - boost::units::scale< - (T0::base), - typename mpl::negate<typename T0::exponent>::type - > - > type; - }; -}; - -/// INTERNAL ONLY -template<> -struct times_impl<boost::units::scale_dim_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::scale_list_dim< - boost::units::scale< - (T0::base), - typename mpl::times<typename T0::exponent, T1>::type - > - > type; - }; -}; - -/// INTERNAL ONLY -template<> -struct divides_impl<boost::units::scale_dim_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::scale_list_dim< - boost::units::scale< - (T0::base), - typename mpl::divides<typename T0::exponent, T1>::type - > - > type; - }; -}; - -} // namespace mpl - -#endif - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/detail/utility.hpp b/contrib/restricted/boost/boost/units/detail/utility.hpp deleted file mode 100644 index 1ffa3dc21a..0000000000 --- a/contrib/restricted/boost/boost/units/detail/utility.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// 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_UTILITY_HPP -#define BOOST_UNITS_UTILITY_HPP - -#include <typeinfo> -#include <string> -#include <boost/core/demangle.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -inline -std::string -demangle(const char* name) -{ - std::string demangled = core::demangle(name); - - const std::string::size_type prefix_len = sizeof("boost::units::") - 1; - std::string::size_type i = 0; - for (;;) - { - std::string::size_type pos = demangled.find("boost::units::", i, prefix_len); - if (pos == std::string::npos) - break; - - demangled.erase(pos, prefix_len); - i = pos; - } - - return demangled; -} - -} // namespace detail - -template<class L> -inline std::string simplify_typename(const L& /*source*/) -{ - return detail::demangle(typeid(L).name()); -} - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_UTILITY_HPP diff --git a/contrib/restricted/boost/boost/units/dim.hpp b/contrib/restricted/boost/boost/units/dim.hpp deleted file mode 100644 index eb2813139e..0000000000 --- a/contrib/restricted/boost/boost/units/dim.hpp +++ /dev/null @@ -1,167 +0,0 @@ -// 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) 2007-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_HPP -#define BOOST_UNITS_DIM_HPP - -#include <boost/static_assert.hpp> - -#include <boost/type_traits/is_same.hpp> - -#include <boost/mpl/arithmetic.hpp> - -#include <boost/units/config.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/detail/dim_impl.hpp> - -/// \file dim.hpp -/// \brief Handling of fundamental dimension/exponent pairs. - -namespace boost { - -namespace units { - -namespace detail { - -struct dim_tag { }; - -} - -/// \brief Dimension tag/exponent pair for a single fundamental dimension. -/// -/// \details -/// The dim class represents a single dimension tag/dimension exponent pair. -/// That is, @c dim<tag_type,value_type> is a pair where @c tag_type represents the -/// fundamental dimension being represented and @c value_type represents the -/// exponent of that fundamental dimension as a @c static_rational. @c tag_type must -/// be a derived from a specialization of @c base_dimension. -/// Specialization of the following Boost.MPL metafunctions are provided -/// -/// - @c mpl::plus for two @c dims -/// - @c mpl::minus for two @c dims -/// - @c mpl::negate for a @c dim -/// -/// These metafunctions all operate on the exponent, and require -/// that the @c dim operands have the same base dimension tag. -/// In addition, multiplication and division by @c static_rational -/// is supported. -/// -/// - @c mpl::times for a @c static_rational and a @c dim in either order -/// - @c mpl::divides for a @c static_rational and a @c dim in either order -/// -/// These metafunctions likewise operate on the exponent only. -template<typename T,typename V> -struct dim -{ - typedef dim type; - typedef detail::dim_tag tag; - typedef T tag_type; - typedef V value_type; -}; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::dim, 2) - -#endif - -#ifndef BOOST_UNITS_DOXYGEN - -namespace boost { - -namespace mpl { - -// define MPL operators acting on dim<T,V> - -template<> -struct plus_impl<boost::units::detail::dim_tag,boost::units::detail::dim_tag> -{ - template<class T0, class T1> - struct apply - { - BOOST_STATIC_ASSERT((boost::is_same<typename T0::tag_type,typename T1::tag_type>::value == true)); - typedef boost::units::dim<typename T0::tag_type, typename mpl::plus<typename T0::value_type, typename T1::value_type>::type> type; - }; -}; - -template<> -struct minus_impl<boost::units::detail::dim_tag,boost::units::detail::dim_tag> -{ - template<class T0, class T1> - struct apply - { - BOOST_STATIC_ASSERT((boost::is_same<typename T0::tag_type,typename T1::tag_type>::value == true)); - typedef boost::units::dim<typename T0::tag_type, typename mpl::minus<typename T0::value_type, typename T1::value_type>::type> type; - }; -}; - -template<> -struct times_impl<boost::units::detail::dim_tag,boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::dim<typename T0::tag_type, typename mpl::times<typename T0::value_type, T1>::type> type; - }; -}; - -template<> -struct times_impl<boost::units::detail::static_rational_tag,boost::units::detail::dim_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::dim<typename T1::tag_type, typename mpl::times<T0, typename T1::value_type>::type> type; - }; -}; - -template<> -struct divides_impl<boost::units::detail::dim_tag,boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::dim<typename T0::tag_type, typename mpl::divides<typename T0::value_type, T1>::type> type; - }; -}; - -template<> -struct divides_impl<boost::units::detail::static_rational_tag,boost::units::detail::dim_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::dim<typename T1::tag_type, typename mpl::divides<T0, typename T1::value_type>::type> type; - }; -}; - -template<> -struct negate_impl<boost::units::detail::dim_tag> -{ - template<class T0> - struct apply - { - typedef boost::units::dim<typename T0::tag_type,typename mpl::negate<typename T0::value_type>::type> type; - }; -}; - -} // namespace mpl - -} // namespace boost - -#endif - -#endif // BOOST_UNITS_DIM_HPP diff --git a/contrib/restricted/boost/boost/units/dimension.hpp b/contrib/restricted/boost/boost/units/dimension.hpp deleted file mode 100644 index 90334a17df..0000000000 --- a/contrib/restricted/boost/boost/units/dimension.hpp +++ /dev/null @@ -1,150 +0,0 @@ -// 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) 2007-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_DIMENSION_HPP -#define BOOST_UNITS_DIMENSION_HPP - -#include <boost/static_assert.hpp> - -#include <boost/type_traits/is_same.hpp> - -#include <boost/mpl/arithmetic.hpp> - -#include <boost/units/static_rational.hpp> -#include <boost/units/detail/dimension_list.hpp> -#include <boost/units/detail/dimension_impl.hpp> - -/// \file -/// \brief Core metaprogramming utilities for compile-time dimensional analysis. - -namespace boost { - -namespace units { - -/// Reduce dimension list to cardinal form. This algorithm collapses duplicate -/// base dimension tags and sorts the resulting list by the tag ordinal value. -/// Dimension lists that resolve to the same dimension are guaranteed to be -/// represented by an identical type. -/// -/// The argument should be an MPL forward sequence containing instances -/// of the @c dim template. -/// -/// The result is also an MPL forward sequence. It also supports the -/// following metafunctions to allow use as a dimension. -/// -/// - @c mpl::plus is defined only on two equal dimensions and returns the argument unchanged. -/// - @c mpl::minus is defined only for two equal dimensions and returns the argument unchanged. -/// - @c mpl::negate will return its argument unchanged. -/// - @c mpl::times is defined for any dimensions and adds corresponding exponents. -/// - @c mpl::divides is defined for any dimensions and subtracts the exponents of the -/// right had argument from the corresponding exponents of the left had argument. -/// Missing base dimension tags are assumed to have an exponent of zero. -/// - @c static_power takes a dimension and a static_rational and multiplies all -/// the exponents of the dimension by the static_rational. -/// - @c static_root takes a dimension and a static_rational and divides all -/// the exponents of the dimension by the static_rational. -template<typename Seq> -struct make_dimension_list -{ - typedef typename detail::sort_dims<Seq>::type type; -}; - -/// Raise a dimension list to a scalar power. -template<typename DL,typename Ex> -struct static_power -{ - typedef typename detail::static_power_impl<DL::size::value>::template apply< - DL, - Ex - >::type type; -}; - -/// Take a scalar root of a dimension list. -template<typename DL,typename Rt> -struct static_root -{ - typedef typename detail::static_root_impl<DL::size::value>::template apply< - DL, - Rt - >::type type; -}; - -} // namespace units - -#ifndef BOOST_UNITS_DOXYGEN - -namespace mpl { - -template<> -struct plus_impl<boost::units::detail::dimension_list_tag,boost::units::detail::dimension_list_tag> -{ - template<class T0, class T1> - struct apply - { - BOOST_STATIC_ASSERT((boost::is_same<T0,T1>::value == true)); - typedef T0 type; - }; -}; - -template<> -struct minus_impl<boost::units::detail::dimension_list_tag,boost::units::detail::dimension_list_tag> -{ - template<class T0, class T1> - struct apply - { - BOOST_STATIC_ASSERT((boost::is_same<T0,T1>::value == true)); - typedef T0 type; - }; -}; - -template<> -struct times_impl<boost::units::detail::dimension_list_tag,boost::units::detail::dimension_list_tag> -{ - template<class T0, class T1> - struct apply - { - typedef typename boost::units::detail::merge_dimensions<T0,T1>::type type; - }; -}; - -template<> -struct divides_impl<boost::units::detail::dimension_list_tag,boost::units::detail::dimension_list_tag> -{ - template<class T0, class T1> - struct apply - { - typedef typename boost::units::detail::merge_dimensions< - T0, - typename boost::units::detail::static_inverse_impl< - T1::size::value - >::template apply< - T1 - >::type - >::type type; - }; -}; - -template<> -struct negate_impl<boost::units::detail::dimension_list_tag> -{ - template<class T0> - struct apply - { - typedef T0 type; - }; -}; - -} // namespace mpl - -#endif - -} // namespace boost - -#endif // BOOST_UNITS_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/dimensionless_quantity.hpp b/contrib/restricted/boost/boost/units/dimensionless_quantity.hpp deleted file mode 100644 index 7ac6bfb97b..0000000000 --- a/contrib/restricted/boost/boost/units/dimensionless_quantity.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// 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_DIMENSIONLESS_QUANTITY_HPP -#define BOOST_UNITS_DIMENSIONLESS_QUANTITY_HPP - -/// -/// \file -/// \brief Utility class to simplify construction of dimensionless quantities. -/// - -#include <boost/units/dimensionless_unit.hpp> -#include <boost/units/quantity.hpp> - -namespace boost { - -namespace units { - -/// Utility class to simplify construction of dimensionless quantities. -template<class System,class Y> -struct dimensionless_quantity -{ - typedef quantity<typename dimensionless_unit<System>::type,Y> type; -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_DIMENSIONLESS_QUANTITY_HPP diff --git a/contrib/restricted/boost/boost/units/dimensionless_type.hpp b/contrib/restricted/boost/boost/units/dimensionless_type.hpp deleted file mode 100644 index c8dae9f7c0..0000000000 --- a/contrib/restricted/boost/boost/units/dimensionless_type.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// 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) 2007-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_DIMENSIONLESS_TYPE_HPP -#define BOOST_UNITS_DIMENSIONLESS_TYPE_HPP - -/// -/// \file -/// \brief Dimension lists in which all exponents resolve to zero reduce to @c dimensionless_type. -/// - -#include <boost/mpl/long.hpp> -#include <boost/mpl/deref.hpp> -#include <boost/mpl/arithmetic.hpp> - -#include <boost/units/config.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -struct dimension_list_tag; - -} - -/// Dimension lists in which all exponents resolve to zero reduce to @c dimensionless_type. -struct dimensionless_type -{ - typedef dimensionless_type type; - typedef detail::dimension_list_tag tag; - typedef mpl::long_<0> size; -}; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::dimensionless_type) - -#endif - -#endif // BOOST_UNITS_DIMENSIONLESS_TYPE_HPP diff --git a/contrib/restricted/boost/boost/units/dimensionless_unit.hpp b/contrib/restricted/boost/boost/units/dimensionless_unit.hpp deleted file mode 100644 index 8e6368f8a5..0000000000 --- a/contrib/restricted/boost/boost/units/dimensionless_unit.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// 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_DIMENSIONLESS_UNIT_HPP -#define BOOST_UNITS_DIMENSIONLESS_UNIT_HPP - -/// -/// \file -/// \brief Utility class to simplify construction of dimensionless units in a system. -/// - -#include <boost/units/dimensionless_type.hpp> -#include <boost/units/unit.hpp> - -namespace boost { - -namespace units { - -/// Utility class to simplify construction of dimensionless units in a system. -template<class System> -struct dimensionless_unit -{ - typedef unit<dimensionless_type,System> type; -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_DIMENSIONLESS_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/get_dimension.hpp b/contrib/restricted/boost/boost/units/get_dimension.hpp deleted file mode 100644 index c0a7ab916c..0000000000 --- a/contrib/restricted/boost/boost/units/get_dimension.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// 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_GET_DIMENSION_HPP -#define BOOST_UNITS_GET_DIMENSION_HPP - -/// -/// \file -/// \brief Get the dimension of a unit, absolute unit and quantity. -/// \details -/// - -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -template<class T> -struct get_dimension {}; - -/// Get the dimension of a unit. -template<class Dim,class System> -struct get_dimension< unit<Dim,System> > -{ - typedef Dim type; -}; - -/// Get the dimension of an absolute unit. -template<class Unit> -struct get_dimension< absolute<Unit> > -{ - typedef typename get_dimension<Unit>::type type; -}; - -/// Get the dimension of a quantity. -template<class Unit,class Y> -struct get_dimension< quantity<Unit,Y> > -{ - typedef typename get_dimension<Unit>::type type; -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_GET_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/get_system.hpp b/contrib/restricted/boost/boost/units/get_system.hpp deleted file mode 100644 index ce4e59f951..0000000000 --- a/contrib/restricted/boost/boost/units/get_system.hpp +++ /dev/null @@ -1,51 +0,0 @@ -// 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_GET_SYSTEM_HPP -#define BOOST_UNITS_GET_SYSTEM_HPP - -/// \file -/// \brief Get the system of a unit, absolute unit or quantity. - -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -template<class T> -struct get_system {}; - -/// Get the system of a unit. -template<class Dim,class System> -struct get_system< unit<Dim,System> > -{ - typedef System type; -}; - -/// Get the system of an absolute unit. -template<class Unit> -struct get_system< absolute<Unit> > -{ - typedef typename get_system<Unit>::type type; -}; - -/// Get the system of a quantity. -template<class Unit,class Y> -struct get_system< quantity<Unit,Y> > -{ - typedef typename get_system<Unit>::type type; -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_GET_SYSTEM_HPP diff --git a/contrib/restricted/boost/boost/units/heterogeneous_system.hpp b/contrib/restricted/boost/boost/units/heterogeneous_system.hpp deleted file mode 100644 index 966797aa24..0000000000 --- a/contrib/restricted/boost/boost/units/heterogeneous_system.hpp +++ /dev/null @@ -1,428 +0,0 @@ -// 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) 2007-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_HETEROGENEOUS_SYSTEM_HPP -#define BOOST_UNITS_HETEROGENEOUS_SYSTEM_HPP - -/// \file -/// \brief A heterogeneous system is a sorted list of base unit/exponent pairs. - -#include <boost/mpl/bool.hpp> -#include <boost/mpl/plus.hpp> -#include <boost/mpl/times.hpp> -#include <boost/mpl/divides.hpp> -#include <boost/mpl/negate.hpp> -#include <boost/mpl/less.hpp> -#include <boost/mpl/size.hpp> -#include <boost/mpl/begin.hpp> -#include <boost/mpl/next.hpp> -#include <boost/mpl/deref.hpp> -#include <boost/mpl/front.hpp> -#include <boost/mpl/push_front.hpp> -#include <boost/mpl/pop_front.hpp> -#include <boost/mpl/assert.hpp> -#include <boost/type_traits/is_same.hpp> - -#include <boost/units/config.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/dimension.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/push_front_if.hpp> -#include <boost/units/detail/push_front_or_add.hpp> -#include <boost/units/detail/linear_algebra.hpp> -#include <boost/units/detail/unscale.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -// A normal system is a sorted list of base units. -// A heterogeneous system is a sorted list of base unit/exponent pairs. -// As long as we don't need to convert heterogeneous systems -// directly everything is cool. - -template<class T> -struct is_zero : mpl::false_ {}; - -template<> -struct is_zero<static_rational<0> > : mpl::true_ {}; - -} // namespace detail - -/// INTERNAL ONLY -template<class L, class Dimensions, class Scale> -struct heterogeneous_system_impl -{ - typedef L type; - typedef Dimensions dimensions; - typedef Scale scale; -}; - -/// INTERNAL ONLY -typedef dimensionless_type no_scale; - -/// A system that can represent any possible combination -/// of units at the expense of not preserving information -/// about how it was created. Do not create specializations -/// of this template directly. Instead use @c reduce_unit and -/// @c base_unit<...>::unit_type. -template<class T> -struct heterogeneous_system : T {}; - -/// INTERNAL ONLY -struct heterogeneous_system_dim_tag {}; - -/// INTERNAL ONLY -template<class Unit, class Exponent> -struct heterogeneous_system_dim -{ - typedef heterogeneous_system_dim_tag tag; - typedef heterogeneous_system_dim type; - typedef Unit tag_type; - typedef Exponent value_type; -}; - -/// INTERNAL ONLY -#define BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(BaseUnit, Dimensions) \ - boost::units::unit< \ - Dimensions, \ - boost::units::heterogeneous_system< \ - boost::units::heterogeneous_system_impl< \ - boost::units::list< \ - boost::units::heterogeneous_system_dim< \ - BaseUnit, \ - boost::units::static_rational<1> \ - >, \ - boost::units::dimensionless_type \ - >, \ - Dimensions, \ - boost::units::no_scale \ - > \ - > \ - > - -} // namespace units - -} // namespace boost - - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::heterogeneous_system_impl, (class)(class)(class)) -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::heterogeneous_system, (class)) -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::heterogeneous_system_dim, (class)(class)) - -#endif - -namespace boost { - -namespace mpl { - -/// INTERNAL ONLY -template<> -struct less_impl<boost::units::heterogeneous_system_dim_tag, boost::units::heterogeneous_system_dim_tag> -{ - template<class T0, class T1> - struct apply : mpl::less<typename T0::tag_type, typename T1::tag_type> {}; -}; - -} - -namespace units { - -namespace detail { - -template<class Unit1, class Exponent1> -struct is_empty_dim<heterogeneous_system_dim<Unit1,Exponent1> > : detail::is_zero<Exponent1> {}; - -} // namespace detail - -} // namespace units - -namespace mpl { - -/// INTERNAL ONLY -template<> -struct plus_impl<boost::units::heterogeneous_system_dim_tag, boost::units::heterogeneous_system_dim_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::heterogeneous_system_dim< - typename T0::tag_type, - typename mpl::plus<typename T0::value_type,typename T1::value_type>::type - > type; - }; -}; - -/// INTERNAL ONLY -template<> -struct times_impl<boost::units::heterogeneous_system_dim_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::heterogeneous_system_dim< - typename T0::tag_type, - typename mpl::times<typename T0::value_type,T1>::type - > type; - }; -}; - -/// INTERNAL ONLY -template<> -struct divides_impl<boost::units::heterogeneous_system_dim_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply - { - typedef boost::units::heterogeneous_system_dim< - typename T0::tag_type, - typename mpl::divides<typename T0::value_type,T1>::type - > type; - }; -}; - -/// INTERNAL ONLY -template<> -struct negate_impl<boost::units::heterogeneous_system_dim_tag> -{ - template<class T> - struct apply - { - typedef boost::units::heterogeneous_system_dim<typename T::tag_type, typename mpl::negate<typename T::value_type>::type> type; - }; -}; - -} // namespace mpl - -namespace units { - -namespace detail { - -template<int N> -struct make_heterogeneous_system_impl -{ - template<class UnitsBegin, class ExponentsBegin> - struct apply - { - typedef typename push_front_if<!(is_zero<typename ExponentsBegin::item>::value)>::template apply< - typename make_heterogeneous_system_impl<N-1>::template apply< - typename UnitsBegin::next, - typename ExponentsBegin::next - >::type, - heterogeneous_system_dim<typename UnitsBegin::item, typename ExponentsBegin::item> - >::type type; - }; -}; - -template<> -struct make_heterogeneous_system_impl<0> -{ - template<class UnitsBegin, class ExponentsBegin> - struct apply - { - typedef dimensionless_type type; - }; -}; - -template<class Dimensions, class System> -struct make_heterogeneous_system -{ - typedef typename calculate_base_unit_exponents<typename System::type, Dimensions>::type exponents; - BOOST_MPL_ASSERT_MSG((!boost::is_same<exponents, inconsistent>::value), the_specified_dimension_is_not_representible_in_the_given_system, (types<Dimensions, System>)); - typedef typename make_heterogeneous_system_impl<System::type::size::value>::template apply< - typename System::type, - exponents - >::type unit_list; - typedef heterogeneous_system<heterogeneous_system_impl<unit_list, Dimensions, no_scale> > type; -}; - -template<class Dimensions, class T> -struct make_heterogeneous_system<Dimensions, heterogeneous_system<T> > -{ - typedef heterogeneous_system<T> type; -}; - -template<class T0, class T1> -struct multiply_systems -{ - typedef heterogeneous_system< - heterogeneous_system_impl< - typename mpl::times<typename T0::type, typename T1::type>::type, - typename mpl::times<typename T0::dimensions, typename T1::dimensions>::type, - typename mpl::times<typename T0::scale, typename T1::scale>::type - > - > type; -}; - -template<class T0, class T1> -struct divide_systems -{ - typedef heterogeneous_system< - heterogeneous_system_impl< - typename mpl::divides<typename T0::type, typename T1::type>::type, - typename mpl::divides<typename T0::dimensions, typename T1::dimensions>::type, - typename mpl::divides<typename T0::scale, typename T1::scale>::type - > - > type; -}; - -} // namespace detail - -/// INTERNAL ONLY -template<class S, long N, long D> -struct static_power<heterogeneous_system<S>, static_rational<N,D> > -{ - typedef heterogeneous_system< - heterogeneous_system_impl< - typename static_power<typename S::type, static_rational<N,D> >::type, - typename static_power<typename S::dimensions, static_rational<N,D> >::type, - typename static_power<typename S::scale, static_rational<N,D> >::type - > - > type; -}; - -/// INTERNAL ONLY -template<class S, long N, long D> -struct static_root<heterogeneous_system<S>, static_rational<N,D> > -{ - typedef heterogeneous_system< - heterogeneous_system_impl< - typename static_root<typename S::type, static_rational<N,D> >::type, - typename static_root<typename S::dimensions, static_rational<N,D> >::type, - typename static_root<typename S::scale, static_rational<N,D> >::type - > - > type; -}; - -namespace detail { - -template<int N> -struct unscale_heterogeneous_system_impl -{ - template<class Begin> - struct apply - { - typedef typename push_front_or_add< - typename unscale_heterogeneous_system_impl<N-1>::template apply< - typename Begin::next - >::type, - typename unscale<typename Begin::item>::type - >::type type; - }; -}; - -template<> -struct unscale_heterogeneous_system_impl<0> -{ - template<class Begin> - struct apply - { - typedef dimensionless_type type; - }; -}; - -} // namespace detail - -/// Unscale all the base units. e.g -/// km s -> m s -/// cm km -> m^2 -/// INTERNAL ONLY -template<class T> -struct unscale<heterogeneous_system<T> > -{ - typedef heterogeneous_system< - heterogeneous_system_impl< - typename detail::unscale_heterogeneous_system_impl< - T::type::size::value - >::template apply< - typename T::type - >::type, - typename T::dimensions, - no_scale - > - > type; -}; - -/// INTERNAL ONLY -template<class Unit, class Exponent> -struct unscale<heterogeneous_system_dim<Unit, Exponent> > -{ - typedef heterogeneous_system_dim<typename unscale<Unit>::type, Exponent> type; -}; - -namespace detail { - -template<int N> -struct get_scale_list_of_heterogeneous_system_impl -{ - template<class Begin> - struct apply - { - typedef typename mpl::times< - typename get_scale_list_of_heterogeneous_system_impl<N-1>::template apply< - typename Begin::next - >::type, - typename get_scale_list<typename Begin::item>::type - >::type type; - }; -}; - -template<> -struct get_scale_list_of_heterogeneous_system_impl<0> -{ - template<class Begin> - struct apply - { - typedef dimensionless_type type; - }; -}; - -} // namespace detail - -/// INTERNAL ONLY -template<class T> -struct get_scale_list<heterogeneous_system<T> > -{ - typedef typename mpl::times< - typename detail::get_scale_list_of_heterogeneous_system_impl< - T::type::size::value - >::template apply<typename T::type>::type, - typename T::scale - >::type type; -}; - -/// INTERNAL ONLY -template<class Unit, class Exponent> -struct get_scale_list<heterogeneous_system_dim<Unit, Exponent> > -{ - typedef typename static_power<typename get_scale_list<Unit>::type, Exponent>::type type; -}; - -namespace detail { - -template<class System, class Dimension> -struct check_system : mpl::false_ {}; - -template<class System, class Dimension, class Scale> -struct check_system<heterogeneous_system<heterogeneous_system_impl<System, Dimension, Scale> >, Dimension> : mpl::true_ {}; - -} // namespace detail - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/homogeneous_system.hpp b/contrib/restricted/boost/boost/units/homogeneous_system.hpp deleted file mode 100644 index aa3b056891..0000000000 --- a/contrib/restricted/boost/boost/units/homogeneous_system.hpp +++ /dev/null @@ -1,105 +0,0 @@ -// 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_HOMOGENEOUS_SYSTEM_HPP_INCLUDED -#define BOOST_UNITS_HOMOGENEOUS_SYSTEM_HPP_INCLUDED - -#include <boost/mpl/bool.hpp> - -#include <boost/units/config.hpp> -#include <boost/units/static_rational.hpp> - -#ifdef BOOST_UNITS_CHECK_HOMOGENEOUS_UNITS - -#include <boost/type_traits/is_same.hpp> -#include <boost/mpl/not.hpp> - -#include <boost/units/detail/linear_algebra.hpp> - -#endif - -namespace boost { - -namespace units { - -/// A system that can uniquely represent any unit -/// which can be composed from a linearly independent set -/// of base units. It is safe to rebind a unit with -/// such a system to different dimensions. -/// -/// Do not construct this template directly. Use -/// make_system instead. -template<class L> -struct homogeneous_system { - /// INTERNAL ONLY - typedef L type; -}; - -template<class T, class E> -struct static_power; - -template<class T, class R> -struct static_root; - -/// INTERNAL ONLY -template<class L, long N, long D> -struct static_power<homogeneous_system<L>, static_rational<N,D> > -{ - typedef homogeneous_system<L> type; -}; - -/// INTERNAL ONLY -template<class L, long N, long D> -struct static_root<homogeneous_system<L>, static_rational<N,D> > -{ - typedef homogeneous_system<L> type; -}; - -namespace detail { - -template<class System, class Dimensions> -struct check_system; - -#ifdef BOOST_UNITS_CHECK_HOMOGENEOUS_UNITS - -template<class L, class Dimensions> -struct check_system<homogeneous_system<L>, Dimensions> : - boost::mpl::not_< - boost::is_same< - typename calculate_base_unit_exponents< - L, - Dimensions - >::type, - inconsistent - > - > {}; - -#else - -template<class L, class Dimensions> -struct check_system<homogeneous_system<L>, Dimensions> : mpl::true_ {}; - -#endif - -} // namespace detail - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::homogeneous_system, (class)) - -#endif - -#endif diff --git a/contrib/restricted/boost/boost/units/io.hpp b/contrib/restricted/boost/boost/units/io.hpp deleted file mode 100644 index 346eb720af..0000000000 --- a/contrib/restricted/boost/boost/units/io.hpp +++ /dev/null @@ -1,1080 +0,0 @@ -// 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) 2007-2010 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_IO_HPP -#define BOOST_UNITS_IO_HPP - -#if defined(__GNUC__) - #pragma GCC system_header -#endif - -/// \file -/// \brief Stream input and output for rationals, units and quantities. -/// \details Functions and manipulators for output and input of units and quantities. -/// symbol and name format, and engineering and binary autoprefix. -/// Serialization output is also supported. - -#include <cassert> -#include <cmath> -#include <string> -#include <iosfwd> -#include <ios> -#include <sstream> - -#include <boost/assert.hpp> -#include <boost/serialization/nvp.hpp> - -#include <boost/units/units_fwd.hpp> -#include <boost/units/heterogeneous_system.hpp> -#include <boost/units/make_scaled_unit.hpp> -#include <boost/units/quantity.hpp> -#include <boost/units/scale.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/unit.hpp> -#include <boost/units/detail/utility.hpp> - -namespace boost { - -namespace serialization { - -/// Boost Serialization library support for units. -template<class Archive,class System,class Dim> -inline void serialize(Archive& /*ar*/,boost::units::unit<Dim,System>&,const unsigned int /*version*/) -{ } - -/// Boost Serialization library support for quantities. -template<class Archive,class Unit,class Y> -inline void serialize(Archive& ar,boost::units::quantity<Unit,Y>& q,const unsigned int /*version*/) -{ - ar & boost::serialization::make_nvp("value", units::quantity_cast<Y&>(q)); -} - -} // namespace serialization - -namespace units { - -// get string representation of arbitrary type. -template<class T> std::string to_string(const T& t) -{ - std::stringstream sstr; - - sstr << t; - - return sstr.str(); -} - -/// get string representation of integral-valued @c static_rational. -template<integer_type N> std::string to_string(const static_rational<N>&) -{ - return to_string(N); -} - -/// get string representation of @c static_rational. -template<integer_type N, integer_type D> std::string to_string(const static_rational<N,D>&) -{ - return '(' + to_string(N) + '/' + to_string(D) + ')'; -} - -/// Write @c static_rational to @c std::basic_ostream. -template<class Char, class Traits, integer_type N, integer_type D> -inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os,const static_rational<N,D>& r) -{ - os << to_string(r); - return os; -} - -/// traits template for unit names. -template<class BaseUnit> -struct base_unit_info -{ - /// INTERNAL ONLY - typedef void base_unit_info_primary_template; - /// The full name of the unit (returns BaseUnit::name() by default) - static std::string name() - { - return(BaseUnit::name()); - } - /// The symbol for the base unit (Returns BaseUnit::symbol() by default) - static std::string symbol() - { - return(BaseUnit::symbol()); /// \returns BaseUnit::symbol(), for example "m" - } -}; - -/// \enum format_mode format of output of units, for example "m" or "meter". -enum format_mode -{ - symbol_fmt = 0, /// default - reduces unit names to known symbols for both base and derived units. - name_fmt = 1, /// output full unit names for base and derived units, for example "meter". - raw_fmt = 2, /// output only symbols for base units (but not derived units), for example "m". - typename_fmt = 3, /// output demangled typenames (useful only for diagnosis). - fmt_mask = 3 /// Bits used for format. -}; - -/// \enum autoprefix_mode automatic scaling and prefix (controlled by value of quantity) a, if any, -enum autoprefix_mode -{ - autoprefix_none = 0, /// No automatic prefix. - autoprefix_engineering = 4, /// Scale and prefix with 10^3 multiples, 1234.5 m output as 1.2345 km. - autoprefix_binary = 8, /// Scale and prefix with 2^10 (1024) multiples, 1024 as 1 kb. - autoprefix_mask = 12 /// Bits used for autoprefix. -}; - -namespace detail { - -template<bool> -struct xalloc_key_holder -{ - static int value; - static bool initialized; -}; - -template<bool b> -int xalloc_key_holder<b>::value = 0; - -template<bool b> -bool xalloc_key_holder<b>::initialized = 0; - -struct xalloc_key_initializer_t -{ - xalloc_key_initializer_t() - { - if (!xalloc_key_holder<true>::initialized) - { - xalloc_key_holder<true>::value = std::ios_base::xalloc(); - xalloc_key_holder<true>::initialized = true; - } - } -}; - -namespace /**/ { - -xalloc_key_initializer_t xalloc_key_initializer; - -} // namespace - -} // namespace detail - -/// returns flags controlling output. -inline long get_flags(std::ios_base& ios, long mask) -{ - return(ios.iword(detail::xalloc_key_holder<true>::value) & mask); -} - -/// Set new flags controlling output format. -inline void set_flags(std::ios_base& ios, long new_flags, long mask) -{ - BOOST_ASSERT((~mask & new_flags) == 0); - long& flags = ios.iword(detail::xalloc_key_holder<true>::value); - flags = (flags & ~mask) | new_flags; -} - -/// returns flags controlling output format. -inline format_mode get_format(std::ios_base& ios) -{ - return(static_cast<format_mode>((get_flags)(ios, fmt_mask))); -} - -/// Set new flags controlling output format. -inline void set_format(std::ios_base& ios, format_mode new_mode) -{ - (set_flags)(ios, new_mode, fmt_mask); -} - -/// Set new flags for type_name output format. -inline std::ios_base& typename_format(std::ios_base& ios) -{ - (set_format)(ios, typename_fmt); - return(ios); -} - -/// set new flag for raw format output, for example "m". -inline std::ios_base& raw_format(std::ios_base& ios) -{ - (set_format)(ios, raw_fmt); - return(ios); -} - -/// set new format flag for symbol output, for example "m". -inline std::ios_base& symbol_format(std::ios_base& ios) -{ - (set_format)(ios, symbol_fmt); - return(ios); -} - -/// set new format for name output, for example "meter". -inline std::ios_base& name_format(std::ios_base& ios) -{ - (set_format)(ios, name_fmt); - return(ios); -} - -/// get autoprefix flags for output. -inline autoprefix_mode get_autoprefix(std::ios_base& ios) -{ - return static_cast<autoprefix_mode>((get_flags)(ios, autoprefix_mask)); -} - -/// Get format for output. -inline void set_autoprefix(std::ios_base& ios, autoprefix_mode new_mode) -{ - (set_flags)(ios, new_mode, autoprefix_mask); -} - -/// Clear autoprefix flags. -inline std::ios_base& no_prefix(std::ios_base& ios) -{ - (set_autoprefix)(ios, autoprefix_none); - return ios; -} - -/// Set flag for engineering prefix, so 1234.5 m displays as "1.2345 km". -inline std::ios_base& engineering_prefix(std::ios_base& ios) -{ - (set_autoprefix)(ios, autoprefix_engineering); - return ios; -} - -/// Set flag for binary prefix, so 1024 byte displays as "1 Kib". -inline std::ios_base& binary_prefix(std::ios_base& ios) -{ - (set_autoprefix)(ios, autoprefix_binary); - return ios; -} - -namespace detail { - -/// \return exponent string like "^1/2". -template<integer_type N, integer_type D> -inline std::string exponent_string(const static_rational<N,D>& r) -{ - return '^' + to_string(r); -} - -/// \return empty exponent string for integer rational like 2. -template<> -inline std::string exponent_string(const static_rational<1>&) -{ - return ""; -} - -template<class T> -inline std::string base_unit_symbol_string(const T&) -{ - return base_unit_info<typename T::tag_type>::symbol() + exponent_string(typename T::value_type()); -} - -template<class T> -inline std::string base_unit_name_string(const T&) -{ - return base_unit_info<typename T::tag_type>::name() + exponent_string(typename T::value_type()); -} - -// stringify with symbols. -template<int N> -struct symbol_string_impl -{ - template<class Begin> - struct apply - { - typedef typename symbol_string_impl<N-1>::template apply<typename Begin::next> next; - static void value(std::string& str) - { - str += base_unit_symbol_string(typename Begin::item()) + ' '; - next::value(str); - } - }; -}; - -template<> -struct symbol_string_impl<1> -{ - template<class Begin> - struct apply - { - static void value(std::string& str) - { - str += base_unit_symbol_string(typename Begin::item()); - } - }; -}; - -template<> -struct symbol_string_impl<0> -{ - template<class Begin> - struct apply - { - static void value(std::string& str) - { - // better shorthand for dimensionless? - str += "dimensionless"; - } - }; -}; - -template<int N> -struct scale_symbol_string_impl -{ - template<class Begin> - struct apply - { - static void value(std::string& str) - { - str += Begin::item::symbol(); - scale_symbol_string_impl<N - 1>::template apply<typename Begin::next>::value(str); - } - }; -}; - -template<> -struct scale_symbol_string_impl<0> -{ - template<class Begin> - struct apply - { - static void value(std::string&) { } - }; -}; - -// stringify with names. -template<int N> -struct name_string_impl -{ - template<class Begin> - struct apply - { - typedef typename name_string_impl<N-1>::template apply<typename Begin::next> next; - static void value(std::string& str) - { - str += base_unit_name_string(typename Begin::item()) + ' '; - next::value(str); - } - }; -}; - -template<> -struct name_string_impl<1> -{ - template<class Begin> - struct apply - { - static void value(std::string& str) - { - str += base_unit_name_string(typename Begin::item()); - } - }; -}; - -template<> -struct name_string_impl<0> -{ - template<class Begin> - struct apply - { - static void value(std::string& str) - { - str += "dimensionless"; - } - }; -}; - -template<int N> -struct scale_name_string_impl -{ - template<class Begin> - struct apply - { - static void value(std::string& str) - { - str += Begin::item::name(); - scale_name_string_impl<N - 1>::template apply<typename Begin::next>::value(str); - } - }; -}; - -template<> -struct scale_name_string_impl<0> -{ - template<class Begin> - struct apply - { - static void value(std::string&) { } - }; -}; - -} // namespace detail - -namespace detail { - -// These two overloads of symbol_string and name_string will -// will pick up homogeneous_systems. They simply call the -// appropriate function with a heterogeneous_system. -template<class Dimension,class System, class SubFormatter> -inline std::string -to_string_impl(const unit<Dimension,System>&, SubFormatter f) -{ - return f(typename reduce_unit<unit<Dimension, System> >::type()); -} - -/// INTERNAL ONLY -// this overload picks up heterogeneous units that are not scaled. -template<class Dimension,class Units, class Subformatter> -inline std::string -to_string_impl(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >&, Subformatter f) -{ - std::string str; - f.template append_units_to<Units>(str); - return(str); -} - -// This overload is a special case for heterogeneous_system which -// is really unitless -/// INTERNAL ONLY -template<class Subformatter> -inline std::string -to_string_impl(const unit<dimensionless_type, heterogeneous_system<heterogeneous_system_impl<dimensionless_type, dimensionless_type, dimensionless_type> > >&, Subformatter) -{ - return("dimensionless"); -} - -// this overload deals with heterogeneous_systems which are unitless -// but scaled. -/// INTERNAL ONLY -template<class Scale, class Subformatter> -inline std::string -to_string_impl(const unit<dimensionless_type, heterogeneous_system<heterogeneous_system_impl<dimensionless_type, dimensionless_type, Scale> > >&, Subformatter f) -{ - std::string str; - f.template append_scale_to<Scale>(str); - return(str); -} - -// this overload deals with scaled units. -/// INTERNAL ONLY -template<class Dimension,class Units,class Scale, class Subformatter> -inline std::string -to_string_impl(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, Scale> > >&, Subformatter f) -{ - std::string str; - - f.template append_scale_to<Scale>(str); - - std::string without_scale = f(unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >()); - - if (f.is_default_string(without_scale, unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >())) - { - str += "("; - str += without_scale; - str += ")"; - } - else - { - str += without_scale; - } - - return(str); -} - -// This overload catches scaled units that have a single base unit -// raised to the first power. It causes si::nano * si::meters to not -// put parentheses around the meters. i.e. nm rather than n(m) -/// INTERNAL ONLY -template<class Dimension,class Unit,class Scale, class Subformatter> -inline std::string -to_string_impl(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >,dimensionless_type>, Dimension, Scale> > >&, Subformatter f) -{ - std::string str; - - f.template append_scale_to<Scale>(str); - str += f(unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >, dimensionless_type>, Dimension, dimensionless_type> > >()); - - return(str); -} - -// This overload is necessary to disambiguate. -// it catches units that are unscaled and have a single -// base unit raised to the first power. It is treated the -// same as any other unscaled unit. -/// INTERNAL ONLY -template<class Dimension,class Unit,class Subformatter> -inline std::string -to_string_impl(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >,dimensionless_type>, Dimension, dimensionless_type> > >&, Subformatter f) -{ - std::string str; - f.template append_units_to<list<heterogeneous_system_dim<Unit, static_rational<1> >,dimensionless_type> >(str); - return(str); -} - -// This overload catches scaled units that have a single scaled base unit -// raised to the first power. It moves that scaling on the base unit -// to the unit level scaling and recurses. By doing this we make sure that -// si::milli * si::kilograms will print g rather than mkg. -// -// This transformation will not be applied if base_unit_info is specialized -// for the scaled base unit. -// -/// INTERNAL ONLY -template<class Dimension,class Unit,class UnitScale, class Scale, class Subformatter> -inline std::string -to_string_impl( - const unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - list<heterogeneous_system_dim<scaled_base_unit<Unit, UnitScale>, static_rational<1> >, dimensionless_type>, - Dimension, - Scale - > - > - >&, - Subformatter f, - typename base_unit_info<scaled_base_unit<Unit, UnitScale> >::base_unit_info_primary_template* = 0) -{ - return(f( - unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - list<heterogeneous_system_dim<Unit, static_rational<1> >, dimensionless_type>, - Dimension, - typename mpl::times<Scale, list<scale_list_dim<UnitScale>, dimensionless_type> >::type - > - > - >())); -} - -// this overload disambuguates between the overload for an unscaled unit -// and the overload for a scaled base unit raised to the first power. -/// INTERNAL ONLY -template<class Dimension,class Unit,class UnitScale,class Subformatter> -inline std::string -to_string_impl( - const unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - list<heterogeneous_system_dim<scaled_base_unit<Unit, UnitScale>, static_rational<1> >, dimensionless_type>, - Dimension, - dimensionless_type - > - > - >&, - Subformatter f, - typename base_unit_info<scaled_base_unit<Unit, UnitScale> >::base_unit_info_primary_template* = 0) -{ - std::string str; - f.template append_units_to<list<heterogeneous_system_dim<scaled_base_unit<Unit, UnitScale>, static_rational<1> >, dimensionless_type> >(str); - return(str); -} - -struct format_raw_symbol_impl { - template<class Units> - void append_units_to(std::string& str) { - detail::symbol_string_impl<Units::size::value>::template apply<Units>::value(str); - } - template<class Scale> - void append_scale_to(std::string& str) { - detail::scale_symbol_string_impl<Scale::size::value>::template apply<Scale>::value(str); - } - template<class Unit> - std::string operator()(const Unit& u) { - return(to_string_impl(u, *this)); - } - template<class Unit> - bool is_default_string(const std::string&, const Unit&) { - return(true); - } -}; - -struct format_symbol_impl : format_raw_symbol_impl { - template<class Unit> - std::string operator()(const Unit& u) { - return(symbol_string(u)); - } - template<class Unit> - bool is_default_string(const std::string& str, const Unit& u) { - return(str == to_string_impl(u, format_raw_symbol_impl())); - } -}; - -struct format_raw_name_impl { - template<class Units> - void append_units_to(std::string& str) { - detail::name_string_impl<(Units::size::value)>::template apply<Units>::value(str); - } - template<class Scale> - void append_scale_to(std::string& str) { - detail::scale_name_string_impl<Scale::size::value>::template apply<Scale>::value(str); - } - template<class Unit> - std::string operator()(const Unit& u) { - return(to_string_impl(u, *this)); - } - template<class Unit> - bool is_default_string(const std::string&, const Unit&) { - return(true); - } -}; - -struct format_name_impl : format_raw_name_impl { - template<class Unit> - std::string operator()(const Unit& u) { - return(name_string(u)); - } - template<class Unit> - bool is_default_string(const std::string& str, const Unit& u) { - return(str == to_string_impl(u, format_raw_name_impl())); - } -}; - -template<class Char, class Traits> -inline void do_print(std::basic_ostream<Char, Traits>& os, const std::string& s) -{ - os << s.c_str(); -} - -inline void do_print(std::ostream& os, const std::string& s) -{ - os << s; -} - -template<class Char, class Traits> -inline void do_print(std::basic_ostream<Char, Traits>& os, const char* s) -{ - os << s; -} - -// For automatically applying the appropriate prefixes. - -} - -#ifdef BOOST_UNITS_DOXYGEN - -/// ADL customization point for automatic prefixing. -/// Returns a non-negative value. Implemented as std::abs -/// for built-in types. -template<class T> -double autoprefix_norm(const T& arg); - -#else - -template<class T, bool C = boost::is_arithmetic<T>::value> -struct autoprefix_norm_impl; - -template<class T> -struct autoprefix_norm_impl<T, true> -{ - typedef double type; - static BOOST_CONSTEXPR double call(const T& arg) { return std::abs(arg); } -}; - -template<class T> -struct autoprefix_norm_impl<T, false> -{ - typedef one type; - static BOOST_CONSTEXPR one call(const T&) { return one(); } -}; - -template<class T> -BOOST_CONSTEXPR -typename autoprefix_norm_impl<T>::type autoprefix_norm(const T& arg) -{ - return autoprefix_norm_impl<T>::call(arg); -} - -#endif - -namespace detail { - -template<class End, class Prev, class T, class F> -BOOST_CONSTEXPR -bool find_matching_scale_impl(End, End, Prev, T, double, F) -{ - return false; -} - -template<class Begin, class End, class Prev, class T, class F> -BOOST_CXX14_CONSTEXPR -bool find_matching_scale_impl(Begin, End end, Prev prev, T t, double x, F f) -{ - if(Begin::item::value() > x) { - f(prev, t); - return true; - } else { - return detail::find_matching_scale_impl( - typename Begin::next(), - end, - typename Begin::item(), - t, - x, - f - ); - } -} - -template<class End, class T, class F> -BOOST_CONSTEXPR -bool find_matching_scale_i(End, End, T, double, F) -{ - return false; -} - -template<class Begin, class End, class T, class F> -BOOST_CXX14_CONSTEXPR -bool find_matching_scale_i(Begin, End end, T t, double x, F f) -{ - if(Begin::item::value() > x) { - return false; - } else { - return detail::find_matching_scale_impl(typename Begin::next(), end, typename Begin::item(), t, x, f); - } -} - -template<class Scales, class T, class F> -BOOST_CXX14_CONSTEXPR -bool find_matching_scale(T t, double x, F f) -{ - return detail::find_matching_scale_i(Scales(), dimensionless_type(), t, x, f); -} - -typedef list<scale<10, static_rational<-24> >, - list<scale<10, static_rational<-21> >, - list<scale<10, static_rational<-18> >, - list<scale<10, static_rational<-15> >, - list<scale<10, static_rational<-12> >, - list<scale<10, static_rational<-9> >, - list<scale<10, static_rational<-6> >, - list<scale<10, static_rational<-3> >, - list<scale<10, static_rational<0> >, - list<scale<10, static_rational<3> >, - list<scale<10, static_rational<6> >, - list<scale<10, static_rational<9> >, - list<scale<10, static_rational<12> >, - list<scale<10, static_rational<15> >, - list<scale<10, static_rational<18> >, - list<scale<10, static_rational<21> >, - list<scale<10, static_rational<24> >, - list<scale<10, static_rational<27> >, - dimensionless_type> > > > > > > > > > > > > > > > > > engineering_prefixes; - -typedef list<scale<2, static_rational<10> >, - list<scale<2, static_rational<20> >, - list<scale<2, static_rational<30> >, - list<scale<2, static_rational<40> >, - list<scale<2, static_rational<50> >, - list<scale<2, static_rational<60> >, - list<scale<2, static_rational<70> >, - list<scale<2, static_rational<80> >, - list<scale<2, static_rational<90> >, - dimensionless_type> > > > > > > > > binary_prefixes; - -template<class Os, class Quantity> -struct print_default_t { - typedef void result_type; - void operator()() const - { - *os << q->value() << ' ' << typename Quantity::unit_type(); - } - Os* os; - const Quantity* q; -}; - -template<class Os, class Quantity> -print_default_t<Os, Quantity> print_default(Os& os, const Quantity& q) -{ - print_default_t<Os, Quantity> result = { &os, &q }; - return result; -} - -template<class Os> -struct print_scale_t { - typedef void result_type; - template<class Prefix, class T> - void operator()(Prefix, const T& t) const - { - *prefixed = true; - *os << t / Prefix::value() << ' '; - switch(units::get_format(*os)) { - case name_fmt: do_print(*os, Prefix::name()); break; - case raw_fmt: - case symbol_fmt: do_print(*os, Prefix::symbol()); break; - case typename_fmt: do_print(*os, units::simplify_typename(Prefix())); *os << ' '; break; - } - } - template<long N, class T> - void operator()(scale<N, static_rational<0> >, const T& t) const - { - *prefixed = false; - *os << t << ' '; - } - Os* os; - bool* prefixed; -}; - -template<class Os> -print_scale_t<Os> print_scale(Os& os, bool& prefixed) -{ - print_scale_t<Os> result = { &os, &prefixed }; - return result; -} - -// puts parentheses around a unit -/// INTERNAL ONLY -template<class Dimension,class Units,class Scale, class Subformatter> -inline std::string -maybe_parenthesize(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, Scale> > >&, Subformatter f) -{ - std::string str; - - std::string without_scale = f(unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >()); - - if (f.is_default_string(without_scale, unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >())) - { - str += "("; - str += without_scale; - str += ")"; - } - else - { - str += without_scale; - } - - return(str); -} - -// This overload catches scaled units that have a single base unit -// raised to the first power. It causes si::nano * si::meters to not -// put parentheses around the meters. i.e. nm rather than n(m) -/// INTERNAL ONLY -template<class Dimension,class Unit,class Scale, class Subformatter> -inline std::string -maybe_parenthesize(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >,dimensionless_type>, Dimension, Scale> > >&, Subformatter f) -{ - return f(unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >, dimensionless_type>, Dimension, dimensionless_type> > >()); -} - -template<class Prefixes, class CharT, class Traits, class Unit, class T, class F> -void do_print_prefixed_impl(std::basic_ostream<CharT, Traits>& os, const quantity<Unit, T>& q, F default_) -{ - bool prefixed; - if(detail::find_matching_scale<Prefixes>(q.value(), autoprefix_norm(q.value()), detail::print_scale(os, prefixed))) { - if(prefixed) { - switch(units::get_format(os)) { - case symbol_fmt: do_print(os, maybe_parenthesize(Unit(), format_symbol_impl())); break; - case raw_fmt: do_print(os, maybe_parenthesize(Unit(), format_raw_symbol_impl())); break; - case name_fmt: do_print(os, maybe_parenthesize(Unit(), format_name_impl())); break; - case typename_fmt: do_print(os, simplify_typename(Unit())); break; - } - } else { - os << Unit(); - } - } else { - default_(); - } -} - -// Handle units like si::kilograms that have a scale embedded in the -// base unit. This overload is disabled if the scaled base unit has -// a user-defined string representation. -template<class Prefixes, class CharT, class Traits, class Dimension, class BaseUnit, class BaseScale, class Scale, class T> -typename base_unit_info< - scaled_base_unit<BaseUnit, Scale> ->::base_unit_info_primary_template -do_print_prefixed( - std::basic_ostream<CharT, Traits>& os, - const quantity< - unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - list< - heterogeneous_system_dim< - scaled_base_unit<BaseUnit, BaseScale>, - static_rational<1> - >, - dimensionless_type - >, - Dimension, - Scale - > - > - >, - T - >& q) -{ - quantity< - unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - list< - heterogeneous_system_dim<BaseUnit, static_rational<1> >, - dimensionless_type - >, - Dimension, - dimensionless_type - > - > - >, - T - > unscaled(q); - detail::do_print_prefixed_impl<Prefixes>(os, unscaled, detail::print_default(os, q)); -} - -template<class Prefixes, class CharT, class Traits, class Dimension, class L, class Scale, class T> -void do_print_prefixed( - std::basic_ostream<CharT, Traits>& os, - const quantity< - unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - L, - Dimension, - Scale - > - > - >, - T - >& q) -{ - quantity< - unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - L, - Dimension, - dimensionless_type - > - > - >, - T - > unscaled(q); - detail::do_print_prefixed_impl<Prefixes>(os, unscaled, detail::print_default(os, q)); -} - -template<class Prefixes, class CharT, class Traits, class Dimension, class System, class T> -void do_print_prefixed(std::basic_ostream<CharT, Traits>& os, const quantity<unit<Dimension, System>, T>& q) -{ - detail::do_print_prefixed<Prefixes>(os, quantity<unit<Dimension, typename make_heterogeneous_system<Dimension, System>::type>, T>(q)); -} - -template<class Prefixes, class CharT, class Traits, class Unit, class T> -void do_print_prefixed(std::basic_ostream<CharT, Traits>& os, const quantity<Unit, T>& q) -{ - detail::print_default(os, q)(); -} - -template<class Prefixes, class CharT, class Traits, class Unit, class T> -void maybe_print_prefixed(std::basic_ostream<CharT, Traits>& os, const quantity<Unit, T>& q, mpl::true_) -{ - detail::do_print_prefixed<Prefixes>(os, q); -} - -template<class Prefixes, class CharT, class Traits, class Unit, class T> -void maybe_print_prefixed(std::basic_ostream<CharT, Traits>& os, const quantity<Unit, T>& q, mpl::false_) -{ - detail::print_default(os, q)(); -} - -inline BOOST_CONSTEXPR mpl::true_ test_norm(double) { return mpl::true_(); } -inline BOOST_CONSTEXPR mpl::false_ test_norm(one) { return mpl::false_(); } - -} // namespace detail - -template<class Dimension,class System> -inline std::string -typename_string(const unit<Dimension, System>&) -{ - return simplify_typename(typename reduce_unit< unit<Dimension,System> >::type()); -} - -template<class Dimension,class System> -inline std::string -symbol_string(const unit<Dimension, System>&) -{ - return detail::to_string_impl(unit<Dimension,System>(), detail::format_symbol_impl()); -} - -template<class Dimension,class System> -inline std::string -name_string(const unit<Dimension, System>&) -{ - return detail::to_string_impl(unit<Dimension,System>(), detail::format_name_impl()); -} - -/// Print a @c unit as a list of base units and their exponents. -/// -/// for @c symbol_format outputs e.g. "m s^-1" or "J". -/// for @c name_format outputs e.g. "meter second^-1" or "joule". -/// for @c raw_format outputs e.g. "m s^-1" or "meter kilogram^2 second^-2". -/// for @c typename_format outputs the typename itself (currently demangled only on GCC). -template<class Char, class Traits, class Dimension, class System> -inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os, const unit<Dimension, System>& u) -{ - if (units::get_format(os) == typename_fmt) - { - detail::do_print(os, typename_string(u)); - } - else if (units::get_format(os) == raw_fmt) - { - detail::do_print(os, detail::to_string_impl(u, detail::format_raw_symbol_impl())); - } - else if (units::get_format(os) == symbol_fmt) - { - detail::do_print(os, symbol_string(u)); - } - else if (units::get_format(os) == name_fmt) - { - detail::do_print(os, name_string(u)); - } - else - { - BOOST_ASSERT_MSG(false, "The format mode must be one of: typename_format, raw_format, name_format, symbol_format"); - } - - return(os); -} - -/// \brief Print a @c quantity. -/// \details Prints the value followed by the unit. -/// If the engineering_prefix, or binary_prefix is set, -/// tries to scale the value appropriately. -/// For example, it might print 12.345 km instead of 12345 m. -/// (Note does @b not attempt to automatically scale scalars like double, float...) -template<class Char, class Traits, class Unit, class T> -inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os, const quantity<Unit, T>& q) -{ - if (units::get_autoprefix(os) == autoprefix_none) - { - os << q.value() << ' ' << Unit(); - } - else if (units::get_autoprefix(os) == autoprefix_engineering) - { - detail::maybe_print_prefixed<detail::engineering_prefixes>(os, q, detail::test_norm(autoprefix_norm(q.value()))); - } - else if (units::get_autoprefix(os) == autoprefix_binary) - { - detail::maybe_print_prefixed<detail::binary_prefixes>(os, q, detail::test_norm(autoprefix_norm(q.value()))); - } - else - { - BOOST_ASSERT_MSG(false, "Autoprefixing must be one of: no_prefix, engineering_prefix, binary_prefix"); - } - return(os); -} - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/is_dim.hpp b/contrib/restricted/boost/boost/units/is_dim.hpp deleted file mode 100644 index d6a6b54be5..0000000000 --- a/contrib/restricted/boost/boost/units/is_dim.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// 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_IS_DIM_HPP -#define BOOST_UNITS_IS_DIM_HPP - -/// -/// \file -/// \brief Check that a type is a valid @c dim. -/// - -#include <boost/mpl/bool.hpp> - -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a valid @c dim. -template<typename T> -struct is_dim : - public mpl::false_ -{ }; - -template<typename T,typename V> -struct is_dim< dim<T,V> > : - public mpl::true_ -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_DIM_HPP diff --git a/contrib/restricted/boost/boost/units/is_dimension_list.hpp b/contrib/restricted/boost/boost/units/is_dimension_list.hpp deleted file mode 100644 index b2494d73be..0000000000 --- a/contrib/restricted/boost/boost/units/is_dimension_list.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// 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_IS_DIMENSION_LIST_HPP -#define BOOST_UNITS_IS_DIMENSION_LIST_HPP - -/// -/// \file -/// \brief Check that a type is a valid dimension list. -/// - -#include <boost/mpl/bool.hpp> - -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a valid dimension list. -template<typename Seq> -struct is_dimension_list : - public mpl::false_ -{ }; - -template<typename Item, typename Next> -struct is_dimension_list<list<Item, Next> > : - public mpl::true_ -{ }; - -template<> -struct is_dimension_list<dimensionless_type> : - public mpl::true_ -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_DIMENSION_LIST_HPP diff --git a/contrib/restricted/boost/boost/units/is_dimensionless.hpp b/contrib/restricted/boost/boost/units/is_dimensionless.hpp deleted file mode 100644 index 158a4202b1..0000000000 --- a/contrib/restricted/boost/boost/units/is_dimensionless.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// 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_IS_DIMENSIONLESS_HPP -#define BOOST_UNITS_IS_DIMENSIONLESS_HPP - -/// -/// \file -/// \brief Check if a unit or quantity is dimensionless. -/// - -#include <boost/mpl/bool.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -template<class T> -struct is_dimensionless : - public mpl::false_ -{ }; - -/// Check if a unit is dimensionless. -template<class System> -struct is_dimensionless< unit<dimensionless_type,System> > : - public mpl::true_ -{ }; - -/// Check if a quantity is dimensionless. -template<class Unit,class Y> -struct is_dimensionless< quantity<Unit,Y> > : - public is_dimensionless<Unit> -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_DIMENSIONLESS_HPP diff --git a/contrib/restricted/boost/boost/units/is_dimensionless_quantity.hpp b/contrib/restricted/boost/boost/units/is_dimensionless_quantity.hpp deleted file mode 100644 index fa0dbce589..0000000000 --- a/contrib/restricted/boost/boost/units/is_dimensionless_quantity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_IS_DIMENSIONLESS_QUANTITY_HPP -#define BOOST_UNITS_IS_DIMENSIONLESS_QUANTITY_HPP - -/// \file -/// \brief check that a type is a dimensionless quantity - -#include <boost/units/is_quantity_of_dimension.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a dimensionless quantity. -template<class T> -struct is_dimensionless_quantity : - public is_quantity_of_dimension<T,dimensionless_type> -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_DIMENSIONLESS_QUANTITY_HPP diff --git a/contrib/restricted/boost/boost/units/is_dimensionless_unit.hpp b/contrib/restricted/boost/boost/units/is_dimensionless_unit.hpp deleted file mode 100644 index 09d4da59f0..0000000000 --- a/contrib/restricted/boost/boost/units/is_dimensionless_unit.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_IS_DIMENSIONLESS_UNIT_HPP -#define BOOST_UNITS_IS_DIMENSIONLESS_UNIT_HPP - -/// \file -/// \brief Check that a type is a dimensionless unit. - -#include <boost/units/is_unit_of_dimension.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a dimensionless unit. -template<class T> -struct is_dimensionless_unit : - public is_unit_of_dimension<T,dimensionless_type> -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_DIMENSIONLESS_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/is_quantity.hpp b/contrib/restricted/boost/boost/units/is_quantity.hpp deleted file mode 100644 index dd0ae083a8..0000000000 --- a/contrib/restricted/boost/boost/units/is_quantity.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// 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_IS_QUANTITY_HPP -#define BOOST_UNITS_IS_QUANTITY_HPP - -/// -/// \file -/// \brief Check that a type is a quantity. -/// - -#include <boost/mpl/bool.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a quantity. -template<typename T> -struct is_quantity : - public mpl::false_ -{ }; - -template<class Unit, - class Y> -struct is_quantity< quantity<Unit,Y> > : - public mpl::true_ -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_QUANTITY_HPP diff --git a/contrib/restricted/boost/boost/units/is_quantity_of_dimension.hpp b/contrib/restricted/boost/boost/units/is_quantity_of_dimension.hpp deleted file mode 100644 index f3ec40928c..0000000000 --- a/contrib/restricted/boost/boost/units/is_quantity_of_dimension.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// 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_IS_QUANTITY_OF_DIMENSION_HPP -#define BOOST_UNITS_IS_QUANTITY_OF_DIMENSION_HPP - -/// -/// \file -/// \brief Check that a type is a quantity of the specified dimension. -/// - -#include <boost/mpl/bool.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/is_unit_of_dimension.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a quantity of the specified dimension. -template<class T,class Dim> -struct is_quantity_of_dimension : - public mpl::false_ -{ }; - -template<class Unit,class Y,class Dim> -struct is_quantity_of_dimension< quantity< Unit,Y>,Dim > : - public is_unit_of_dimension<Unit, Dim> -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_QUANTITY_OF_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/is_quantity_of_system.hpp b/contrib/restricted/boost/boost/units/is_quantity_of_system.hpp deleted file mode 100644 index 18546eb1ed..0000000000 --- a/contrib/restricted/boost/boost/units/is_quantity_of_system.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// 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_IS_QUANTITY_OF_SYSTEM_HPP -#define BOOST_UNITS_IS_QUANTITY_OF_SYSTEM_HPP - -/// -/// \file -/// \brief Check that a type is a quantity in a specified system. -/// - -#include <boost/mpl/bool.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/is_unit_of_system.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a quantity in a specified system. -template<class T,class System> -struct is_quantity_of_system : - public mpl::false_ -{ }; - -template<class Unit,class Y,class System> -struct is_quantity_of_system< quantity< Unit,Y>,System > : - public is_unit_of_system<Unit, System> -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_QUANTITY_OF_SYSTEM_HPP diff --git a/contrib/restricted/boost/boost/units/is_unit.hpp b/contrib/restricted/boost/boost/units/is_unit.hpp deleted file mode 100644 index 195c42fd5b..0000000000 --- a/contrib/restricted/boost/boost/units/is_unit.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// 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_IS_UNIT_HPP -#define BOOST_UNITS_IS_UNIT_HPP - -/// -/// \file -/// \brief Check that a type is a unit. -/// - -#include <boost/mpl/bool.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a unit. -template<class T> -struct is_unit : - public mpl::false_ -{ }; - -template<class Dim,class System> -struct is_unit< unit<Dim,System> > : - public mpl::true_ -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/is_unit_of_dimension.hpp b/contrib/restricted/boost/boost/units/is_unit_of_dimension.hpp deleted file mode 100644 index 4fc878beeb..0000000000 --- a/contrib/restricted/boost/boost/units/is_unit_of_dimension.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// 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_IS_UNIT_OF_DIMENSION_HPP -#define BOOST_UNITS_IS_UNIT_OF_DIMENSION_HPP - -/// -/// \file -/// \brief Check that a type is a unit of the specified dimension. -/// - -#include <boost/mpl/bool.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a unit of the specified dimension. -template<class T,class Dim> -struct is_unit_of_dimension : - public mpl::false_ -{ }; - -template<class Dim,class System> -struct is_unit_of_dimension< unit<Dim,System>,Dim > : - public mpl::true_ -{ }; - -template<class Dim,class System> -struct is_unit_of_dimension< absolute<unit<Dim,System> >,Dim > : - public mpl::true_ -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_UNIT_OF_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/is_unit_of_system.hpp b/contrib/restricted/boost/boost/units/is_unit_of_system.hpp deleted file mode 100644 index 3c3eaa7525..0000000000 --- a/contrib/restricted/boost/boost/units/is_unit_of_system.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// 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_IS_UNIT_OF_SYSTEM_HPP -#define BOOST_UNITS_IS_UNIT_OF_SYSTEM_HPP - -/// -/// \file -/// \brief Check that a type is a unit in a specified system. -/// - -#include <boost/mpl/bool.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -/// Check that a type is a unit in a specified system. -template<class T,class System> -struct is_unit_of_system : - public mpl::false_ -{ }; - -template<class Dim,class System> -struct is_unit_of_system< unit<Dim,System>,System > : - public mpl::true_ -{ }; - -template<class Dim,class System> -struct is_unit_of_system< absolute<unit<Dim,System> >,System > : - public mpl::true_ -{ }; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IS_UNIT_OF_SYSTEM_HPP diff --git a/contrib/restricted/boost/boost/units/lambda.hpp b/contrib/restricted/boost/boost/units/lambda.hpp deleted file mode 100644 index 9014ccaabf..0000000000 --- a/contrib/restricted/boost/boost/units/lambda.hpp +++ /dev/null @@ -1,593 +0,0 @@ -// 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) - -// $Id: lambda.hpp 27 2008-06-16 14:50:58Z maehne $ - -#ifndef BOOST_UNITS_LAMBDA_HPP -#define BOOST_UNITS_LAMBDA_HPP - - -//////////////////////////////////////////////////////////////////////// -/// -/// \file lambda.hpp -/// -/// \brief Definitions to ease the usage of Boost.Units' quantity, -/// unit, and absolute types in functors created with the -/// Boost.Lambda library. -/// -/// \author Torsten Maehne -/// \date 2008-06-16 -/// -/// Boost.Lambda's return type deduction system is extented to make -/// use of Boost.Units' typeof_helper trait classes for Boost.Units' -/// quantity, absolute, and unit template classes. -/// -//////////////////////////////////////////////////////////////////////// - - -#include <boost/lambda/lambda.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/dimensionless_unit.hpp> -#include <boost/units/operators.hpp> - -namespace boost { - -namespace lambda { - - /// Partial specialization of return type trait for action - /// unit<Dim, System> * Y. - template<typename System, typename Dim, typename Y> - struct plain_return_type_2<arithmetic_action<multiply_action>, - boost::units::unit<Dim, System>, - Y > { - typedef typename boost::units::multiply_typeof_helper< - boost::units::unit<Dim, System>, Y >::type type; - }; - -} // namespace lambda - -namespace units { - - template<typename System, typename Dim, typename Arg> - struct multiply_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> > { - typedef boost::lambda::lambda_functor< - boost::lambda::lambda_functor_base< - boost::lambda::arithmetic_action<boost::lambda::multiply_action>, - tuple<typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type, boost::lambda::lambda_functor<Arg> > - > - > type; - }; - - /// Disambiguating overload for action - /// unit<Dim, System> * lambda_functor<Arg> - /// based on \<boost/lambda/detail/operators.hpp\>. - template<typename System, typename Dim, typename Arg> - inline const typename multiply_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> >::type - operator*(const boost::units::unit<Dim, System>& a, - const boost::lambda::lambda_functor<Arg>& b) { - return typename multiply_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> >::type::inherited - (tuple<typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type, - boost::lambda::lambda_functor<Arg> > - (a, b)); - } - -} // namespace units - -namespace lambda { - - /// Partial specialization of return type trait for action - /// unit<Dim, System> / Y. - template<typename System, typename Dim, typename Y> - struct plain_return_type_2<arithmetic_action<divide_action>, - boost::units::unit<Dim, System>, - Y > { - typedef typename boost::units::divide_typeof_helper< - boost::units::unit<Dim, System>, Y >::type type; - }; - -} // namespace lambda - -namespace units { - - template<typename System, typename Dim, typename Arg> - struct divide_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> > { - typedef boost::lambda::lambda_functor< - boost::lambda::lambda_functor_base< - boost::lambda::arithmetic_action<boost::lambda::divide_action>, - tuple<typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type, boost::lambda::lambda_functor<Arg> > - > - > type; - }; - - /// Disambiguating overload for action - /// unit<Dim, System> / lambda_functor<Arg> - /// based on \<boost/lambda/detail/operators.hpp\>. - template<typename System, typename Dim, typename Arg> - inline const typename divide_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> >::type - operator/(const boost::units::unit<Dim, System>& a, - const boost::lambda::lambda_functor<Arg>& b) { - return typename divide_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> >::type::inherited - (tuple<typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type, - boost::lambda::lambda_functor<Arg> > - (a, b)); - } - -} // namespace units - -namespace lambda { - - /// Partial specialization of return type trait for action - /// Y * unit<Dim, System>. - template<typename System, typename Dim, typename Y> - struct plain_return_type_2<arithmetic_action<multiply_action>, - Y, - boost::units::unit<Dim, System> > { - typedef typename boost::units::multiply_typeof_helper< - Y, boost::units::unit<Dim, System> >::type type; - }; - -} // namespace lambda - -namespace units { - - template<typename System, typename Dim, typename Arg> - struct multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> > { - typedef boost::lambda::lambda_functor< - boost::lambda::lambda_functor_base< - boost::lambda::arithmetic_action<boost::lambda::multiply_action>, - tuple<boost::lambda::lambda_functor<Arg>, typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type> - > - > type; - }; - - /// Disambiguating overload for action - /// lambda_functor<Arg> * unit<Dim, System> - /// based on \<boost/lambda/detail/operators.hpp\>. - template<typename System, typename Dim, typename Arg> - inline const typename multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> >::type - operator*(const boost::lambda::lambda_functor<Arg>& a, - const boost::units::unit<Dim, System>& b) { - return typename multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> >::type::inherited - (tuple<boost::lambda::lambda_functor<Arg>, - typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type> - (a, b)); - } - -} // namespace units - -namespace lambda { - - /// Partial specialization of return type trait for action - /// Y / unit<Dim, System>. - template<typename System, typename Dim, typename Y> - struct plain_return_type_2<arithmetic_action<divide_action>, - Y, - boost::units::unit<Dim, System> > { - typedef typename boost::units::divide_typeof_helper< - Y, boost::units::unit<Dim, System> >::type type; - }; - -} // namespace lambda - -namespace units { - - template<typename System, typename Dim, typename Arg> - struct divide_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> > { - typedef boost::lambda::lambda_functor< - boost::lambda::lambda_functor_base< - boost::lambda::arithmetic_action<boost::lambda::divide_action>, - tuple<boost::lambda::lambda_functor<Arg>, typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type> - > - > type; - }; - - /// Disambiguating overload for action - /// lambda_functor<Arg> / unit<Dim, System> - /// based on \<boost/lambda/detail/operators.hpp\>. - template<typename System, typename Dim, typename Arg> - inline const typename divide_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> >::type - operator/(const boost::lambda::lambda_functor<Arg>& a, - const boost::units::unit<Dim, System>& b) { - return typename divide_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> >::type::inherited - (tuple<boost::lambda::lambda_functor<Arg>, - typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type> - (a, b)); - } - -} // namespace units - -namespace lambda { - - /// Partial specialization of return type trait for action - /// quantity<Unit, X> * X. - template<typename Unit, typename X> - struct plain_return_type_2<arithmetic_action<multiply_action>, - boost::units::quantity<Unit, X>, - X> { - typedef typename boost::units::multiply_typeof_helper< - boost::units::quantity<Unit, X>, X>::type type; - }; - - /// Partial specialization of return type trait for action - /// X * quantity<Unit, X>. - template<typename Unit, typename X> - struct plain_return_type_2<arithmetic_action<multiply_action>, - X, - boost::units::quantity<Unit, X> > { - typedef typename boost::units::multiply_typeof_helper< - X, boost::units::quantity<Unit, X> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<Unit, X> / X. - template<typename Unit, typename X> - struct plain_return_type_2<arithmetic_action<divide_action>, - boost::units::quantity<Unit, X>, - X> { - typedef typename boost::units::divide_typeof_helper< - boost::units::quantity<Unit, X>, X>::type type; - }; - - /// Partial specialization of return type trait for action - /// X / quantity<Unit, X>. - template<typename Unit, typename X> - struct plain_return_type_2<arithmetic_action<divide_action>, - X, - boost::units::quantity<Unit, X> > { - typedef typename boost::units::divide_typeof_helper< - X, boost::units::quantity<Unit, X> >::type type; - }; - - /// Partial specialization of return type trait for action - /// unit<Dim1, System1> * quantity<Unit2, Y>. - template<typename System1, typename Dim1, typename Unit2, typename Y> - struct plain_return_type_2<arithmetic_action<multiply_action>, - boost::units::unit<Dim1, System1>, - boost::units::quantity<Unit2, Y> > { - typedef typename boost::units::multiply_typeof_helper< - boost::units::unit<Dim1, System1>, - boost::units::quantity<Unit2, Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// unit<Dim1, System1> / quantity<Unit2, Y>. - template<typename System1, typename Dim1, typename Unit2, typename Y> - struct plain_return_type_2<arithmetic_action<divide_action>, - boost::units::unit<Dim1, System1>, - boost::units::quantity<Unit2, Y> > { - typedef typename boost::units::divide_typeof_helper< - boost::units::unit<Dim1, System1>, - boost::units::quantity<Unit2, Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<Unit1, Y> * unit<Dim2, System2>. - template<typename Unit1, typename Y, typename System2, typename Dim2> - struct plain_return_type_2<arithmetic_action<multiply_action>, - boost::units::quantity<Unit1, Y>, - boost::units::unit<Dim2, System2> > { - typedef typename boost::units::multiply_typeof_helper< - boost::units::quantity<Unit1, Y>, - boost::units::unit<Dim2, System2> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<Unit1, Y> / unit<Dim2, System2>. - template<typename Unit1, typename Y, typename System2, typename Dim2> - struct plain_return_type_2<arithmetic_action<divide_action>, - boost::units::quantity<Unit1, Y>, - boost::units::unit<Dim2, System2> > { - typedef typename boost::units::divide_typeof_helper< - boost::units::quantity<Unit1, Y>, - boost::units::unit<Dim2, System2> >::type type; - }; - - /// Partial specialization of return type trait for action - /// +quantity<Unit, Y>. - template<typename Unit, typename Y> - struct plain_return_type_1<unary_arithmetic_action<plus_action>, - boost::units::quantity<Unit, Y> > { - typedef typename boost::units::unary_plus_typeof_helper< - boost::units::quantity<Unit, Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// -quantity<Unit, Y>. - template<typename Unit, typename Y> - struct plain_return_type_1<unary_arithmetic_action<minus_action>, - boost::units::quantity<Unit, Y> > { - typedef typename boost::units::unary_minus_typeof_helper< - boost::units::quantity<Unit, Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<Unit1, X> + quantity<Unit2, Y>. - template<typename Unit1, typename X, typename Unit2, typename Y> - struct plain_return_type_2<arithmetic_action<plus_action>, - boost::units::quantity<Unit1, X>, - boost::units::quantity<Unit2, Y> > { - typedef typename boost::units::add_typeof_helper< - boost::units::quantity<Unit1, X>, - boost::units::quantity<Unit2, Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<dimensionless, X> + Y. - template<typename System, typename X, typename Y> - struct plain_return_type_2<arithmetic_action<plus_action>, - boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), X>, - Y> { - typedef typename boost::units::add_typeof_helper< - boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), X>, - Y>::type type; - }; - - /// Partial specialization of return type trait for action - /// X + quantity<dimensionless, Y>. - template<typename System, typename X, typename Y> - struct plain_return_type_2<arithmetic_action<plus_action>, - X, - boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), Y> > { - typedef typename boost::units::add_typeof_helper< - X, - boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<Unit1, X> - quantity<Unit2, Y>. - template<typename Unit1, typename X, typename Unit2, typename Y> - struct plain_return_type_2<arithmetic_action<minus_action>, - boost::units::quantity<Unit1, X>, - boost::units::quantity<Unit2, Y> > { - typedef typename boost::units::subtract_typeof_helper< - boost::units::quantity<Unit1, X>, - boost::units::quantity<Unit2, Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<dimensionless, X> - Y. - template<typename System, typename X, typename Y> - struct plain_return_type_2<arithmetic_action<minus_action>, - boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), X>, - Y> { - typedef typename boost::units::subtract_typeof_helper< - boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), X>, - Y>::type type; - }; - - /// Partial specialization of return type trait for action - /// X - quantity<dimensionless, Y>. - template<typename System, typename X, typename Y> - struct plain_return_type_2<arithmetic_action<minus_action>, - X, - boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), Y> > { - typedef typename boost::units::subtract_typeof_helper< - X, - boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<Unit1, X> * quantity<Unit2, Y>. - template<typename Unit1, typename X, typename Unit2, typename Y> - struct plain_return_type_2<arithmetic_action<multiply_action>, - boost::units::quantity<Unit1, X>, - boost::units::quantity<Unit2, Y> > { - typedef typename boost::units::multiply_typeof_helper< - boost::units::quantity<Unit1, X>, - boost::units::quantity<Unit2, Y> >::type type; - }; - - /// Partial specialization of return type trait for action - /// quantity<Unit1, X> / quantity<Unit2, Y>. - template<typename Unit1, typename X, typename Unit2, typename Y> - struct plain_return_type_2<arithmetic_action<divide_action>, - boost::units::quantity<Unit1, X>, - boost::units::quantity<Unit2, Y> > { - typedef typename boost::units::divide_typeof_helper< - boost::units::quantity<Unit1, X>, - boost::units::quantity<Unit2, Y> >::type type; - }; - - - //////////////////////////////////////////////////////////////////////// - // Partial specialization of Boost.Lambda's trait classes for all - // operators overloaded in <boost/units/unit.hpp> - //////////////////////////////////////////////////////////////////////// - - /// Partial specialization of return type trait for action - /// +unit<Dim, System>. - template<typename Dim, typename System> - struct plain_return_type_1<unary_arithmetic_action<plus_action>, - boost::units::unit<Dim, System> > { - typedef typename boost::units::unary_plus_typeof_helper< - boost::units::unit<Dim, System> >::type type; - }; - - /// Partial specialization of return type trait for action - /// -unit<Dim, System>. - template<typename Dim, typename System> - struct plain_return_type_1<unary_arithmetic_action<minus_action>, - boost::units::unit<Dim, System> > { - typedef typename boost::units::unary_minus_typeof_helper< - boost::units::unit<Dim, System> >::type type; - }; - - /// Partial specialization of return type trait for action - /// unit<Dim1, System1> + unit<Dim2, System2>. - template<typename Dim1, typename Dim2, typename System1, typename System2> - struct plain_return_type_2<arithmetic_action<plus_action>, - boost::units::unit<Dim1, System1>, - boost::units::unit<Dim2, System2> > { - typedef typename boost::units::add_typeof_helper< - boost::units::unit<Dim1, System1>, - boost::units::unit<Dim2, System2> >::type type; - }; - - /// Partial specialization of return type trait for action - /// unit<Dim1, System1> - unit<Dim2, System2>. - template<typename Dim1, typename Dim2, typename System1, typename System2> - struct plain_return_type_2<arithmetic_action<minus_action>, - boost::units::unit<Dim1, System1>, - boost::units::unit<Dim2, System2> > { - typedef typename boost::units::subtract_typeof_helper< - boost::units::unit<Dim1, System1>, - boost::units::unit<Dim2, System2> >::type type; - }; - - /// Partial specialization of return type trait for action - /// unit<Dim1, System1> * unit<Dim2, System2>. - template<typename Dim1, typename Dim2, typename System1, typename System2> - struct plain_return_type_2<arithmetic_action<multiply_action>, - boost::units::unit<Dim1, System1>, - boost::units::unit<Dim2, System2> > { - typedef typename boost::units::multiply_typeof_helper< - boost::units::unit<Dim1, System1>, - boost::units::unit<Dim2, System2> >::type type; - }; - - /// Partial specialization of return type trait for action - /// unit<Dim1, System1> / unit<Dim2, System2>. - template<typename Dim1, typename Dim2, typename System1, typename System2> - struct plain_return_type_2<arithmetic_action<divide_action>, - boost::units::unit<Dim1, System1>, - boost::units::unit<Dim2, System2> > { - typedef typename boost::units::divide_typeof_helper< - boost::units::unit<Dim1, System1>, - boost::units::unit<Dim2, System2> >::type type; - }; - - - //////////////////////////////////////////////////////////////////////// - // Partial specialization of Boost.Lambda's trait classes for all - // operators overloaded in <boost/units/absolute.hpp> - //////////////////////////////////////////////////////////////////////// - - - /// Partial specialization of return type trait for action - /// absolute<Y> + Y. - template<typename Y> - struct plain_return_type_2<arithmetic_action<plus_action>, - boost::units::absolute<Y>, - Y> { - typedef typename boost::units::absolute<Y> type; - }; - - /// Partial specialization of return type trait for action - /// Y + absolute<Y>. - template<typename Y> - struct plain_return_type_2<arithmetic_action<plus_action>, - Y, - boost::units::absolute<Y> > { - typedef typename boost::units::absolute<Y> type; - }; - - /// Partial specialization of return type trait for action - /// absolute<Y> - Y. - template<typename Y> - struct plain_return_type_2<arithmetic_action<minus_action>, - boost::units::absolute<Y>, - Y> { - typedef typename boost::units::absolute<Y> type; - }; - - /// Partial specialization of return type trait for action - /// absolute<Y> - absolute<Y>. - template<typename Y> - struct plain_return_type_2<arithmetic_action<minus_action>, - boost::units::absolute<Y>, - boost::units::absolute<Y> > { - typedef Y type; - }; - - /// Partial specialization of return type trait for action - /// T * absolute<unit<D, S> >. - template<typename D, typename S, typename T> - struct plain_return_type_2<arithmetic_action<multiply_action>, - T, - boost::units::absolute<boost::units::unit<D, S> > > { - typedef typename boost::units::quantity< - boost::units::absolute<boost::units::unit<D, S> >, T> type; - }; - -} // namespace lambda - -namespace units { - - template<typename System, typename Dim, typename Arg> - struct multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::absolute<boost::units::unit<Dim, System> > > { - typedef boost::lambda::lambda_functor< - boost::lambda::lambda_functor_base< - boost::lambda::arithmetic_action<boost::lambda::multiply_action>, - tuple<boost::lambda::lambda_functor<Arg>, - typename boost::lambda::const_copy_argument<const boost::units::absolute<boost::units::unit<Dim, System> > >::type> - > - > type; - }; - - /// Disambiguating overload for action - /// lambda_functor<Arg> * absolute<unit<Dim, System> > - /// based on \<boost/lambda/detail/operators.hpp\>. - template<typename System, typename Dim, typename Arg> - inline const typename multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::absolute<boost::units::unit<Dim, System> > >::type - operator*(const boost::lambda::lambda_functor<Arg>& a, - const boost::units::absolute<boost::units::unit<Dim, System> >& b) { - return typename multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::absolute<boost::units::unit<Dim, System> > >::type::inherited - (tuple<boost::lambda::lambda_functor<Arg>, - typename boost::lambda::const_copy_argument<const boost::units::absolute<boost::units::unit<Dim, System> > >::type> - (a, b)); - } - -} // namespace units - -namespace lambda { - - /// Partial specialization of return type trait for action - /// absolute<unit<D, S> > * T. - template<typename D, typename S, typename T> - struct plain_return_type_2<arithmetic_action<multiply_action>, - boost::units::absolute<boost::units::unit<D, S> >, - T> { - typedef typename boost::units::quantity< - boost::units::absolute<boost::units::unit<D, S> >, T> type; - }; - -} // namespace lambda - -namespace units { - - template<typename System, typename Dim, typename Arg> - struct multiply_typeof_helper<boost::units::absolute<boost::units::unit<Dim, System> >, boost::lambda::lambda_functor<Arg> > { - typedef boost::lambda::lambda_functor< - boost::lambda::lambda_functor_base< - boost::lambda::arithmetic_action<boost::lambda::multiply_action>, - tuple<typename boost::lambda::const_copy_argument<const boost::units::absolute<boost::units::unit<Dim, System> > >::type, - boost::lambda::lambda_functor<Arg> > - > - > type; - }; - - /// Disambiguating overload for action - /// absolute<unit<Dim, System> > * lambda_functor<Arg> - /// based on \<boost/lambda/detail/operators.hpp\>. - template<typename System, typename Dim, typename Arg> - inline const typename multiply_typeof_helper<boost::units::absolute<boost::units::unit<Dim, System> >, boost::lambda::lambda_functor<Arg> >::type - operator*(const boost::units::absolute<boost::units::unit<Dim, System> >& a, - const boost::lambda::lambda_functor<Arg>& b) { - return typename multiply_typeof_helper<boost::units::absolute<boost::units::unit<Dim, System> >, boost::lambda::lambda_functor<Arg> >::type::inherited - (tuple<typename boost::lambda::const_copy_argument<const boost::units::absolute<boost::units::unit<Dim, System> > >::type, - boost::lambda::lambda_functor<Arg> > - (a, b)); - } - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_LAMBDA_HPP diff --git a/contrib/restricted/boost/boost/units/limits.hpp b/contrib/restricted/boost/boost/units/limits.hpp deleted file mode 100644 index 7886d692a0..0000000000 --- a/contrib/restricted/boost/boost/units/limits.hpp +++ /dev/null @@ -1,76 +0,0 @@ -// 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) 2007-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_LIMITS_HPP -#define BOOST_UNITS_LIMITS_HPP - -/// -/// \file -/// \brief specialize std::numeric_limits for units. -/// - -#include <limits> - -#include <boost/config.hpp> -#include <boost/units/units_fwd.hpp> - -namespace std { - -template<class Unit, class T> -class numeric_limits< ::boost::units::quantity<Unit, T> > -{ - public: - typedef ::boost::units::quantity<Unit, T> quantity_type; - BOOST_STATIC_CONSTEXPR bool is_specialized = std::numeric_limits<T>::is_specialized; - static BOOST_CONSTEXPR quantity_type (min)() { return(quantity_type::from_value((std::numeric_limits<T>::min)())); } - static BOOST_CONSTEXPR quantity_type (max)() { return(quantity_type::from_value((std::numeric_limits<T>::max)())); } -#ifndef BOOST_NO_CXX11_NUMERIC_LIMITS - static BOOST_CONSTEXPR quantity_type (lowest)() { return(quantity_type::from_value((std::numeric_limits<T>::lowest)())); } -#endif - BOOST_STATIC_CONSTEXPR int digits = std::numeric_limits<T>::digits; - BOOST_STATIC_CONSTEXPR int digits10 = std::numeric_limits<T>::digits10; -#ifndef BOOST_NO_CXX11_NUMERIC_LIMITS - BOOST_STATIC_CONSTEXPR int max_digits10 = std::numeric_limits<T>::max_digits10; -#endif - BOOST_STATIC_CONSTEXPR bool is_signed = std::numeric_limits<T>::is_signed; - BOOST_STATIC_CONSTEXPR bool is_integer = std::numeric_limits<T>::is_integer; - BOOST_STATIC_CONSTEXPR bool is_exact = std::numeric_limits<T>::is_exact; - BOOST_STATIC_CONSTEXPR int radix = std::numeric_limits<T>::radix; - static BOOST_CONSTEXPR quantity_type epsilon() { return(quantity_type::from_value(std::numeric_limits<T>::epsilon())); } - static BOOST_CONSTEXPR quantity_type round_error() { return(quantity_type::from_value(std::numeric_limits<T>::round_error())); } - BOOST_STATIC_CONSTEXPR int min_exponent = std::numeric_limits<T>::min_exponent; - BOOST_STATIC_CONSTEXPR int min_exponent10 = std::numeric_limits<T>::min_exponent10; - BOOST_STATIC_CONSTEXPR int max_exponent = std::numeric_limits<T>::max_exponent; - BOOST_STATIC_CONSTEXPR int max_exponent10 = std::numeric_limits<T>::max_exponent10; - BOOST_STATIC_CONSTEXPR bool has_infinity = std::numeric_limits<T>::has_infinity; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = std::numeric_limits<T>::has_quiet_NaN; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = std::numeric_limits<T>::has_signaling_NaN; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = std::numeric_limits<T>::has_denorm_loss; - static BOOST_CONSTEXPR quantity_type infinity() { return(quantity_type::from_value(std::numeric_limits<T>::infinity())); } - static BOOST_CONSTEXPR quantity_type quiet_NaN() { return(quantity_type::from_value(std::numeric_limits<T>::quiet_NaN())); } - static BOOST_CONSTEXPR quantity_type signaling_NaN() { return(quantity_type::from_value(std::numeric_limits<T>::signaling_NaN())); } - static BOOST_CONSTEXPR quantity_type denorm_min() { return(quantity_type::from_value(std::numeric_limits<T>::denorm_min())); } - BOOST_STATIC_CONSTEXPR bool is_iec559 = std::numeric_limits<T>::is_iec559; - BOOST_STATIC_CONSTEXPR bool is_bounded = std::numeric_limits<T>::is_bounded; - BOOST_STATIC_CONSTEXPR bool is_modulo = std::numeric_limits<T>::is_modulo; - BOOST_STATIC_CONSTEXPR bool traps = std::numeric_limits<T>::traps; - BOOST_STATIC_CONSTEXPR bool tinyness_before = std::numeric_limits<T>::tinyness_before; -#if defined(_STLP_STATIC_CONST_INIT_BUG) - BOOST_STATIC_CONSTEXPR int has_denorm = std::numeric_limits<T>::has_denorm; - BOOST_STATIC_CONSTEXPR int round_style = std::numeric_limits<T>::round_style; -#else - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = std::numeric_limits<T>::has_denorm; - BOOST_STATIC_CONSTEXPR float_round_style round_style = std::numeric_limits<T>::round_style; -#endif -}; - -} - -#endif // BOOST_UNITS_LIMITS_HPP diff --git a/contrib/restricted/boost/boost/units/make_scaled_unit.hpp b/contrib/restricted/boost/boost/units/make_scaled_unit.hpp deleted file mode 100644 index d9740ffd80..0000000000 --- a/contrib/restricted/boost/boost/units/make_scaled_unit.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// 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) 2007-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_MAKE_SCALED_UNIT_HPP_INCLUDED -#define BOOST_UNITS_MAKE_SCALED_UNIT_HPP_INCLUDED - -#include <boost/units/units_fwd.hpp> -#include <boost/units/heterogeneous_system.hpp> -#include <boost/units/unit.hpp> - -namespace boost { -namespace units { - -template<class Unit, class Scale> -struct make_scaled_unit { - typedef typename make_scaled_unit<typename reduce_unit<Unit>::type, Scale>::type type; -}; - -template<class Dimension, class UnitList, class OldScale, class Scale> -struct make_scaled_unit<unit<Dimension, heterogeneous_system<heterogeneous_system_impl<UnitList, Dimension, OldScale> > >, Scale> { - typedef unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - UnitList, - Dimension, - typename mpl::times< - OldScale, - list<scale_list_dim<Scale>, dimensionless_type> - >::type - > - > - > type; -}; - -template<class Dimension, class UnitList, class OldScale, long Base> -struct make_scaled_unit<unit<Dimension, heterogeneous_system<heterogeneous_system_impl<UnitList, Dimension, OldScale> > >, scale<Base, static_rational<0> > > { - typedef unit< - Dimension, - heterogeneous_system< - heterogeneous_system_impl< - UnitList, - Dimension, - OldScale - > - > - > type; -}; - -} -} - -#endif diff --git a/contrib/restricted/boost/boost/units/make_system.hpp b/contrib/restricted/boost/boost/units/make_system.hpp deleted file mode 100644 index 1918268121..0000000000 --- a/contrib/restricted/boost/boost/units/make_system.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// 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_MAKE_SYSTEM_HPP -#define BOOST_UNITS_MAKE_SYSTEM_HPP - -/// \file -/// \brief Metafunction returning a homogeneous system that can -/// represent any combination of the base units. -/// \details -/// Metafunction make_system returning a homogeneous system that can -/// represent any combination of the base units. There must -/// be no way to represent any of the base units in terms -/// of the others. make_system<foot_base_unit, meter_base_unit>::type -/// is not allowed, for example. - -#include <boost/units/config.hpp> -#include <boost/units/dimensionless_type.hpp> -#include <boost/units/homogeneous_system.hpp> -#include <boost/units/detail/dimension_list.hpp> -#include <boost/units/detail/sort.hpp> - -namespace boost { - -namespace units { - -#ifdef BOOST_UNITS_DOXYGEN - -namespace detail { - -struct unspecified {}; - -} - -/// Metafunction returning a homogeneous system that can -/// represent any combination of the base units. There must -/// be no way to represent any of the base units in terms -/// of the others. make_system<foot_base_unit, meter_base_unit>::type -/// is not allowed, for example. -template<class BaseUnit0, class BaseUnit1, class BaseUnit2, ..., class BaseUnitN> -struct make_system -{ - typedef homogeneous_system<detail::unspecified> type; -}; - -#else - -struct na {}; - -template< - class U0 = na, - class U1 = na, - class U2 = na, - class U3 = na, - class U4 = na, - class U5 = na, - class U6 = na, - class U7 = na, - class U8 = na, - class U9 = na -> -struct make_system; - -template<> -struct make_system<> -{ - typedef homogeneous_system<dimensionless_type> type; -}; - -// Codewarrior 9.2 doesn't like using the defaults. Need -// to specify na explicitly. -template<class T0> -struct make_system<T0, na, na, na, na, na, na, na, na, na> -{ - typedef homogeneous_system<list<T0, dimensionless_type> > type; -}; - -template<class T0, class T1> -struct make_system<T0, T1, na, na, na, na, na, na, na, na> -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, dimensionless_type> > >::type> type; -}; - -template<class T0, class T1, class T2> -struct make_system<T0, T1, T2, na, na, na, na, na, na, na> -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, dimensionless_type> > > >::type> type; -}; - -template<class T0, class T1, class T2, class T3> -struct make_system<T0, T1, T2, T3, na, na, na, na, na, na> -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, dimensionless_type> > > > >::type> type; -}; - -template<class T0, class T1, class T2, class T3, class T4> -struct make_system<T0, T1, T2, T3, T4, na, na, na, na, na> -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, dimensionless_type> > > > > >::type> type; -}; - -template<class T0, class T1, class T2, class T3, class T4, class T5> -struct make_system<T0, T1, T2, T3, T4, T5, na, na, na, na> -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, dimensionless_type> > > > > > >::type> type; -}; - -template<class T0, class T1, class T2, class T3, class T4, class T5, class T6> -struct make_system<T0, T1, T2, T3, T4, T5, T6, na, na, na> -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, dimensionless_type> > > > > > > >::type> type; -}; - -template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7> -struct make_system<T0, T1, T2, T3, T4, T5, T6, T7, na, na> -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, dimensionless_type> > > > > > > > >::type> type; -}; - -template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8> -struct make_system<T0, T1, T2, T3, T4, T5, T6, T7, T8, na> -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, list<T8, dimensionless_type> > > > > > > > > >::type> type; -}; - -template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> -struct make_system -{ - typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, list<T8, list<T9, dimensionless_type> > > > > > > > > > >::type> type; -}; - -#endif - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/operators.hpp b/contrib/restricted/boost/boost/units/operators.hpp deleted file mode 100644 index 6941aaff09..0000000000 --- a/contrib/restricted/boost/boost/units/operators.hpp +++ /dev/null @@ -1,164 +0,0 @@ -// 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_OPERATORS_HPP -#define BOOST_UNITS_OPERATORS_HPP - - -/// -/// \file -/// \brief Compile time operators and typeof helper classes. -/// \details -/// These operators declare the compile-time operators needed to support dimensional -/// analysis algebra. They require the use of Boost.Typeof, emulation or native. -/// Typeof helper classes define result type for heterogeneous operators on value types. -/// These must be defined through specialization for powers and roots. -/// - -#include <boost/static_assert.hpp> -#include <boost/type_traits/is_same.hpp> - -#include <boost/units/config.hpp> - -namespace boost { -namespace units { - -#if BOOST_UNITS_HAS_TYPEOF - -#ifndef BOOST_UNITS_DOXYGEN - -// to avoid need for default constructor and eliminate divide by zero errors. -namespace typeof_ { - -/// INTERNAL ONLY -template<class T> T make(); - -} // namespace typeof_ - -#endif - -#if (BOOST_UNITS_HAS_BOOST_TYPEOF) - -template<typename X> struct unary_plus_typeof_helper -{ - BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (+typeof_::make<X>())) - typedef typename nested::type type; -}; - -template<typename X> struct unary_minus_typeof_helper -{ - BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (-typeof_::make<X>())) - typedef typename nested::type type; -}; - -template<typename X,typename Y> struct add_typeof_helper -{ - BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make<X>()+typeof_::make<Y>())) - typedef typename nested::type type; -}; - -template<typename X,typename Y> struct subtract_typeof_helper -{ - BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make<X>()-typeof_::make<Y>())) - typedef typename nested::type type; -}; - -template<typename X,typename Y> struct multiply_typeof_helper -{ - BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make<X>()*typeof_::make<Y>())) - typedef typename nested::type type; -}; - -template<typename X,typename Y> struct divide_typeof_helper -{ - BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make<X>()/typeof_::make<Y>())) - typedef typename nested::type type; -}; - -#elif (BOOST_UNITS_HAS_MWERKS_TYPEOF) - -template<typename X> struct unary_plus_typeof_helper { typedef __typeof__((+typeof_::make<X>())) type; }; -template<typename X> struct unary_minus_typeof_helper { typedef __typeof__((-typeof_::make<X>())) type; }; - -template<typename X,typename Y> struct add_typeof_helper { typedef __typeof__((typeof_::make<X>()+typeof_::make<Y>())) type; }; -template<typename X,typename Y> struct subtract_typeof_helper { typedef __typeof__((typeof_::make<X>()-typeof_::make<Y>())) type; }; -template<typename X,typename Y> struct multiply_typeof_helper { typedef __typeof__((typeof_::make<X>()*typeof_::make<Y>())) type; }; -template<typename X,typename Y> struct divide_typeof_helper { typedef __typeof__((typeof_::make<X>()/typeof_::make<Y>())) type; }; - -#elif (BOOST_UNITS_HAS_GNU_TYPEOF) || defined(BOOST_UNITS_DOXYGEN) - -template<typename X> struct unary_plus_typeof_helper { typedef typeof((+typeof_::make<X>())) type; }; -template<typename X> struct unary_minus_typeof_helper { typedef typeof((-typeof_::make<X>())) type; }; - -template<typename X,typename Y> struct add_typeof_helper { typedef typeof((typeof_::make<X>()+typeof_::make<Y>())) type; }; -template<typename X,typename Y> struct subtract_typeof_helper { typedef typeof((typeof_::make<X>()-typeof_::make<Y>())) type; }; -template<typename X,typename Y> struct multiply_typeof_helper { typedef typeof((typeof_::make<X>()*typeof_::make<Y>())) type; }; -template<typename X,typename Y> struct divide_typeof_helper { typedef typeof((typeof_::make<X>()/typeof_::make<Y>())) type; }; - -#endif - -#else // BOOST_UNITS_HAS_TYPEOF - -template<typename X> struct unary_plus_typeof_helper { typedef X type; }; -template<typename X> struct unary_minus_typeof_helper { typedef X type; }; - -template<typename X,typename Y> struct add_typeof_helper { BOOST_STATIC_ASSERT((is_same<X,Y>::value == true)); typedef X type; }; -template<typename X,typename Y> struct subtract_typeof_helper { BOOST_STATIC_ASSERT((is_same<X,Y>::value == true)); typedef X type; }; -template<typename X,typename Y> struct multiply_typeof_helper { BOOST_STATIC_ASSERT((is_same<X,Y>::value == true)); typedef X type; }; -template<typename X,typename Y> struct divide_typeof_helper { BOOST_STATIC_ASSERT((is_same<X,Y>::value == true)); typedef X type; }; - -#endif // BOOST_UNITS_HAS_TYPEOF - -template<typename X,typename Y> struct power_typeof_helper; -template<typename X,typename Y> struct root_typeof_helper; - -#ifdef BOOST_UNITS_DOXYGEN - -/// A helper used by @c pow to raise -/// a runtime object to a compile time -/// known exponent. This template is intended to -/// be specialized. All specializations must -/// conform to the interface shown here. -/// @c Exponent will be either the exponent -/// passed to @c pow or @c static_rational<N> -/// for and integer argument, N. -template<typename BaseType, typename Exponent> -struct power_typeof_helper -{ - /// specifies the result type - typedef detail::unspecified type; - /// Carries out the runtime calculation. - static BOOST_CONSTEXPR type value(const BaseType& base); -}; - -/// A helper used by @c root to take a root -/// of a runtime object using a compile time -/// known index. This template is intended to -/// be specialized. All specializations must -/// conform to the interface shown here. -/// @c Index will be either the type -/// passed to @c pow or @c static_rational<N> -/// for and integer argument, N. -template<typename Radicand, typename Index> -struct root_typeof_helper -{ - /// specifies the result type - typedef detail::unspecified type; - /// Carries out the runtime calculation. - static BOOST_CONSTEXPR type value(const Radicand& base); -}; - -#endif - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_OPERATORS_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions.hpp b/contrib/restricted/boost/boost/units/physical_dimensions.hpp deleted file mode 100644 index 4137e1e03d..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// 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) 2007-2010 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_PHYSICAL_UNITS_HPP -#define BOOST_UNITS_PHYSICAL_UNITS_HPP - -/// -/// \file -/// \brief Physical dimensions according to the SI system. -/// \details This header includes all physical dimension headers for both base -/// and derived dimensions. -/// - -// Include all of the physical_dimension headers. - -// SI seven fundamental dimensions. -#include <boost/units/physical_dimensions/amount.hpp> -#include <boost/units/physical_dimensions/current.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/luminous_intensity.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -// Base dimensions are extended to include plane and solid angle for convenience. -#include <boost/units/physical_dimensions/plane_angle.hpp> -#include <boost/units/physical_dimensions/solid_angle.hpp> - -// Derived dimensions. -#include <boost/units/physical_dimensions/absorbed_dose.hpp> -#include <boost/units/physical_dimensions/acceleration.hpp> -#include <boost/units/physical_dimensions/action.hpp> -#include <boost/units/physical_dimensions/activity.hpp> -#include <boost/units/physical_dimensions/angular_acceleration.hpp> -#include <boost/units/physical_dimensions/angular_momentum.hpp> -#include <boost/units/physical_dimensions/angular_velocity.hpp> -#include <boost/units/physical_dimensions/area.hpp> -#include <boost/units/physical_dimensions/capacitance.hpp> -#include <boost/units/physical_dimensions/conductance.hpp> -#include <boost/units/physical_dimensions/conductivity.hpp> -#include <boost/units/physical_dimensions/dose_equivalent.hpp> -#include <boost/units/physical_dimensions/dynamic_viscosity.hpp> -#include <boost/units/physical_dimensions/electric_charge.hpp> -#include <boost/units/physical_dimensions/electric_potential.hpp> -#include <boost/units/physical_dimensions/energy.hpp> -#include <boost/units/physical_dimensions/energy_density.hpp> -#include <boost/units/physical_dimensions/force.hpp> -#include <boost/units/physical_dimensions/frequency.hpp> -#include <boost/units/physical_dimensions/heat_capacity.hpp> -#include <boost/units/physical_dimensions/illuminance.hpp> -#include <boost/units/physical_dimensions/impedance.hpp> -#include <boost/units/physical_dimensions/inductance.hpp> -#include <boost/units/physical_dimensions/kinematic_viscosity.hpp> -#include <boost/units/physical_dimensions/luminance.hpp> -#include <boost/units/physical_dimensions/luminous_flux.hpp> -#include <boost/units/physical_dimensions/magnetic_field_intensity.hpp> -#include <boost/units/physical_dimensions/magnetic_flux.hpp> -#include <boost/units/physical_dimensions/magnetic_flux_density.hpp> -#include <boost/units/physical_dimensions/mass_density.hpp> -#include <boost/units/physical_dimensions/molar_energy.hpp> -#include <boost/units/physical_dimensions/molar_heat_capacity.hpp> -#include <boost/units/physical_dimensions/moment_of_inertia.hpp> -#include <boost/units/physical_dimensions/momentum.hpp> -#include <boost/units/physical_dimensions/permeability.hpp> -#include <boost/units/physical_dimensions/permittivity.hpp> -#include <boost/units/physical_dimensions/power.hpp> -#include <boost/units/physical_dimensions/pressure.hpp> -#include <boost/units/physical_dimensions/reluctance.hpp> -#include <boost/units/physical_dimensions/resistance.hpp> -#include <boost/units/physical_dimensions/resistivity.hpp> -#include <boost/units/physical_dimensions/specific_energy.hpp> -#include <boost/units/physical_dimensions/specific_heat_capacity.hpp> -#include <boost/units/physical_dimensions/specific_volume.hpp> -#include <boost/units/physical_dimensions/stress.hpp> -#include <boost/units/physical_dimensions/surface_density.hpp> -#include <boost/units/physical_dimensions/surface_tension.hpp> -#include <boost/units/physical_dimensions/thermal_conductivity.hpp> -#include <boost/units/physical_dimensions/torque.hpp> -#include <boost/units/physical_dimensions/velocity.hpp> -#include <boost/units/physical_dimensions/volume.hpp> -#include <boost/units/physical_dimensions/wavenumber.hpp> - -#endif // BOOST_UNITS_PHYSICAL_UNITS_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/absorbed_dose.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/absorbed_dose.hpp deleted file mode 100644 index c62ed09b6d..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/absorbed_dose.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_ABSORBED_DOSE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ABSORBED_DOSE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for absorbed dose : L^2 T^-2 -typedef derived_dimension<length_base_dimension,2, - time_base_dimension,-2>::type absorbed_dose_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ABSORBED_DOSE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/acceleration.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/acceleration.hpp deleted file mode 100644 index 8f25c86364..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/acceleration.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_ACCELERATION_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ACCELERATION_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for acceleration : L T^-2 -typedef derived_dimension<length_base_dimension,1, - time_base_dimension,-2>::type acceleration_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ACCELERATION_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/action.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/action.hpp deleted file mode 100644 index cf38d324bd..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/action.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_ACTION_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ACTION_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for action : L^2 M T^-1 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-1>::type action_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ACTION_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/activity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/activity.hpp deleted file mode 100644 index 035cd44433..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/activity.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// 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_ACTIVITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ACTIVITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for activity : T^-1 -typedef derived_dimension<time_base_dimension,-1>::type activity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ACTIVITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/amount.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/amount.hpp deleted file mode 100644 index 6d9d4b3a48..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/amount.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_AMOUNT_BASE_DIMENSION_HPP -#define BOOST_UNITS_AMOUNT_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of amount -struct amount_base_dimension : - boost::units::base_dimension<amount_base_dimension,-4> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::amount_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// dimension of amount of substance (N) -typedef amount_base_dimension::dimension_type amount_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_AMOUNT_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/angular_acceleration.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/angular_acceleration.hpp deleted file mode 100644 index 79a3a14beb..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/angular_acceleration.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_ANGULAR_ACCELERATION_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ANGULAR_ACCELERATION_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/plane_angle.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for angular acceleration : T^-2 QP -typedef derived_dimension<time_base_dimension,-2, - plane_angle_base_dimension,1>::type angular_acceleration_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ANGULAR_ACCELERATION_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/angular_momentum.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/angular_momentum.hpp deleted file mode 100644 index 0a86f88bc6..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/angular_momentum.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_ANGULAR_MOMENTUM_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ANGULAR_MOMENTUM_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/plane_angle.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for angular momentum : L^2 M T^-1 QP^-1 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-1, - plane_angle_base_dimension,-1>::type angular_momentum_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ANGULAR_MOMENTUM_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/angular_velocity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/angular_velocity.hpp deleted file mode 100644 index 5d7ea879b7..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/angular_velocity.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_ANGULAR_VELOCITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ANGULAR_VELOCITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/plane_angle.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for angular velocity : T^-1 QP -typedef derived_dimension<time_base_dimension,-1, - plane_angle_base_dimension,1>::type angular_velocity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ANGULAR_VELOCITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/area.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/area.hpp deleted file mode 100644 index 0d8cb0991e..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/area.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// 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_AREA_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_AREA_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for area : L^2 -typedef derived_dimension<length_base_dimension,2>::type area_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_AREA_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/capacitance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/capacitance.hpp deleted file mode 100644 index e7019a7c5b..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/capacitance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_CAPACITANCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_CAPACITANCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for capacitance : L^-2 M^-1 T^4 I^2 -typedef derived_dimension<length_base_dimension,-2, - mass_base_dimension,-1, - time_base_dimension,4, - current_base_dimension,2>::type capacitance_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CAPACITANCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/conductance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/conductance.hpp deleted file mode 100644 index 8405f92d39..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/conductance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_CONDUCTANCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_CONDUCTANCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for conductance : L^-2 M^-1 T^3 I^2 -typedef derived_dimension<length_base_dimension,-2, - mass_base_dimension,-1, - time_base_dimension,3, - current_base_dimension,2>::type conductance_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CONDUCTANCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/conductivity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/conductivity.hpp deleted file mode 100644 index d255915a5c..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/conductivity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_CONDUCTIVITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_CONDUCTIVITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for conductivity : L^-3 M^-1 T^3 I^2 -typedef derived_dimension<length_base_dimension,-3, - mass_base_dimension,-1, - time_base_dimension,3, - current_base_dimension,2>::type conductivity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CONDUCTIVITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/current.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/current.hpp deleted file mode 100644 index 6fa0e8924c..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/current.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_CURRENT_BASE_DIMENSION_HPP -#define BOOST_UNITS_CURRENT_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of current -struct current_base_dimension : - boost::units::base_dimension<current_base_dimension,-6> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::current_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// dimension of electric current (I) -typedef current_base_dimension::dimension_type current_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CURRENT_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/dose_equivalent.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/dose_equivalent.hpp deleted file mode 100644 index ae13d2f385..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/dose_equivalent.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_DOSE_EQUIVALENT_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_DOSE_EQUIVALENT_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for dose equivalent : L^2 T^-2 -typedef derived_dimension<length_base_dimension,2, - time_base_dimension,-2>::type dose_equivalent_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_DOSE_EQUIVALENT_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/dynamic_viscosity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/dynamic_viscosity.hpp deleted file mode 100644 index 029f1fabea..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/dynamic_viscosity.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_DYNAMIC_VISCOSITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_DYNAMIC_VISCOSITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for dynamic viscosity : M L^-1 T^-1 -typedef derived_dimension<mass_base_dimension,1, - length_base_dimension,-1, - time_base_dimension,-1>::type dynamic_viscosity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_DYNAMIC_VISCOSITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/electric_charge.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/electric_charge.hpp deleted file mode 100644 index 36836462c9..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/electric_charge.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_ELECTRIC_CHARGE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ELECTRIC_CHARGE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for electric charge : T^1 I^1 -typedef derived_dimension<time_base_dimension,1, - current_base_dimension,1>::type electric_charge_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ELECTRIC_CHARGE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/electric_potential.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/electric_potential.hpp deleted file mode 100644 index 1ef028c129..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/electric_potential.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_ELECTRIC_POTENTIAL_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ELECTRIC_POTENTIAL_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for electric potential : L^2 M T^-3 I^-1 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-3, - current_base_dimension,-1>::type electric_potential_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ELECTRIC_POTENTIAL_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/energy.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/energy.hpp deleted file mode 100644 index bf0dbe34a9..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/energy.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_ENERGY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ENERGY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for energy : L^2 M T^-2 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-2>::type energy_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ENERGY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/energy_density.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/energy_density.hpp deleted file mode 100644 index d30e1e122b..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/energy_density.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_ENERGY_DENSITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ENERGY_DENSITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for energy density : L^-1 M^1 T^-2 -typedef derived_dimension<length_base_dimension,-1, - mass_base_dimension,1, - time_base_dimension,-2>::type energy_density_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ENERGY_DENSITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/force.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/force.hpp deleted file mode 100644 index a1ed955b16..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/force.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_FORCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_FORCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for force : L M T^-2 -typedef derived_dimension<length_base_dimension,1, - mass_base_dimension,1, - time_base_dimension,-2>::type force_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_FORCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/frequency.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/frequency.hpp deleted file mode 100644 index e2af7ee048..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/frequency.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// 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_FREQUENCY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_FREQUENCY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for frequency : T^-1 -typedef derived_dimension<time_base_dimension,-1>::type frequency_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_FREQUENCY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/heat_capacity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/heat_capacity.hpp deleted file mode 100644 index 3cbfa57c22..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/heat_capacity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_HEAT_CAPACITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_HEAT_CAPACITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for heat capacity : L^2 M T^-2 Theta^-1 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-2, - temperature_base_dimension,-1>::type heat_capacity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_HEAT_CAPACITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/illuminance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/illuminance.hpp deleted file mode 100644 index a24daf476a..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/illuminance.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_ILLUMINANCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_ILLUMINANCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/luminous_intensity.hpp> -#include <boost/units/physical_dimensions/solid_angle.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for illuminance : L^-2 I QS -typedef derived_dimension<length_base_dimension,-2, - luminous_intensity_base_dimension,1, - solid_angle_base_dimension,1>::type illuminance_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ILLUMINANCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/impedance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/impedance.hpp deleted file mode 100644 index 177fc607e4..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/impedance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_IMPEDANCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_IMPEDANCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for impedance : L^2 M T^-3 I^-2 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-3, - current_base_dimension,-2>::type impedance_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_IMPEDANCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/inductance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/inductance.hpp deleted file mode 100644 index 1506364c30..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/inductance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_INDUCTANCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_INDUCTANCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for inductance : L^2 M T^-2 I^-2 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-2, - current_base_dimension,-2>::type inductance_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_INDUCTANCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/information.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/information.hpp deleted file mode 100644 index c0c7145583..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/information.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_INFORMATION_BASE_DIMENSION_HPP -#define BOOST_UNITS_INFORMATION_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { -namespace units { - -/// base dimension of information -struct information_base_dimension : - boost::units::base_dimension<information_base_dimension, -700> -{ }; - -} // namespace units -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::information_base_dimension) - -#endif - -namespace boost { -namespace units { - -/// dimension of information -typedef information_base_dimension::dimension_type information_dimension; - -} // namespace units -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/kinematic_viscosity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/kinematic_viscosity.hpp deleted file mode 100644 index e5c5261eef..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/kinematic_viscosity.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_KINEMATIC_VISCOSITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_KINEMATIC_VISCOSITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for kinematic viscosity : L^2 T^-1 -typedef derived_dimension<length_base_dimension,2, - time_base_dimension,-1>::type kinematic_viscosity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_KINEMATIC_VISCOSITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/length.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/length.hpp deleted file mode 100644 index 22bbec43c3..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/length.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_LENGTH_BASE_DIMENSION_HPP -#define BOOST_UNITS_LENGTH_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of length -struct length_base_dimension : - boost::units::base_dimension<length_base_dimension, -9> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::length_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// dimension of length (L) -typedef length_base_dimension::dimension_type length_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_LENGTH_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/luminance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/luminance.hpp deleted file mode 100644 index f2e6f24873..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/luminance.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_LUMINANCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_LUMINANCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/luminous_intensity.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for luminance : L^-2 I -typedef derived_dimension<length_base_dimension,-2, - luminous_intensity_base_dimension,1>::type luminance_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_LUMINANCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/luminous_flux.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/luminous_flux.hpp deleted file mode 100644 index 4c725efeeb..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/luminous_flux.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_LUMINOUS_FLUX_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_LUMINOUS_FLUX_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/luminous_intensity.hpp> -#include <boost/units/physical_dimensions/solid_angle.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for luminous flux : I QS -typedef derived_dimension<luminous_intensity_base_dimension,1, - solid_angle_base_dimension,1>::type luminous_flux_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_LUMINOUS_FLUX_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/luminous_intensity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/luminous_intensity.hpp deleted file mode 100644 index 1da041d99a..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/luminous_intensity.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_LUMINOUS_INTENSITY_BASE_DIMENSION_HPP -#define BOOST_UNITS_LUMINOUS_INTENSITY_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of luminous intensity -struct luminous_intensity_base_dimension : - boost::units::base_dimension<luminous_intensity_base_dimension,-3> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::luminous_intensity_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// dimension of luminous intensity (J) -typedef luminous_intensity_base_dimension::dimension_type luminous_intensity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_LUMINOUS_INTENSITY_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_field_intensity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_field_intensity.hpp deleted file mode 100644 index 665e5bc26c..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_field_intensity.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_MAGNETIC_FIELD_INTENSITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_MAGNETIC_FIELD_INTENSITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for magnetic field intensity : L^-1 I -typedef derived_dimension<length_base_dimension,-1, - current_base_dimension,1>::type magnetic_field_intensity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MAGNETIC_FIELD_INTENSITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux.hpp deleted file mode 100644 index c247e5605d..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_MAGNETIC_FLUX_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_MAGNETIC_FLUX_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for magnetic flux : L^2 M T^-2 I^-1 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-2, - current_base_dimension,-1>::type magnetic_flux_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MAGNETIC_FLUX_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux_density.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux_density.hpp deleted file mode 100644 index d7fb7bbb14..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux_density.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_MAGNETIC_FLUX_DENSITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_MAGNETIC_FLUX_DENSITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for magnetic flux density : M T^-2 I^-1 -typedef derived_dimension<mass_base_dimension,1, - time_base_dimension,-2, - current_base_dimension,-1>::type magnetic_flux_density_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MAGNETIC_FLUX_DENSITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/mass.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/mass.hpp deleted file mode 100644 index 7aaa75ccfc..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/mass.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_MASS_BASE_DIMENSION_HPP -#define BOOST_UNITS_MASS_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of mass -struct mass_base_dimension : - boost::units::base_dimension<mass_base_dimension,-8> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::mass_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// dimension of mass (M) -typedef mass_base_dimension::dimension_type mass_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MASS_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/mass_density.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/mass_density.hpp deleted file mode 100644 index e632f2474f..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/mass_density.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_MASS_DENSITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_MASS_DENSITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for mass density : L^-3 M -typedef derived_dimension<length_base_dimension,-3, - mass_base_dimension,1>::type mass_density_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MASS_DENSITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/molar_energy.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/molar_energy.hpp deleted file mode 100644 index 2f83bbf551..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/molar_energy.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_MOLAR_ENERGY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_MOLAR_ENERGY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/amount.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for molar energy : L^2 M T^-2 N^-1 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-2, - amount_base_dimension,-1>::type molar_energy_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MOLAR_ENERGY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/molar_heat_capacity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/molar_heat_capacity.hpp deleted file mode 100644 index 48e147bdb3..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/molar_heat_capacity.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_MOLAR_HEAT_CAPACITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_MOLAR_HEAT_CAPACITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> -#include <boost/units/physical_dimensions/amount.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for molar heat capacity : L^2 M T^-2 Theta^-1 N^-1 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-2, - temperature_base_dimension,-1, - amount_base_dimension,-1>::type molar_heat_capacity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MOLAR_HEAT_CAPACITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/moment_of_inertia.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/moment_of_inertia.hpp deleted file mode 100644 index 58c85c80d1..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/moment_of_inertia.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_MOMENT_OF_INERTIA_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_MOMENT_OF_INERTIA_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/plane_angle.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for moment of inertia : L^2 M QP^-2 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - plane_angle_base_dimension,-2>::type moment_of_inertia_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MOMENT_OF_INERTIA_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/momentum.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/momentum.hpp deleted file mode 100644 index 13e8b8c67c..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/momentum.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_MOMENTUM_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_MOMENTUM_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for linear momentum : L M T^-1 -typedef derived_dimension<length_base_dimension,1, - mass_base_dimension,1, - time_base_dimension,-1>::type momentum_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_MOMENTUM_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/permeability.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/permeability.hpp deleted file mode 100644 index a0ea30cdaa..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/permeability.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_PERMEABILITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_PERMEABILITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for permeability : L M T^-2 I^-2 -typedef derived_dimension<length_base_dimension,1, - mass_base_dimension,1, - time_base_dimension,-2, - current_base_dimension,-2>::type permeability_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_PERMEABILITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/permittivity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/permittivity.hpp deleted file mode 100644 index 01994c5cea..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/permittivity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_PERMITTIVITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_PERMITTIVITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for permittivity : L^-3 M^-1 T^4 I^2 -typedef derived_dimension<length_base_dimension,-3, - mass_base_dimension,-1, - time_base_dimension,4, - current_base_dimension,2>::type permittivity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_PERMITTIVITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/plane_angle.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/plane_angle.hpp deleted file mode 100644 index ae700321f8..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/plane_angle.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_PLANE_ANGLE_BASE_DIMENSION_HPP -#define BOOST_UNITS_PLANE_ANGLE_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of plane angle -struct plane_angle_base_dimension : - boost::units::base_dimension<plane_angle_base_dimension,-2> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::plane_angle_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// base dimension of plane angle (QP) -typedef plane_angle_base_dimension::dimension_type plane_angle_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_PLANE_ANGLE_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/power.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/power.hpp deleted file mode 100644 index 77e04cf4ee..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/power.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_POWER_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_POWER_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for power : L^2 M T^-3 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-3>::type power_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_POWER_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/pressure.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/pressure.hpp deleted file mode 100644 index 666b4c704b..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/pressure.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_PRESSURE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_PRESSURE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for pressure : L^-1 M T^-2 -typedef derived_dimension<length_base_dimension,-1, - mass_base_dimension,1, - time_base_dimension,-2>::type pressure_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_PRESSURE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/reluctance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/reluctance.hpp deleted file mode 100644 index 56be33b480..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/reluctance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_RELUCTANCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_RELUCTANCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for reluctance : L^-2 M^-1 T^2 I^2 -typedef derived_dimension<length_base_dimension,-2, - mass_base_dimension,-1, - time_base_dimension,2, - current_base_dimension,2>::type reluctance_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_RELUCTANCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/resistance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/resistance.hpp deleted file mode 100644 index 3b1491d2bf..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/resistance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_RESISTANCE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_RESISTANCE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for resistance : L^2 M T^-3 I^-2 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-3, - current_base_dimension,-2>::type resistance_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_RESISTANCE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/resistivity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/resistivity.hpp deleted file mode 100644 index a82b900c47..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/resistivity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_RESISTIVITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_RESISTIVITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/current.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for resistivity : L^3 M T^-3 I^-2 -typedef derived_dimension<length_base_dimension,3, - mass_base_dimension,1, - time_base_dimension,-3, - current_base_dimension,-2>::type resistivity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_RESISTIVITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/solid_angle.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/solid_angle.hpp deleted file mode 100644 index 1d035c02f8..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/solid_angle.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_SOLID_ANGLE_BASE_DIMENSION_HPP -#define BOOST_UNITS_SOLID_ANGLE_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of solid angle -struct solid_angle_base_dimension : - boost::units::base_dimension<solid_angle_base_dimension,-1> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::solid_angle_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// base dimension of solid angle (QS) -typedef solid_angle_base_dimension::dimension_type solid_angle_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SOLID_ANGLE_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/specific_energy.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/specific_energy.hpp deleted file mode 100644 index e74a29371f..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/specific_energy.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_SPECIFIC_ENERGY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_SPECIFIC_ENERGY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for specific energy : L^2 T^-2 -typedef derived_dimension<length_base_dimension,2, - time_base_dimension,-2>::type specific_energy_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SPECIFIC_ENERGY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/specific_heat_capacity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/specific_heat_capacity.hpp deleted file mode 100644 index 9e48faec0c..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/specific_heat_capacity.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_SPECIFIC_HEAT_CAPACITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_SPECIFIC_HEAT_CAPACITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for specific heat capacity : L^2 T^-2 Theta^-1 -typedef derived_dimension<length_base_dimension,2, - time_base_dimension,-2, - temperature_base_dimension,-1>::type specific_heat_capacity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SPECIFIC_HEAT_CAPACITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/specific_volume.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/specific_volume.hpp deleted file mode 100644 index 85ed8896b7..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/specific_volume.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_SPECIFIC_VOLUME_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_SPECIFIC_VOLUME_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for specific volume : L^3 M^-1 -typedef derived_dimension<length_base_dimension,3, - mass_base_dimension,-1>::type specific_volume_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SPECIFIC_VOLUME_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/stress.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/stress.hpp deleted file mode 100644 index d989c8c405..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/stress.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_STRESS_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_STRESS_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for stress : L^-1 M T^-2 -typedef derived_dimension<length_base_dimension,-1, - mass_base_dimension,1, - time_base_dimension,-2>::type stress_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_STRESS_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/surface_density.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/surface_density.hpp deleted file mode 100644 index 898e8f4a24..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/surface_density.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_SURFACE_DENSITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_SURFACE_DENSITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for surface density : L^-2 M -typedef derived_dimension<length_base_dimension,-2, - mass_base_dimension,1>::type surface_density_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SURFACE_DENSITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/surface_tension.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/surface_tension.hpp deleted file mode 100644 index 630509fd6d..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/surface_tension.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SURFACE_TENSION_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_SURFACE_TENSION_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for surface tension : M T^-2 -typedef derived_dimension<mass_base_dimension,1, - time_base_dimension,-2>::type surface_tension_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SURFACE_TENSION_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/temperature.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/temperature.hpp deleted file mode 100644 index f6bc788203..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/temperature.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_TEMPERATURE_BASE_DIMENSION_HPP -#define BOOST_UNITS_TEMPERATURE_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of temperature -struct temperature_base_dimension : - boost::units::base_dimension<temperature_base_dimension,-5> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::temperature_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// dimension of temperature (Theta) -typedef temperature_base_dimension::dimension_type temperature_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_TEMPERATURE_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/thermal_conductivity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/thermal_conductivity.hpp deleted file mode 100644 index abc82c7f18..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/thermal_conductivity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_THERMAL_CONDUCTIVITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_THERMAL_CONDUCTIVITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/time.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for thermal_conductivity : L^1 M^1 T^-3 Theta^-1 -typedef derived_dimension<length_base_dimension,1, - mass_base_dimension,1, - time_base_dimension,-3, - temperature_base_dimension,-1>::type thermal_conductivity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_THERMAL_CONDUCTIVITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/time.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/time.hpp deleted file mode 100644 index 0b9a3e1f32..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/time.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_TIME_BASE_DIMENSION_HPP -#define BOOST_UNITS_TIME_BASE_DIMENSION_HPP - -#include <boost/units/config.hpp> -#include <boost/units/base_dimension.hpp> - -namespace boost { - -namespace units { - -/// base dimension of time -struct time_base_dimension : - boost::units::base_dimension<time_base_dimension,-7> -{ }; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TYPE(boost::units::time_base_dimension) - -#endif - -namespace boost { - -namespace units { - -/// dimension of time (T) -typedef time_base_dimension::dimension_type time_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_TIME_BASE_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/torque.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/torque.hpp deleted file mode 100644 index 61c41a139f..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/torque.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_TORQUE_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_TORQUE_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/plane_angle.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for torque : L^2 M T^-2 QP^-1 -typedef derived_dimension<length_base_dimension,2, - mass_base_dimension,1, - time_base_dimension,-2, - plane_angle_base_dimension,-1>::type torque_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_TORQUE_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/velocity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/velocity.hpp deleted file mode 100644 index eb3d41215a..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/velocity.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_VELOCITY_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_VELOCITY_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for velocity : L T^-1 -typedef derived_dimension<length_base_dimension,1, - time_base_dimension,-1>::type velocity_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_VELOCITY_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/volume.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/volume.hpp deleted file mode 100644 index a2cdd88f25..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/volume.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// 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_VOLUME_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_VOLUME_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for volume : l^3 -typedef derived_dimension<length_base_dimension,3>::type volume_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_VOLUME_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/wavenumber.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/wavenumber.hpp deleted file mode 100644 index abaf0acc5d..0000000000 --- a/contrib/restricted/boost/boost/units/physical_dimensions/wavenumber.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// 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_WAVENUMBER_DERIVED_DIMENSION_HPP -#define BOOST_UNITS_WAVENUMBER_DERIVED_DIMENSION_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/physical_dimensions/length.hpp> - -namespace boost { - -namespace units { - -/// derived dimension for wavenumber : L^-1 -typedef derived_dimension<length_base_dimension,-1>::type wavenumber_dimension; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_WAVENUMBER_DERIVED_DIMENSION_HPP diff --git a/contrib/restricted/boost/boost/units/pow.hpp b/contrib/restricted/boost/boost/units/pow.hpp deleted file mode 100644 index a6772eec67..0000000000 --- a/contrib/restricted/boost/boost/units/pow.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// 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_POW_HPP -#define BOOST_UNITS_POW_HPP - -#include <boost/type_traits/is_integral.hpp> - -#include <boost/units/operators.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/detail/static_rational_power.hpp> - -/// \file -/// \brief Raise values to exponents known at compile-time. - -namespace boost { - -namespace units { - -/// raise a value to a @c static_rational power. -template<class Rat,class Y> -BOOST_CONSTEXPR -inline typename power_typeof_helper<Y,Rat>::type -pow(const Y& x) -{ - return power_typeof_helper<Y,Rat>::value(x); -} - -/// raise a value to an integer power. -template<long N,class Y> -BOOST_CONSTEXPR -inline typename power_typeof_helper<Y,static_rational<N> >::type -pow(const Y& x) -{ - return power_typeof_helper<Y,static_rational<N> >::value(x); -} - -#ifndef BOOST_UNITS_DOXYGEN - -/// raise @c T to a @c static_rational power. -template<class T, long N,long D> -struct power_typeof_helper<T, static_rational<N,D> > -{ - typedef typename mpl::if_<boost::is_integral<T>, double, T>::type internal_type; - typedef detail::static_rational_power_impl<static_rational<N, D>, internal_type> impl; - typedef typename impl::type type; - - static BOOST_CONSTEXPR type value(const T& x) - { - return impl::call(x); - } -}; - -/// raise @c float to a @c static_rational power. -template<long N,long D> -struct power_typeof_helper<float, static_rational<N,D> > -{ - // N.B. pathscale doesn't accept inheritance for some reason. - typedef power_typeof_helper<double, static_rational<N,D> > base; - typedef typename base::type type; - static BOOST_CONSTEXPR type value(const double& x) - { - return base::value(x); - } -}; - -#endif - -/// take the @c static_rational root of a value. -template<class Rat,class Y> -BOOST_CONSTEXPR -typename root_typeof_helper<Y,Rat>::type -root(const Y& x) -{ - return root_typeof_helper<Y,Rat>::value(x); -} - -/// take the integer root of a value. -template<long N,class Y> -BOOST_CONSTEXPR -typename root_typeof_helper<Y,static_rational<N> >::type -root(const Y& x) -{ - return root_typeof_helper<Y,static_rational<N> >::value(x); -} - -#ifndef BOOST_UNITS_DOXYGEN - -/// take @c static_rational root of an @c T -template<class T, long N,long D> -struct root_typeof_helper<T,static_rational<N,D> > -{ - // N.B. pathscale doesn't accept inheritance for some reason. - typedef power_typeof_helper<T, static_rational<D,N> > base; - typedef typename base::type type; - static BOOST_CONSTEXPR type value(const T& x) - { - return(base::value(x)); - } -}; - -#endif - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_STATIC_RATIONAL_HPP diff --git a/contrib/restricted/boost/boost/units/quantity.hpp b/contrib/restricted/boost/boost/units/quantity.hpp deleted file mode 100644 index c6ae6e73d9..0000000000 --- a/contrib/restricted/boost/boost/units/quantity.hpp +++ /dev/null @@ -1,1280 +0,0 @@ -// 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) 2007-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_QUANTITY_HPP -#define BOOST_UNITS_QUANTITY_HPP - -#include <algorithm> - -#include <boost/config.hpp> -#include <boost/static_assert.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/mpl/and.hpp> -#include <boost/mpl/not.hpp> -#include <boost/mpl/or.hpp> -#include <boost/mpl/assert.hpp> -#include <boost/utility/enable_if.hpp> -#include <boost/type_traits/is_arithmetic.hpp> -#include <boost/type_traits/is_convertible.hpp> -#include <boost/type_traits/is_integral.hpp> -#include <boost/type_traits/is_same.hpp> - -#include <boost/units/conversion.hpp> -#include <boost/units/dimensionless_type.hpp> -#include <boost/units/homogeneous_system.hpp> -#include <boost/units/operators.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/dimensionless_unit.hpp> - -namespace boost { - -namespace units { - -namespace detail { - -template<class T, class Enable = void> -struct is_base_unit : mpl::false_ {}; - -template<class T> -struct is_base_unit<T, typename T::boost_units_is_base_unit_type> : mpl::true_ {}; - -template<class Source, class Destination> -struct is_narrowing_conversion_impl : mpl::bool_<(sizeof(Source) > sizeof(Destination))> {}; - -template<class Source, class Destination> -struct is_non_narrowing_conversion : - mpl::and_< - boost::is_convertible<Source, Destination>, - mpl::not_< - mpl::and_< - boost::is_arithmetic<Source>, - boost::is_arithmetic<Destination>, - mpl::or_< - mpl::and_< - is_integral<Destination>, - mpl::not_<is_integral<Source> > - >, - is_narrowing_conversion_impl<Source, Destination> - > - > - > - > -{}; - -template<> -struct is_non_narrowing_conversion<long double, double> : mpl::false_ {}; - -// msvc 7.1 needs extra disambiguation -template<class T, class U> -struct disable_if_is_same -{ - typedef void type; -}; - -template<class T> -struct disable_if_is_same<T, T> {}; - -} - -/// class declaration -template<class Unit,class Y> -class quantity -{ - // base units are not the same as units. - BOOST_MPL_ASSERT_NOT((detail::is_base_unit<Unit>)); - enum { force_instantiation_of_unit = sizeof(Unit) }; - typedef void (quantity::*unspecified_null_pointer_constant_type)(int*******); - public: - typedef quantity<Unit,Y> this_type; - - typedef Y value_type; - typedef Unit unit_type; - - BOOST_CONSTEXPR quantity() : val_() - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - BOOST_CONSTEXPR quantity(unspecified_null_pointer_constant_type) : val_() - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - BOOST_CONSTEXPR quantity(const this_type& source) : val_(source.val_) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - // Need to make sure that the destructor of - // Unit which contains the checking is instantiated, - // on sun. - #ifdef __SUNPRO_CC - ~quantity() { - unit_type force_unit_instantiation; - } - #endif - - //~quantity() { } - - BOOST_CXX14_CONSTEXPR this_type& operator=(const this_type& source) - { - val_ = source.val_; - - return *this; - } - - #ifndef BOOST_NO_SFINAE - - /// implicit conversion between value types is allowed if allowed for value types themselves - template<class YY> - BOOST_CONSTEXPR quantity(const quantity<Unit,YY>& source, - typename boost::enable_if<detail::is_non_narrowing_conversion<YY, Y> >::type* = 0) : - val_(source.value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - /// implicit conversion between value types is not allowed if not allowed for value types themselves - template<class YY> - explicit BOOST_CONSTEXPR quantity(const quantity<Unit,YY>& source, - typename boost::disable_if<detail::is_non_narrowing_conversion<YY, Y> >::type* = 0) : - val_(static_cast<Y>(source.value())) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - #else - - /// implicit conversion between value types is allowed if allowed for value types themselves - template<class YY> - BOOST_CONSTEXPR quantity(const quantity<Unit,YY>& source) : - val_(source.value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - BOOST_STATIC_ASSERT((boost::is_convertible<YY, Y>::value == true)); - } - - #endif - - /// implicit assignment between value types is allowed if allowed for value types themselves - template<class YY> - BOOST_CXX14_CONSTEXPR this_type& operator=(const quantity<Unit,YY>& source) - { - BOOST_STATIC_ASSERT((boost::is_convertible<YY, Y>::value == true)); - - *this = this_type(source); - - return *this; - } - - #ifndef BOOST_NO_SFINAE - - /// explicit conversion between different unit systems is allowed if implicit conversion is disallowed - template<class Unit2,class YY> - explicit - BOOST_CONSTEXPR quantity(const quantity<Unit2,YY>& source, - typename boost::disable_if< - mpl::and_< - //is_implicitly_convertible should be undefined when the - //units are not convertible at all - typename is_implicitly_convertible<Unit2,Unit>::type, - detail::is_non_narrowing_conversion<YY, Y> - >, - typename detail::disable_if_is_same<Unit, Unit2>::type - >::type* = 0) - : val_(conversion_helper<quantity<Unit2,YY>,this_type>::convert(source).value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true)); - } - - /// implicit conversion between different unit systems is allowed if each fundamental dimension is implicitly convertible - template<class Unit2,class YY> - BOOST_CONSTEXPR quantity(const quantity<Unit2,YY>& source, - typename boost::enable_if< - mpl::and_< - typename is_implicitly_convertible<Unit2,Unit>::type, - detail::is_non_narrowing_conversion<YY, Y> - >, - typename detail::disable_if_is_same<Unit, Unit2>::type - >::type* = 0) - : val_(conversion_helper<quantity<Unit2,YY>,this_type>::convert(source).value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true)); - } - - #else - - /// without SFINAE we can't distinguish between explicit and implicit conversions so - /// the conversion is always explicit - template<class Unit2,class YY> - explicit BOOST_CONSTEXPR quantity(const quantity<Unit2,YY>& source) - : val_(conversion_helper<quantity<Unit2,YY>,this_type>::convert(source).value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true)); - } - - #endif - - /// implicit assignment between different unit systems is allowed if each fundamental dimension is implicitly convertible - template<class Unit2,class YY> - BOOST_CXX14_CONSTEXPR this_type& operator=(const quantity<Unit2,YY>& source) - { - - BOOST_STATIC_ASSERT((is_implicitly_convertible<Unit2,unit_type>::value == true)); - BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true)); - - *this = this_type(source); - - return *this; - } - - BOOST_CONSTEXPR const value_type& value() const { return val_; } ///< constant accessor to value - - ///< can add a quantity of the same type if add_typeof_helper<value_type,value_type>::type is convertible to value_type - template<class Unit2, class YY> - BOOST_CXX14_CONSTEXPR this_type& operator+=(const quantity<Unit2, YY>& source) - { - BOOST_STATIC_ASSERT((boost::is_same<typename add_typeof_helper<Unit, Unit2>::type, Unit>::value)); - val_ += source.value(); - return *this; - } - - ///< can subtract a quantity of the same type if subtract_typeof_helper<value_type,value_type>::type is convertible to value_type - template<class Unit2, class YY> - BOOST_CXX14_CONSTEXPR this_type& operator-=(const quantity<Unit2, YY>& source) - { - BOOST_STATIC_ASSERT((boost::is_same<typename subtract_typeof_helper<Unit, Unit2>::type, Unit>::value)); - val_ -= source.value(); - return *this; - } - - template<class Unit2, class YY> - BOOST_CXX14_CONSTEXPR this_type& operator*=(const quantity<Unit2, YY>& source) - { - BOOST_STATIC_ASSERT((boost::is_same<typename multiply_typeof_helper<Unit, Unit2>::type, Unit>::value)); - val_ *= source.value(); - return *this; - } - - template<class Unit2, class YY> - BOOST_CXX14_CONSTEXPR this_type& operator/=(const quantity<Unit2, YY>& source) - { - BOOST_STATIC_ASSERT((boost::is_same<typename divide_typeof_helper<Unit, Unit2>::type, Unit>::value)); - val_ /= source.value(); - return *this; - } - - ///< can multiply a quantity by a scalar value_type if multiply_typeof_helper<value_type,value_type>::type is convertible to value_type - BOOST_CXX14_CONSTEXPR this_type& operator*=(const value_type& source) { val_ *= source; return *this; } - ///< can divide a quantity by a scalar value_type if divide_typeof_helper<value_type,value_type>::type is convertible to value_type - BOOST_CXX14_CONSTEXPR this_type& operator/=(const value_type& source) { val_ /= source; return *this; } - - /// Construct quantity directly from @c value_type (potentially dangerous). - static BOOST_CONSTEXPR this_type from_value(const value_type& val) { return this_type(val, 0); } - - protected: - explicit BOOST_CONSTEXPR quantity(const value_type& val, int) : val_(val) { } - - private: - value_type val_; -}; - -/// Specialization for dimensionless quantities. Implicit conversions between -/// unit systems are allowed because all dimensionless quantities are equivalent. -/// Implicit construction and assignment from and conversion to @c value_type is -/// also allowed. -template<class System,class Y> -class quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System),Y> -{ - public: - typedef quantity<unit<dimensionless_type,System>,Y> this_type; - - typedef Y value_type; - typedef System system_type; - typedef dimensionless_type dimension_type; - typedef unit<dimension_type,system_type> unit_type; - - BOOST_CONSTEXPR quantity() : val_() - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - /// construction from raw @c value_type is allowed - BOOST_CONSTEXPR quantity(value_type val) : val_(val) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - BOOST_CONSTEXPR quantity(const this_type& source) : val_(source.val_) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - //~quantity() { } - - BOOST_CXX14_CONSTEXPR this_type& operator=(const this_type& source) - { - val_ = source.val_; - - return *this; - } - - #ifndef BOOST_NO_SFINAE - - /// implicit conversion between value types is allowed if allowed for value types themselves - template<class YY> - BOOST_CONSTEXPR quantity(const quantity<unit<dimension_type,system_type>,YY>& source, - typename boost::enable_if<detail::is_non_narrowing_conversion<YY, Y> >::type* = 0) : - val_(source.value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - /// implicit conversion between value types is not allowed if not allowed for value types themselves - template<class YY> - explicit BOOST_CONSTEXPR quantity(const quantity<unit<dimension_type,system_type>,YY>& source, - typename boost::disable_if<detail::is_non_narrowing_conversion<YY, Y> >::type* = 0) : - val_(static_cast<Y>(source.value())) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - #else - - /// implicit conversion between value types is allowed if allowed for value types themselves - template<class YY> - BOOST_CONSTEXPR quantity(const quantity<unit<dimension_type,system_type>,YY>& source) : - val_(source.value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - BOOST_STATIC_ASSERT((boost::is_convertible<YY, Y>::value == true)); - } - - #endif - - /// implicit assignment between value types is allowed if allowed for value types themselves - template<class YY> - BOOST_CXX14_CONSTEXPR this_type& operator=(const quantity<unit<dimension_type,system_type>,YY>& source) - { - BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true)); - - *this = this_type(source); - - return *this; - } - - #if 1 - - /// implicit conversion between different unit systems is allowed - template<class System2, class Y2> - BOOST_CONSTEXPR quantity(const quantity<unit<dimensionless_type, System2>,Y2>& source, - #ifdef __SUNPRO_CC - typename boost::enable_if< - boost::mpl::and_< - detail::is_non_narrowing_conversion<Y2, Y>, - detail::is_dimensionless_system<System2> - > - >::type* = 0 - #else - typename boost::enable_if<detail::is_non_narrowing_conversion<Y2, Y> >::type* = 0, - typename detail::disable_if_is_same<System, System2>::type* = 0, - typename boost::enable_if<detail::is_dimensionless_system<System2> >::type* = 0 - #endif - ) : - val_(source.value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - /// implicit conversion between different unit systems is allowed - template<class System2, class Y2> - explicit BOOST_CONSTEXPR quantity(const quantity<unit<dimensionless_type, System2>,Y2>& source, - #ifdef __SUNPRO_CC - typename boost::enable_if< - boost::mpl::and_< - boost::mpl::not_<detail::is_non_narrowing_conversion<Y2, Y> >, - detail::is_dimensionless_system<System2> - > - >::type* = 0 - #else - typename boost::disable_if<detail::is_non_narrowing_conversion<Y2, Y> >::type* = 0, - typename detail::disable_if_is_same<System, System2>::type* = 0, - typename boost::enable_if<detail::is_dimensionless_system<System2> >::type* = 0 - #endif - ) : - val_(static_cast<Y>(source.value())) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - #else - - /// implicit conversion between different unit systems is allowed - template<class System2, class Y2> - BOOST_CONSTEXPR quantity(const quantity<unit<dimensionless_type,homogeneous_system<System2> >,Y2>& source) : - val_(source.value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - BOOST_STATIC_ASSERT((boost::is_convertible<Y2, Y>::value == true)); - } - - #endif - - /// conversion between different unit systems is explicit when - /// the units are not equivalent. - template<class System2, class Y2> - explicit BOOST_CONSTEXPR quantity(const quantity<unit<dimensionless_type, System2>,Y2>& source, - typename boost::disable_if<detail::is_dimensionless_system<System2> >::type* = 0) : - val_(conversion_helper<quantity<unit<dimensionless_type, System2>,Y2>, this_type>::convert(source).value()) - { - BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y); - } - - #ifndef __SUNPRO_CC - - /// implicit assignment between different unit systems is allowed - template<class System2> - BOOST_CXX14_CONSTEXPR this_type& operator=(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System2),Y>& source) - { - *this = this_type(source); - - return *this; - } - - #endif - - /// implicit conversion to @c value_type is allowed - BOOST_CONSTEXPR operator value_type() const { return val_; } - - BOOST_CONSTEXPR const value_type& value() const { return val_; } ///< constant accessor to value - - ///< can add a quantity of the same type if add_typeof_helper<value_type,value_type>::type is convertible to value_type - BOOST_CXX14_CONSTEXPR this_type& operator+=(const this_type& source) { val_ += source.val_; return *this; } - - ///< can subtract a quantity of the same type if subtract_typeof_helper<value_type,value_type>::type is convertible to value_type - BOOST_CXX14_CONSTEXPR this_type& operator-=(const this_type& source) { val_ -= source.val_; return *this; } - - ///< can multiply a quantity by a scalar value_type if multiply_typeof_helper<value_type,value_type>::type is convertible to value_type - BOOST_CXX14_CONSTEXPR this_type& operator*=(const value_type& val) { val_ *= val; return *this; } - - ///< can divide a quantity by a scalar value_type if divide_typeof_helper<value_type,value_type>::type is convertible to value_type - BOOST_CXX14_CONSTEXPR this_type& operator/=(const value_type& val) { val_ /= val; return *this; } - - /// Construct quantity directly from @c value_type. - static BOOST_CONSTEXPR this_type from_value(const value_type& val) { return this_type(val); } - - private: - value_type val_; -}; - -#ifdef BOOST_MSVC -// HACK: For some obscure reason msvc 8.0 needs these specializations -template<class System, class T> -class quantity<unit<int, System>, T> {}; -template<class T> -class quantity<int, T> {}; -#endif - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::quantity, 2) - -#endif - -namespace boost { - -namespace units { - -namespace detail { - -/// helper class for quantity_cast -template<class X,class Y> struct quantity_cast_helper; - -/// specialization for casting to the value type -template<class Y,class X,class Unit> -struct quantity_cast_helper<Y,quantity<Unit,X> > -{ - typedef Y type; - - BOOST_CONSTEXPR type operator()(quantity<Unit,X>& source) const { return const_cast<X&>(source.value()); } -}; - -/// specialization for casting to the value type -template<class Y,class X,class Unit> -struct quantity_cast_helper<Y,const quantity<Unit,X> > -{ - typedef Y type; - - BOOST_CONSTEXPR type operator()(const quantity<Unit,X>& source) const { return source.value(); } -}; - -} // namespace detail - -/// quantity_cast provides mutating access to underlying quantity value_type -template<class X,class Y> -inline -BOOST_CONSTEXPR -X -quantity_cast(Y& source) -{ - return detail::quantity_cast_helper<X,Y>()(source); -} - -template<class X,class Y> -inline -BOOST_CONSTEXPR -X -quantity_cast(const Y& source) -{ - return detail::quantity_cast_helper<X,const Y>()(source); -} - -/// swap quantities -template<class Unit,class Y> -inline void swap(quantity<Unit,Y>& lhs, quantity<Unit,Y>& rhs) -{ - using std::swap; - swap(quantity_cast<Y&>(lhs),quantity_cast<Y&>(rhs)); -} - -/// specialize unary plus typeof helper -/// INTERNAL ONLY -template<class Unit,class Y> -struct unary_plus_typeof_helper< quantity<Unit,Y> > -{ - typedef typename unary_plus_typeof_helper<Y>::type value_type; - typedef typename unary_plus_typeof_helper<Unit>::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// specialize unary minus typeof helper -/// INTERNAL ONLY -template<class Unit,class Y> -struct unary_minus_typeof_helper< quantity<Unit,Y> > -{ - typedef typename unary_minus_typeof_helper<Y>::type value_type; - typedef typename unary_minus_typeof_helper<Unit>::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// specialize add typeof helper -/// INTERNAL ONLY -template<class Unit1, - class Unit2, - class X, - class Y> -struct add_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> > -{ - typedef typename add_typeof_helper<X,Y>::type value_type; - typedef typename add_typeof_helper<Unit1,Unit2>::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// for sun CC we need to invoke SFINAE at -/// the top level, otherwise it will silently -/// return int. -template<class Dim1, class System1, - class Dim2, class System2, - class X, - class Y> -struct add_typeof_helper< quantity<unit<Dim1, System1>,X>,quantity<unit<Dim2, System2>,Y> > -{ -}; - -template<class Dim, - class System, - class X, - class Y> -struct add_typeof_helper< quantity<unit<Dim, System>,X>,quantity<unit<Dim, System>,Y> > -{ - typedef typename add_typeof_helper<X,Y>::type value_type; - typedef unit<Dim, System> unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// specialize subtract typeof helper -/// INTERNAL ONLY -template<class Unit1, - class Unit2, - class X, - class Y> -struct subtract_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> > -{ - typedef typename subtract_typeof_helper<X,Y>::type value_type; - typedef typename subtract_typeof_helper<Unit1,Unit2>::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -// Force adding different units to fail on sun. -template<class Dim1, class System1, - class Dim2, class System2, - class X, - class Y> -struct subtract_typeof_helper< quantity<unit<Dim1, System1>,X>,quantity<unit<Dim2, System2>,Y> > -{ -}; - -template<class Dim, - class System, - class X, - class Y> -struct subtract_typeof_helper< quantity<unit<Dim, System>,X>,quantity<unit<Dim, System>,Y> > -{ - typedef typename subtract_typeof_helper<X,Y>::type value_type; - typedef unit<Dim, System> unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// scalar times unit typeof helper -/// INTERNAL ONLY -template<class System, - class Dim, - class X> -struct multiply_typeof_helper< X,unit<Dim,System> > -{ - typedef X value_type; - typedef unit<Dim,System> unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// unit times scalar typeof helper -/// INTERNAL ONLY -template<class System, - class Dim, - class X> -struct multiply_typeof_helper< unit<Dim,System>,X > -{ - typedef X value_type; - typedef unit<Dim,System> unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// scalar times quantity typeof helper -/// INTERNAL ONLY -template<class Unit, - class X, - class Y> -struct multiply_typeof_helper< X,quantity<Unit,Y> > -{ - typedef typename multiply_typeof_helper<X,Y>::type value_type; - typedef Unit unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// disambiguate -/// INTERNAL ONLY -template<class Unit, - class Y> -struct multiply_typeof_helper< one,quantity<Unit,Y> > -{ - typedef quantity<Unit,Y> type; -}; - -/// quantity times scalar typeof helper -/// INTERNAL ONLY -template<class Unit, - class X, - class Y> -struct multiply_typeof_helper< quantity<Unit,X>,Y > -{ - typedef typename multiply_typeof_helper<X,Y>::type value_type; - typedef Unit unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// disambiguate -/// INTERNAL ONLY -template<class Unit, - class X> -struct multiply_typeof_helper< quantity<Unit,X>,one > -{ - typedef quantity<Unit,X> type; -}; - -/// unit times quantity typeof helper -/// INTERNAL ONLY -template<class Unit, - class System, - class Dim, - class X> -struct multiply_typeof_helper< unit<Dim,System>,quantity<Unit,X> > -{ - typedef X value_type; - typedef typename multiply_typeof_helper< unit<Dim,System>,Unit >::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// quantity times unit typeof helper -/// INTERNAL ONLY -template<class Unit, - class System, - class Dim, - class X> -struct multiply_typeof_helper< quantity<Unit,X>,unit<Dim,System> > -{ - typedef X value_type; - typedef typename multiply_typeof_helper< Unit,unit<Dim,System> >::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// quantity times quantity typeof helper -/// INTERNAL ONLY -template<class Unit1, - class Unit2, - class X, - class Y> -struct multiply_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> > -{ - typedef typename multiply_typeof_helper<X,Y>::type value_type; - typedef typename multiply_typeof_helper<Unit1,Unit2>::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// scalar divided by unit typeof helper -/// INTERNAL ONLY -template<class System, - class Dim, - class X> -struct divide_typeof_helper< X,unit<Dim,System> > -{ - typedef X value_type; - typedef typename power_typeof_helper< unit<Dim,System>,static_rational<-1> >::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// unit divided by scalar typeof helper -/// INTERNAL ONLY -template<class System, - class Dim, - class X> -struct divide_typeof_helper< unit<Dim,System>,X > -{ - typedef typename divide_typeof_helper<X,X>::type value_type; - typedef unit<Dim,System> unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// scalar divided by quantity typeof helper -/// INTERNAL ONLY -template<class Unit, - class X, - class Y> -struct divide_typeof_helper< X,quantity<Unit,Y> > -{ - typedef typename divide_typeof_helper<X,Y>::type value_type; - typedef typename power_typeof_helper< Unit,static_rational<-1> >::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// disambiguate -/// INTERNAL ONLY -template<class Unit, - class Y> -struct divide_typeof_helper< one,quantity<Unit,Y> > -{ - typedef quantity<Unit,Y> type; -}; - -/// quantity divided by scalar typeof helper -/// INTERNAL ONLY -template<class Unit, - class X, - class Y> -struct divide_typeof_helper< quantity<Unit,X>,Y > -{ - typedef typename divide_typeof_helper<X,Y>::type value_type; - typedef Unit unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// disambiguate -/// INTERNAL ONLY -template<class Unit, - class X> -struct divide_typeof_helper< quantity<Unit,X>,one > -{ - typedef quantity<Unit,X> type; -}; - -/// unit divided by quantity typeof helper -/// INTERNAL ONLY -template<class Unit, - class System, - class Dim, - class X> -struct divide_typeof_helper< unit<Dim,System>,quantity<Unit,X> > -{ - typedef typename divide_typeof_helper<X,X>::type value_type; - typedef typename divide_typeof_helper< unit<Dim,System>,Unit >::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// quantity divided by unit typeof helper -/// INTERNAL ONLY -template<class Unit, - class System, - class Dim, - class X> -struct divide_typeof_helper< quantity<Unit,X>,unit<Dim,System> > -{ - typedef X value_type; - typedef typename divide_typeof_helper< Unit,unit<Dim,System> >::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// quantity divided by quantity typeof helper -/// INTERNAL ONLY -template<class Unit1, - class Unit2, - class X, - class Y> -struct divide_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> > -{ - typedef typename divide_typeof_helper<X,Y>::type value_type; - typedef typename divide_typeof_helper<Unit1,Unit2>::type unit_type; - typedef quantity<unit_type,value_type> type; -}; - -/// specialize power typeof helper -/// INTERNAL ONLY -template<class Unit,long N,long D,class Y> -struct power_typeof_helper< quantity<Unit,Y>,static_rational<N,D> > -{ - typedef typename power_typeof_helper<Y,static_rational<N,D> >::type value_type; - typedef typename power_typeof_helper<Unit,static_rational<N,D> >::type unit_type; - typedef quantity<unit_type,value_type> type; - - static BOOST_CONSTEXPR type value(const quantity<Unit,Y>& x) - { - return type::from_value(power_typeof_helper<Y,static_rational<N,D> >::value(x.value())); - } -}; - -/// specialize root typeof helper -/// INTERNAL ONLY -template<class Unit,long N,long D,class Y> -struct root_typeof_helper< quantity<Unit,Y>,static_rational<N,D> > -{ - typedef typename root_typeof_helper<Y,static_rational<N,D> >::type value_type; - typedef typename root_typeof_helper<Unit,static_rational<N,D> >::type unit_type; - typedef quantity<unit_type,value_type> type; - - static BOOST_CONSTEXPR type value(const quantity<Unit,Y>& x) - { - return type::from_value(root_typeof_helper<Y,static_rational<N,D> >::value(x.value())); - } -}; - -/// runtime unit times scalar -/// INTERNAL ONLY -template<class System, - class Dim, - class Y> -inline -BOOST_CONSTEXPR -typename multiply_typeof_helper< unit<Dim,System>,Y >::type -operator*(const unit<Dim,System>&,const Y& rhs) -{ - typedef typename multiply_typeof_helper< unit<Dim,System>,Y >::type type; - - return type::from_value(rhs); -} - -/// runtime unit divided by scalar -template<class System, - class Dim, - class Y> -inline -BOOST_CONSTEXPR -typename divide_typeof_helper< unit<Dim,System>,Y >::type -operator/(const unit<Dim,System>&,const Y& rhs) -{ - typedef typename divide_typeof_helper<unit<Dim,System>,Y>::type type; - - return type::from_value(Y(1)/rhs); -} - -/// runtime scalar times unit -template<class System, - class Dim, - class Y> -inline -BOOST_CONSTEXPR -typename multiply_typeof_helper< Y,unit<Dim,System> >::type -operator*(const Y& lhs,const unit<Dim,System>&) -{ - typedef typename multiply_typeof_helper< Y,unit<Dim,System> >::type type; - - return type::from_value(lhs); -} - -/// runtime scalar divided by unit -template<class System, - class Dim, - class Y> -inline -BOOST_CONSTEXPR -typename divide_typeof_helper< Y,unit<Dim,System> >::type -operator/(const Y& lhs,const unit<Dim,System>&) -{ - typedef typename divide_typeof_helper< Y,unit<Dim,System> >::type type; - - return type::from_value(lhs); -} - -///// runtime quantity times scalar -//template<class Unit, -// class X, -// class Y> -//inline -//BOOST_CONSTEXPR -//typename multiply_typeof_helper< quantity<Unit,X>,Y >::type -//operator*(const quantity<Unit,X>& lhs,const Y& rhs) -//{ -// typedef typename multiply_typeof_helper< quantity<Unit,X>,Y >::type type; -// -// return type::from_value(lhs.value()*rhs); -//} -// -///// runtime scalar times quantity -//template<class Unit, -// class X, -// class Y> -//inline -//BOOST_CONSTEXPR -//typename multiply_typeof_helper< X,quantity<Unit,Y> >::type -//operator*(const X& lhs,const quantity<Unit,Y>& rhs) -//{ -// typedef typename multiply_typeof_helper< X,quantity<Unit,Y> >::type type; -// -// return type::from_value(lhs*rhs.value()); -//} - -/// runtime quantity times scalar -template<class Unit, - class X> -inline -BOOST_CONSTEXPR -typename multiply_typeof_helper< quantity<Unit,X>,X >::type -operator*(const quantity<Unit,X>& lhs,const X& rhs) -{ - typedef typename multiply_typeof_helper< quantity<Unit,X>,X >::type type; - - return type::from_value(lhs.value()*rhs); -} - -/// runtime scalar times quantity -template<class Unit, - class X> -inline -BOOST_CONSTEXPR -typename multiply_typeof_helper< X,quantity<Unit,X> >::type -operator*(const X& lhs,const quantity<Unit,X>& rhs) -{ - typedef typename multiply_typeof_helper< X,quantity<Unit,X> >::type type; - - return type::from_value(lhs*rhs.value()); -} - -///// runtime quantity divided by scalar -//template<class Unit, -// class X, -// class Y> -//inline -//BOOST_CONSTEXPR -//typename divide_typeof_helper< quantity<Unit,X>,Y >::type -//operator/(const quantity<Unit,X>& lhs,const Y& rhs) -//{ -// typedef typename divide_typeof_helper< quantity<Unit,X>,Y >::type type; -// -// return type::from_value(lhs.value()/rhs); -//} -// -///// runtime scalar divided by quantity -//template<class Unit, -// class X, -// class Y> -//inline -//BOOST_CONSTEXPR -//typename divide_typeof_helper< X,quantity<Unit,Y> >::type -//operator/(const X& lhs,const quantity<Unit,Y>& rhs) -//{ -// typedef typename divide_typeof_helper< X,quantity<Unit,Y> >::type type; -// -// return type::from_value(lhs/rhs.value()); -//} - -/// runtime quantity divided by scalar -template<class Unit, - class X> -inline -BOOST_CONSTEXPR -typename divide_typeof_helper< quantity<Unit,X>,X >::type -operator/(const quantity<Unit,X>& lhs,const X& rhs) -{ - typedef typename divide_typeof_helper< quantity<Unit,X>,X >::type type; - - return type::from_value(lhs.value()/rhs); -} - -/// runtime scalar divided by quantity -template<class Unit, - class X> -inline -BOOST_CONSTEXPR -typename divide_typeof_helper< X,quantity<Unit,X> >::type -operator/(const X& lhs,const quantity<Unit,X>& rhs) -{ - typedef typename divide_typeof_helper< X,quantity<Unit,X> >::type type; - - return type::from_value(lhs/rhs.value()); -} - -/// runtime unit times quantity -template<class System1, - class Dim1, - class Unit2, - class Y> -inline -BOOST_CONSTEXPR -typename multiply_typeof_helper< unit<Dim1,System1>,quantity<Unit2,Y> >::type -operator*(const unit<Dim1,System1>&,const quantity<Unit2,Y>& rhs) -{ - typedef typename multiply_typeof_helper< unit<Dim1,System1>,quantity<Unit2,Y> >::type type; - - return type::from_value(rhs.value()); -} - -/// runtime unit divided by quantity -template<class System1, - class Dim1, - class Unit2, - class Y> -inline -BOOST_CONSTEXPR -typename divide_typeof_helper< unit<Dim1,System1>,quantity<Unit2,Y> >::type -operator/(const unit<Dim1,System1>&,const quantity<Unit2,Y>& rhs) -{ - typedef typename divide_typeof_helper< unit<Dim1,System1>,quantity<Unit2,Y> >::type type; - - return type::from_value(Y(1)/rhs.value()); -} - -/// runtime quantity times unit -template<class Unit1, - class System2, - class Dim2, - class Y> -inline -BOOST_CONSTEXPR -typename multiply_typeof_helper< quantity<Unit1,Y>,unit<Dim2,System2> >::type -operator*(const quantity<Unit1,Y>& lhs,const unit<Dim2,System2>&) -{ - typedef typename multiply_typeof_helper< quantity<Unit1,Y>,unit<Dim2,System2> >::type type; - - return type::from_value(lhs.value()); -} - -/// runtime quantity divided by unit -template<class Unit1, - class System2, - class Dim2, - class Y> -inline -BOOST_CONSTEXPR -typename divide_typeof_helper< quantity<Unit1,Y>,unit<Dim2,System2> >::type -operator/(const quantity<Unit1,Y>& lhs,const unit<Dim2,System2>&) -{ - typedef typename divide_typeof_helper< quantity<Unit1,Y>,unit<Dim2,System2> >::type type; - - return type::from_value(lhs.value()); -} - -/// runtime unary plus quantity -template<class Unit,class Y> -BOOST_CONSTEXPR -typename unary_plus_typeof_helper< quantity<Unit,Y> >::type -operator+(const quantity<Unit,Y>& val) -{ - typedef typename unary_plus_typeof_helper< quantity<Unit,Y> >::type type; - - return type::from_value(+val.value()); -} - -/// runtime unary minus quantity -template<class Unit,class Y> -BOOST_CONSTEXPR -typename unary_minus_typeof_helper< quantity<Unit,Y> >::type -operator-(const quantity<Unit,Y>& val) -{ - typedef typename unary_minus_typeof_helper< quantity<Unit,Y> >::type type; - - return type::from_value(-val.value()); -} - -/// runtime quantity plus quantity -template<class Unit1, - class Unit2, - class X, - class Y> -inline -BOOST_CONSTEXPR -typename add_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type -operator+(const quantity<Unit1,X>& lhs, - const quantity<Unit2,Y>& rhs) -{ - typedef typename add_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type type; - - return type::from_value(lhs.value()+rhs.value()); -} - -/// runtime quantity minus quantity -template<class Unit1, - class Unit2, - class X, - class Y> -inline -BOOST_CONSTEXPR -typename subtract_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type -operator-(const quantity<Unit1,X>& lhs, - const quantity<Unit2,Y>& rhs) -{ - typedef typename subtract_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type type; - - return type::from_value(lhs.value()-rhs.value()); -} - -/// runtime quantity times quantity -template<class Unit1, - class Unit2, - class X, - class Y> -inline -BOOST_CONSTEXPR -typename multiply_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type -operator*(const quantity<Unit1,X>& lhs, - const quantity<Unit2,Y>& rhs) -{ - typedef typename multiply_typeof_helper< quantity<Unit1,X>, - quantity<Unit2,Y> >::type type; - - return type::from_value(lhs.value()*rhs.value()); -} - -/// runtime quantity divided by quantity -template<class Unit1, - class Unit2, - class X, - class Y> -inline -BOOST_CONSTEXPR -typename divide_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type -operator/(const quantity<Unit1,X>& lhs, - const quantity<Unit2,Y>& rhs) -{ - typedef typename divide_typeof_helper< quantity<Unit1,X>, - quantity<Unit2,Y> >::type type; - - return type::from_value(lhs.value()/rhs.value()); -} - -/// runtime operator== -template<class Unit, - class X, - class Y> -inline -BOOST_CONSTEXPR -bool -operator==(const quantity<Unit,X>& val1, - const quantity<Unit,Y>& val2) -{ - return val1.value() == val2.value(); -} - -/// runtime operator!= -template<class Unit, - class X, - class Y> -inline -BOOST_CONSTEXPR -bool -operator!=(const quantity<Unit,X>& val1, - const quantity<Unit,Y>& val2) -{ - return val1.value() != val2.value(); -} - -/// runtime operator< -template<class Unit, - class X, - class Y> -inline -BOOST_CONSTEXPR -bool -operator<(const quantity<Unit,X>& val1, - const quantity<Unit,Y>& val2) -{ - return val1.value() < val2.value(); -} - -/// runtime operator<= -template<class Unit, - class X, - class Y> -inline -BOOST_CONSTEXPR -bool -operator<=(const quantity<Unit,X>& val1, - const quantity<Unit,Y>& val2) -{ - return val1.value() <= val2.value(); -} - -/// runtime operator> -template<class Unit, - class X, - class Y> -inline -BOOST_CONSTEXPR -bool -operator>(const quantity<Unit,X>& val1, - const quantity<Unit,Y>& val2) -{ - return val1.value() > val2.value(); -} - -/// runtime operator>= -template<class Unit, - class X, - class Y> -inline -BOOST_CONSTEXPR -bool -operator>=(const quantity<Unit,X>& val1, - const quantity<Unit,Y>& val2) -{ - return val1.value() >= val2.value(); -} - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_QUANTITY_HPP diff --git a/contrib/restricted/boost/boost/units/reduce_unit.hpp b/contrib/restricted/boost/boost/units/reduce_unit.hpp deleted file mode 100644 index fe0050aee1..0000000000 --- a/contrib/restricted/boost/boost/units/reduce_unit.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// 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) 2007-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_REDUCE_UNIT_HPP_INCLUDED -#define BOOST_UNITS_REDUCE_UNIT_HPP_INCLUDED - -/// \file -/// \brief Returns a unique type for every unit. - -namespace boost { -namespace units { - -#ifdef BOOST_UNITS_DOXYGEN - -/// Returns a unique type for every unit. -template<class Unit> -struct reduce_unit { - typedef detail::unspecified type; -}; - -#else - -// default implementation: return Unit unchanged. -template<class Unit> -struct reduce_unit { - typedef Unit type; -}; - -#endif - -} -} - -#endif diff --git a/contrib/restricted/boost/boost/units/scale.hpp b/contrib/restricted/boost/boost/units/scale.hpp deleted file mode 100644 index 7d64cd548e..0000000000 --- a/contrib/restricted/boost/boost/units/scale.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// 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) 2007-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_SCALE_HPP_INCLUDED -#define BOOST_UNITS_SCALE_HPP_INCLUDED - -/// -/// \file -/// \brief 10^3 Engineering & 2^10 binary scaling factors for autoprefixing. -/// \details -/// - -#include <string> - -#include <boost/units/config.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/detail/one.hpp> -#include <boost/units/detail/static_rational_power.hpp> - -namespace boost { - -namespace units { - -template<class S, class Scale> -struct scaled_base_unit; - -/// class representing a scaling factor such as 10^3 -/// The exponent must be a static rational. -template<long Base, class Exponent> -struct scale -{ - BOOST_STATIC_CONSTEXPR long base = Base; - typedef Exponent exponent; - typedef double value_type; - static BOOST_CONSTEXPR value_type value() { return(detail::static_rational_power<Exponent>(static_cast<double>(base))); } - // These need to be defined in specializations for - // printing to work. - // static std::string name(); - // static std::string symbol(); -}; - -template<long Base, class Exponent> -BOOST_CONSTEXPR_OR_CONST long scale<Base, Exponent>::base; - -/// INTERNAL ONLY -template<long Base> -struct scale<Base, static_rational<0> > -{ - BOOST_STATIC_CONSTEXPR long base = Base; - typedef static_rational<0> exponent; - typedef one value_type; - static BOOST_CONSTEXPR one value() { return(one()); } - static std::string name() { return(""); } - static std::string symbol() { return(""); } -}; - -template<long Base> -BOOST_CONSTEXPR_OR_CONST long scale<Base, static_rational<0> >::base; - -template<long Base,class Exponent> -std::string symbol_string(const scale<Base,Exponent>&) -{ - return scale<Base,Exponent>::symbol(); -} - -template<long Base,class Exponent> -std::string name_string(const scale<Base,Exponent>&) -{ - return scale<Base,Exponent>::name(); -} - -#ifndef BOOST_UNITS_DOXYGEN - -#define BOOST_UNITS_SCALE_SPECIALIZATION(base_,exponent_,val_,name_,symbol_) \ -template<> \ -struct scale<base_, exponent_ > \ -{ \ - BOOST_STATIC_CONSTEXPR long base = base_; \ - typedef exponent_ exponent; \ - typedef double value_type; \ - static BOOST_CONSTEXPR value_type value() { return(val_); } \ - static std::string name() { return(#name_); } \ - static std::string symbol() { return(#symbol_); } \ -} - -#define BOOST_UNITS_SCALE_DEF(exponent_,value_,name_,symbol_) \ -BOOST_UNITS_SCALE_SPECIALIZATION(10,static_rational<exponent_>,value_, name_, symbol_) - -BOOST_UNITS_SCALE_DEF(-24, 1e-24, yocto, y); -BOOST_UNITS_SCALE_DEF(-21, 1e-21, zepto, z); -BOOST_UNITS_SCALE_DEF(-18, 1e-18, atto, a); -BOOST_UNITS_SCALE_DEF(-15, 1e-15, femto, f); -BOOST_UNITS_SCALE_DEF(-12, 1e-12, pico, p); -BOOST_UNITS_SCALE_DEF(-9, 1e-9, nano, n); -BOOST_UNITS_SCALE_DEF(-6, 1e-6, micro, u); -BOOST_UNITS_SCALE_DEF(-3, 1e-3, milli, m); -BOOST_UNITS_SCALE_DEF(-2, 1e-2, centi, c); -BOOST_UNITS_SCALE_DEF(-1, 1e-1, deci, d); - -BOOST_UNITS_SCALE_DEF(1, 1e1, deka, da); -BOOST_UNITS_SCALE_DEF(2, 1e2, hecto, h); -BOOST_UNITS_SCALE_DEF(3, 1e3, kilo, k); -BOOST_UNITS_SCALE_DEF(6, 1e6, mega, M); -BOOST_UNITS_SCALE_DEF(9, 1e9, giga, G); -BOOST_UNITS_SCALE_DEF(12, 1e12, tera, T); -BOOST_UNITS_SCALE_DEF(15, 1e15, peta, P); -BOOST_UNITS_SCALE_DEF(18, 1e18, exa, E); -BOOST_UNITS_SCALE_DEF(21, 1e21, zetta, Z); -BOOST_UNITS_SCALE_DEF(24, 1e24, yotta, Y); - -BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<10>, 1024.0, kibi, Ki); -BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<20>, 1048576.0, mebi, Mi); -BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<30>, 1073741824.0, gibi, Gi); -BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<40>, 1099511627776.0, tebi, Ti); -BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<50>, 1125899906842624.0, pebi, Pi); -BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<60>, 1152921504606846976.0, exbi, Ei); -BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<70>, 1180591620717411303424.0, zebi, Zi); -BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<80>, 1208925819614629174706176.0, yobi, Yi); - -#undef BOOST_UNITS_SCALE_DEF -#undef BOOST_UNITS_SCALE_SPECIALIZATION - -#endif - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::scale, (long)(class)) - -#endif - -#endif diff --git a/contrib/restricted/boost/boost/units/scaled_base_unit.hpp b/contrib/restricted/boost/boost/units/scaled_base_unit.hpp deleted file mode 100644 index 24f9f4f6b6..0000000000 --- a/contrib/restricted/boost/boost/units/scaled_base_unit.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// 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_SCALED_BASE_UNIT_HPP_INCLUDED -#define BOOST_UNITS_SCALED_BASE_UNIT_HPP_INCLUDED - -#include <string> - -#include <boost/mpl/bool.hpp> -#include <boost/mpl/less.hpp> -#include <boost/type_traits/is_same.hpp> - -#include <boost/units/config.hpp> -#include <boost/units/dimension.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/units_fwd.hpp> - -namespace boost { - -namespace units { - -template<class T> -struct heterogeneous_system; - -template<class T, class D, class Scale> -struct heterogeneous_system_impl; - -template<class T, class E> -struct heterogeneous_system_dim; - -template<class T> -struct base_unit_info; - -/// INTERNAL ONLY -struct scaled_base_unit_tag {}; - -template<class S, class Scale> -struct scaled_base_unit -{ - /// INTERNAL ONLY - typedef void boost_units_is_base_unit_type; - typedef scaled_base_unit type; - typedef scaled_base_unit_tag tag; - typedef S system_type; - typedef Scale scale_type; - typedef typename S::dimension_type dimension_type; - -#ifdef BOOST_UNITS_DOXYGEN - - typedef detail::unspecified unit_type; - -#else - - typedef unit< - dimension_type, - heterogeneous_system< - heterogeneous_system_impl< - list< - heterogeneous_system_dim<scaled_base_unit,static_rational<1> >, - dimensionless_type - >, - dimension_type, - dimensionless_type - > - > - > unit_type; - -#endif - - static std::string symbol() - { - return(Scale::symbol() + base_unit_info<S>::symbol()); - } - static std::string name() - { - return(Scale::name() + base_unit_info<S>::name()); - } -}; - -} // namespace units - -} // namespace boost - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::scaled_base_unit, (class)(class)) - -#endif - -namespace boost { - -#ifndef BOOST_UNITS_DOXYGEN - -namespace mpl { - -/// INTERNAL ONLY -template<class Tag> -struct less_impl<boost::units::scaled_base_unit_tag, Tag> -{ - template<class T0, class T1> - struct apply : mpl::bool_< - mpl::less<typename T0::system_type, T1>::value || - (boost::is_same<typename T0::system_type, T1>::value && ((T0::scale_type::exponent::Numerator) < 0)) > {}; -}; - -/// INTERNAL ONLY -template<class Tag> -struct less_impl<Tag, boost::units::scaled_base_unit_tag> -{ - template<class T0, class T1> - struct apply : mpl::bool_< - mpl::less<T0, typename T1::system_type>::value || - (boost::is_same<T0, typename T1::system_type>::value && ((T1::scale_type::exponent::Numerator) > 0)) > {}; -}; - -/// INTERNAL ONLY -template<> -struct less_impl<boost::units::scaled_base_unit_tag, boost::units::scaled_base_unit_tag> -{ - template<class T0, class T1> - struct apply : mpl::bool_< - mpl::less<typename T0::system_type, typename T1::system_type>::value || - ((boost::is_same<typename T0::system_type, typename T1::system_type>::value) && - ((T0::scale_type::base) < (T1::scale_type::base) || - ((T0::scale_type::base) == (T1::scale_type::base) && - mpl::less<typename T0::scale_type::exponent, typename T1::scale_type::exponent>::value))) > {}; -}; - -} // namespace mpl - -#endif - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/static_constant.hpp b/contrib/restricted/boost/boost/units/static_constant.hpp deleted file mode 100644 index d3646adbda..0000000000 --- a/contrib/restricted/boost/boost/units/static_constant.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// 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_STATIC_CONSTANT_HPP -#define BOOST_UNITS_STATIC_CONSTANT_HPP - -#include <boost/units/config.hpp> - -#if defined(BOOST_NO_CXX11_CONSTEXPR) || defined(BOOST_UNITS_DOXYGEN) -/// A convenience macro that allows definition of static -/// constants in headers in an ODR-safe way. -# define BOOST_UNITS_STATIC_CONSTANT(name, type) \ -template<bool b> \ -struct name##_instance_t \ -{ \ - static const type instance; \ -}; \ - \ -namespace \ -{ \ - static const type& name = name##_instance_t<true>::instance; \ -} \ - \ -template<bool b> \ -const type name##_instance_t<b>::instance -#else -# define BOOST_UNITS_STATIC_CONSTANT(name, type) \ -BOOST_STATIC_CONSTEXPR type name -#endif - -/// A convenience macro for static constants with auto -/// type deduction. -#if BOOST_UNITS_HAS_TYPEOF - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \ -BOOST_TYPEOF_NESTED_TYPEDEF(name##_nested_t, value) \ -BOOST_UNITS_STATIC_CONSTANT(name, name##_nested_t::type) = (value) - -#elif BOOST_UNITS_HAS_MWERKS_TYPEOF - -#define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \ -BOOST_UNITS_STATIC_CONSTANT(name, __typeof__(value)) = (value) - -#elif BOOST_UNITS_HAS_GNU_TYPEOF - -#define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \ -BOOST_UNITS_STATIC_CONSTANT(name, typeof(value)) = (value) - -#endif // BOOST_UNITS_HAS_BOOST_TYPEOF - -#endif // BOOST_UNITS_HAS_TYPEOF - -#endif // BOOST_UNITS_STATIC_CONSTANT_HPP diff --git a/contrib/restricted/boost/boost/units/static_rational.hpp b/contrib/restricted/boost/boost/units/static_rational.hpp deleted file mode 100644 index 6d3d818739..0000000000 --- a/contrib/restricted/boost/boost/units/static_rational.hpp +++ /dev/null @@ -1,349 +0,0 @@ -// 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_STATIC_RATIONAL_HPP -#define BOOST_UNITS_STATIC_RATIONAL_HPP - -#include <boost/integer/common_factor_ct.hpp> -#include <boost/mpl/less.hpp> -#include <boost/mpl/arithmetic.hpp> - -#ifdef __BORLANDC__ -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/integral_c.hpp> -#include <boost/mpl/identity.hpp> -#endif - -#include <boost/units/config.hpp> -#include <boost/units/operators.hpp> - -/// \file -/// \brief Compile-time rational numbers and operators. - -namespace boost { - -namespace units { - -namespace detail { - -struct static_rational_tag {}; - -} - -typedef long integer_type; - -/// Compile time absolute value. -template<integer_type Value> -struct static_abs -{ - BOOST_STATIC_CONSTANT(integer_type,value = Value < 0 ? -Value : Value); -}; - -// Compile time rational number. -/** -This is an implementation of a compile time rational number, where @c static_rational<N,D> represents -a rational number with numerator @c N and denominator @c D. Because of the potential for ambiguity arising -from multiple equivalent values of @c static_rational (e.g. @c static_rational<6,2>==static_rational<3>), -static rationals should always be accessed through @c static_rational<N,D>::type. Template specialization -prevents instantiation of zero denominators (i.e. @c static_rational<N,0>). The following compile-time -arithmetic operators are provided for static_rational variables only (no operators are defined between -long and static_rational): - - @c mpl::negate - - @c mpl::plus - - @c mpl::minus - - @c mpl::times - - @c mpl::divides - -Neither @c static_power nor @c static_root are defined for @c static_rational. This is because template types -may not be floating point values, while powers and roots of rational numbers can produce floating point -values. -*/ -#ifdef __BORLANDC__ - -template<integer_type X> -struct make_integral_c { - typedef boost::mpl::integral_c<integer_type, X> type; -}; - -template<integer_type N,integer_type D = 1> -class static_rational -{ - public: - - typedef static_rational this_type; - - typedef boost::mpl::integral_c<integer_type, N> N_type; - typedef boost::mpl::integral_c<integer_type, D> D_type; - - typedef typename make_integral_c< - (::boost::integer::static_gcd< - ::boost::units::static_abs<N>::value, - ::boost::units::static_abs<D>::value - >::value)>::type gcd_type; - typedef typename boost::mpl::eval_if< - boost::mpl::less< - D_type, - boost::mpl::integral_c<integer_type, 0> - >, - boost::mpl::negate<gcd_type>, - gcd_type - >::type den_type; - - public: - // for mpl arithmetic support - typedef detail::static_rational_tag tag; - - BOOST_STATIC_CONSTANT(integer_type, Numerator = - (::boost::mpl::divides<N_type, den_type>::value)); - BOOST_STATIC_CONSTANT(integer_type, Denominator = - (::boost::mpl::divides<D_type, den_type>::value)); - - /// INTERNAL ONLY - typedef static_rational<N,D> this_type; - - /// static_rational<N,D> reduced by GCD - typedef static_rational< - (::boost::mpl::divides<N_type, den_type>::value), - (::boost::mpl::divides<D_type, den_type>::value) - > type; - - static BOOST_CONSTEXPR integer_type numerator() { return Numerator; } - static BOOST_CONSTEXPR integer_type denominator() { return Denominator; } - - // INTERNAL ONLY - BOOST_CONSTEXPR static_rational() { } - //~static_rational() { } -}; -#else -template<integer_type N,integer_type D = 1> -class static_rational -{ - private: - - BOOST_STATIC_CONSTEXPR integer_type nabs = static_abs<N>::value, - dabs = static_abs<D>::value; - - /// greatest common divisor of N and D - // need cast to signed because static_gcd returns unsigned long - BOOST_STATIC_CONSTEXPR integer_type den = - static_cast<integer_type>(boost::integer::static_gcd<nabs,dabs>::value) * ((D < 0) ? -1 : 1); - - public: - // for mpl arithmetic support - typedef detail::static_rational_tag tag; - - BOOST_STATIC_CONSTEXPR integer_type Numerator = N/den, - Denominator = D/den; - - /// INTERNAL ONLY - typedef static_rational<N,D> this_type; - - /// static_rational<N,D> reduced by GCD - typedef static_rational<Numerator,Denominator> type; - - static BOOST_CONSTEXPR integer_type numerator() { return Numerator; } - static BOOST_CONSTEXPR integer_type denominator() { return Denominator; } - - // INTERNAL ONLY - BOOST_CONSTEXPR static_rational() { } - //~static_rational() { } -}; -#endif - -} - -} - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::static_rational, (long)(long)) - -#endif - -namespace boost { - -namespace units { - -// prohibit zero denominator -template<integer_type N> class static_rational<N,0>; - -/// get decimal value of @c static_rational -template<class T,integer_type N,integer_type D> -inline BOOST_CONSTEXPR typename divide_typeof_helper<T,T>::type -value(const static_rational<N,D>&) -{ - return T(N)/T(D); -} - -} // namespace units - -#ifndef BOOST_UNITS_DOXYGEN - -namespace mpl { - -#ifdef __BORLANDC__ - -template<> -struct plus_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply { - typedef typename boost::units::static_rational< - ::boost::mpl::plus< - boost::mpl::times<typename T0::N_type, typename T1::D_type>, - boost::mpl::times<typename T1::N_type, typename T0::D_type> - >::value, - ::boost::mpl::times<typename T0::D_type, typename T1::D_type>::value - >::type type; - }; -}; - -template<> -struct minus_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply { - typedef typename boost::units::static_rational< - ::boost::mpl::minus< - boost::mpl::times<typename T0::N_type, typename T1::D_type>, - boost::mpl::times<typename T1::N_type, typename T0::D_type> - >::value, - ::boost::mpl::times<typename T0::D_type, typename T1::D_type>::value - >::type type; - }; -}; - -template<> -struct times_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply { - typedef typename boost::units::static_rational< - ::boost::mpl::times<typename T0::N_type, typename T1::N_type>::value, - ::boost::mpl::times<typename T0::D_type, typename T1::D_type>::value - >::type type; - }; -}; - -template<> -struct divides_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply { - typedef typename boost::units::static_rational< - ::boost::mpl::times<typename T0::N_type, typename T1::D_type>::value, - ::boost::mpl::times<typename T0::D_type, typename T1::N_type>::value - >::type type; - }; -}; - -template<> -struct negate_impl<boost::units::detail::static_rational_tag> -{ - template<class T0> - struct apply { - typedef typename boost::units::static_rational< - ::boost::mpl::negate<typename T0::N_type>::value, - ::boost::mpl::identity<T0>::type::Denominator - >::type type; - }; -}; - -template<> -struct less_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply - { - typedef mpl::bool_<((mpl::minus<T0, T1>::type::Numerator) < 0)> type; - }; -}; - -#else - -template<> -struct plus_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply { - typedef typename boost::units::static_rational< - T0::Numerator*T1::Denominator+T1::Numerator*T0::Denominator, - T0::Denominator*T1::Denominator - >::type type; - }; -}; - -template<> -struct minus_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply { - typedef typename boost::units::static_rational< - T0::Numerator*T1::Denominator-T1::Numerator*T0::Denominator, - T0::Denominator*T1::Denominator - >::type type; - }; -}; - -template<> -struct times_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply { - typedef typename boost::units::static_rational< - T0::Numerator*T1::Numerator, - T0::Denominator*T1::Denominator - >::type type; - }; -}; - -template<> -struct divides_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply { - typedef typename boost::units::static_rational< - T0::Numerator*T1::Denominator, - T0::Denominator*T1::Numerator - >::type type; - }; -}; - -template<> -struct negate_impl<boost::units::detail::static_rational_tag> -{ - template<class T0> - struct apply { - typedef typename boost::units::static_rational<-T0::Numerator,T0::Denominator>::type type; - }; -}; - -template<> -struct less_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag> -{ - template<class T0, class T1> - struct apply - { - typedef mpl::bool_<((mpl::minus<T0, T1>::type::Numerator) < 0)> type; - }; -}; - -#endif - - -} - -#endif - -} // namespace boost - -#endif // BOOST_UNITS_STATIC_RATIONAL_HPP diff --git a/contrib/restricted/boost/boost/units/systems/abstract.hpp b/contrib/restricted/boost/boost/units/systems/abstract.hpp deleted file mode 100644 index 9b449d68c8..0000000000 --- a/contrib/restricted/boost/boost/units/systems/abstract.hpp +++ /dev/null @@ -1,139 +0,0 @@ -// 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_ABSTRACT_HPP -#define BOOST_UNITS_ABSTRACT_HPP - -#include <string> - -#include <boost/units/conversion.hpp> -#include <boost/units/unit.hpp> - -#include <boost/units/make_system.hpp> -#include <boost/units/base_unit.hpp> - -#include <boost/units/physical_dimensions/amount.hpp> -#include <boost/units/physical_dimensions/current.hpp> -#include <boost/units/physical_dimensions/length.hpp> -#include <boost/units/physical_dimensions/luminous_intensity.hpp> -#include <boost/units/physical_dimensions/mass.hpp> -#include <boost/units/physical_dimensions/plane_angle.hpp> -#include <boost/units/physical_dimensions/solid_angle.hpp> -#include <boost/units/physical_dimensions/temperature.hpp> -#include <boost/units/physical_dimensions/time.hpp> - -namespace boost { - -namespace units { - -namespace abstract { - -struct length_unit_tag : base_unit<length_unit_tag, length_dimension, -30> { }; -struct mass_unit_tag : base_unit<mass_unit_tag, mass_dimension, -29> { }; -struct time_unit_tag : base_unit<time_unit_tag, time_dimension, -28> { }; -struct current_unit_tag : base_unit<current_unit_tag, current_dimension, -27> { }; -struct temperature_unit_tag : base_unit<temperature_unit_tag, temperature_dimension, -26> { }; -struct amount_unit_tag : base_unit<amount_unit_tag, amount_dimension, -25> { }; -struct luminous_intensity_unit_tag : base_unit<luminous_intensity_unit_tag, luminous_intensity_dimension, -24> { }; -struct plane_angle_unit_tag : base_unit<plane_angle_unit_tag, plane_angle_dimension, -23> { }; -struct solid_angle_unit_tag : base_unit<solid_angle_unit_tag, solid_angle_dimension, -22> { }; - -typedef make_system< - length_unit_tag, - mass_unit_tag, - time_unit_tag, - current_unit_tag, - temperature_unit_tag, - amount_unit_tag, - luminous_intensity_unit_tag, - plane_angle_unit_tag, - solid_angle_unit_tag ->::type system; - -typedef unit<length_dimension,system> length; ///< abstract unit of length -typedef unit<mass_dimension,system> mass; ///< abstract unit of mass -typedef unit<time_dimension,system> time; ///< abstract unit of time -typedef unit<current_dimension,system> current; ///< abstract unit of current -typedef unit<temperature_dimension,system> temperature; ///< abstract unit of temperature -typedef unit<amount_dimension,system> amount; ///< abstract unit of amount -typedef unit<luminous_intensity_dimension,system> luminous_intensity; ///< abstract unit of luminous intensity -typedef unit<plane_angle_dimension,system> plane_angle; ///< abstract unit of plane angle -typedef unit<solid_angle_dimension,system> solid_angle; ///< abstract unit of solid angle - -} // namespace abstract - -template<> -struct base_unit_info<abstract::length_unit_tag> -{ - static std::string name() { return "[Length]"; } - static std::string symbol() { return "[L]"; } -}; - -template<> -struct base_unit_info<abstract::mass_unit_tag> -{ - static std::string name() { return "[Mass]"; } - static std::string symbol() { return "[M]"; } -}; - -template<> -struct base_unit_info<abstract::time_unit_tag> -{ - static std::string name() { return "[Time]"; } - static std::string symbol() { return "[T]"; } -}; - -template<> -struct base_unit_info<abstract::current_unit_tag> -{ - static std::string name() { return "[Electric Current]"; } - static std::string symbol() { return "[I]"; } -}; - -template<> -struct base_unit_info<abstract::temperature_unit_tag> -{ - static std::string name() { return "[Temperature]"; } - static std::string symbol() { return "[Theta]"; } -}; - -template<> -struct base_unit_info<abstract::amount_unit_tag> -{ - static std::string name() { return "[Amount]"; } - static std::string symbol() { return "[N]"; } -}; - -template<> -struct base_unit_info<abstract::luminous_intensity_unit_tag> -{ - static std::string name() { return "[Luminous Intensity]"; } - static std::string symbol() { return "[J]"; } -}; - -template<> -struct base_unit_info<abstract::plane_angle_unit_tag> -{ - static std::string name() { return "[Plane Angle]"; } - static std::string symbol() { return "[QP]"; } -}; - -template<> -struct base_unit_info<abstract::solid_angle_unit_tag> -{ - static std::string name() { return "[Solid Angle]"; } - static std::string symbol() { return "[QS]"; } -}; - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ABSTRACT_HPP diff --git a/contrib/restricted/boost/boost/units/systems/angle/degrees.hpp b/contrib/restricted/boost/boost/units/systems/angle/degrees.hpp deleted file mode 100644 index df0c5e91a9..0000000000 --- a/contrib/restricted/boost/boost/units/systems/angle/degrees.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// 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_ANGLE_DEGREE_HPP -#define BOOST_UNITS_ANGLE_DEGREE_HPP - -#include <boost/config/no_tr1/cmath.hpp> - -#include <boost/units/conversion.hpp> -#include <boost/units/static_constant.hpp> -#include <boost/units/unit.hpp> -#include <boost/units/make_system.hpp> -#include <boost/units/base_units/angle/degree.hpp> - -namespace boost { - -namespace units { - -namespace degree { - -typedef make_system<boost::units::angle::degree_base_unit>::type system; - -typedef unit<dimensionless_type,system> dimensionless; -typedef unit<plane_angle_dimension,system> plane_angle; ///< angle degree unit constant - -BOOST_UNITS_STATIC_CONSTANT(degree,plane_angle); -BOOST_UNITS_STATIC_CONSTANT(degrees,plane_angle); - -} // namespace degree - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ANGLE_DEGREE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/angle/gradians.hpp b/contrib/restricted/boost/boost/units/systems/angle/gradians.hpp deleted file mode 100644 index f44709ef51..0000000000 --- a/contrib/restricted/boost/boost/units/systems/angle/gradians.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// 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_ANGLE_GRADIANS_HPP -#define BOOST_UNITS_ANGLE_GRADIANS_HPP - -#include <boost/config/no_tr1/cmath.hpp> - -#include <boost/units/conversion.hpp> -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> -#include <boost/units/make_system.hpp> -#include <boost/units/base_units/angle/gradian.hpp> - -namespace boost { - -namespace units { - -namespace gradian { - -typedef make_system<boost::units::angle::gradian_base_unit>::type system; - -typedef unit<dimensionless_type,system> dimensionless; -typedef unit<plane_angle_dimension,system> plane_angle; ///< angle gradian unit constant - -BOOST_UNITS_STATIC_CONSTANT(gradian,plane_angle); -BOOST_UNITS_STATIC_CONSTANT(gradians,plane_angle); - -} // namespace gradian - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ANGLE_GRADIANS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/angle/revolutions.hpp b/contrib/restricted/boost/boost/units/systems/angle/revolutions.hpp deleted file mode 100644 index 0006e51713..0000000000 --- a/contrib/restricted/boost/boost/units/systems/angle/revolutions.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// 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_ANGLE_REVOLUTIONS_HPP -#define BOOST_UNITS_ANGLE_REVOLUTIONS_HPP - -#include <boost/config/no_tr1/cmath.hpp> - -#include <boost/units/conversion.hpp> -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> -#include <boost/units/make_system.hpp> -#include <boost/units/base_units/angle/revolution.hpp> - -namespace boost { - -namespace units { - -namespace revolution { - -typedef make_system<boost::units::angle::revolution_base_unit>::type system; - -typedef unit<dimensionless_type,system> dimensionless; -typedef unit<plane_angle_dimension,system> plane_angle; ///< angle revolution unit constant - -BOOST_UNITS_STATIC_CONSTANT(revolution,plane_angle); -BOOST_UNITS_STATIC_CONSTANT(revolutions,plane_angle); - -} // namespace revolution - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_ANGLE_REVOLUTIONS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs.hpp b/contrib/restricted/boost/boost/units/systems/cgs.hpp deleted file mode 100644 index 0d61bfc428..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// 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_CGS_HPP -#define BOOST_UNITS_CGS_HPP - -/// \file -/// Includes all the cgs unit headers - -#include <string> - -#include <boost/units/quantity.hpp> - -#include <boost/units/systems/cgs/base.hpp> - -#include <boost/units/systems/cgs/dimensionless.hpp> -#include <boost/units/systems/cgs/length.hpp> -#include <boost/units/systems/cgs/mass.hpp> -#include <boost/units/systems/cgs/time.hpp> - -#include <boost/units/systems/cgs/acceleration.hpp> -#include <boost/units/systems/cgs/area.hpp> -#include <boost/units/systems/cgs/current.hpp> -#include <boost/units/systems/cgs/dynamic_viscosity.hpp> -#include <boost/units/systems/cgs/energy.hpp> -#include <boost/units/systems/cgs/force.hpp> -#include <boost/units/systems/cgs/frequency.hpp> -#include <boost/units/systems/cgs/kinematic_viscosity.hpp> -#include <boost/units/systems/cgs/mass_density.hpp> -#include <boost/units/systems/cgs/momentum.hpp> -#include <boost/units/systems/cgs/power.hpp> -#include <boost/units/systems/cgs/pressure.hpp> -#include <boost/units/systems/cgs/velocity.hpp> -#include <boost/units/systems/cgs/volume.hpp> -#include <boost/units/systems/cgs/wavenumber.hpp> - -#endif // BOOST_UNITS_CGS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/acceleration.hpp b/contrib/restricted/boost/boost/units/systems/cgs/acceleration.hpp deleted file mode 100644 index f84c715ac5..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/acceleration.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_CGS_ACCELERATION_HPP -#define BOOST_UNITS_CGS_ACCELERATION_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/acceleration.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<acceleration_dimension,cgs::system> acceleration; - -BOOST_UNITS_STATIC_CONSTANT(gal,acceleration); -BOOST_UNITS_STATIC_CONSTANT(gals,acceleration); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_ACCELERATION_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/area.hpp b/contrib/restricted/boost/boost/units/systems/cgs/area.hpp deleted file mode 100644 index 106925173f..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/area.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_CGS_AREA_HPP -#define BOOST_UNITS_CGS_AREA_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/area.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<area_dimension,cgs::system> area; - -BOOST_UNITS_STATIC_CONSTANT(square_centimeter,area); -BOOST_UNITS_STATIC_CONSTANT(square_centimeters,area); -BOOST_UNITS_STATIC_CONSTANT(square_centimetre,area); -BOOST_UNITS_STATIC_CONSTANT(square_centimetres,area); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_AREA_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/base.hpp b/contrib/restricted/boost/boost/units/systems/cgs/base.hpp deleted file mode 100644 index bc536065df..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/base.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// 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_CGS_BASE_HPP -#define BOOST_UNITS_CGS_BASE_HPP - -#include <string> - -#include <boost/units/static_constant.hpp> -#include <boost/units/unit.hpp> -#include <boost/units/make_system.hpp> - -#include <boost/units/base_units/cgs/centimeter.hpp> -#include <boost/units/base_units/cgs/gram.hpp> -#include <boost/units/base_units/si/second.hpp> -#include <boost/units/base_units/cgs/biot.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -/// placeholder class defining cgs unit system -typedef make_system<centimeter_base_unit, - gram_base_unit, - boost::units::si::second_base_unit, - biot_base_unit>::type system; - -/// various unit typedefs for convenience -typedef unit<dimensionless_type,system> dimensionless; - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_BASE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/current.hpp b/contrib/restricted/boost/boost/units/systems/cgs/current.hpp deleted file mode 100644 index f80821e012..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/current.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_CGS_CURRENT_HPP -#define BOOST_UNITS_CGS_CURRENT_HPP - -#include <boost/units/systems/cgs/base.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<current_dimension,cgs::system> current; - -BOOST_UNITS_STATIC_CONSTANT(biot,current); -BOOST_UNITS_STATIC_CONSTANT(biots,current); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_CURRENT_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/dimensionless.hpp b/contrib/restricted/boost/boost/units/systems/cgs/dimensionless.hpp deleted file mode 100644 index 7f2b3c2b5f..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/dimensionless.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_CGS_DIMENSIONLESS_HPP -#define BOOST_UNITS_CGS_DIMENSIONLESS_HPP - -#include <boost/units/systems/cgs/base.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -BOOST_UNITS_STATIC_CONSTANT(cgs_dimensionless,dimensionless); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_DIMENSIONLESS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/dynamic_viscosity.hpp b/contrib/restricted/boost/boost/units/systems/cgs/dynamic_viscosity.hpp deleted file mode 100644 index af1a17030a..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/dynamic_viscosity.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_CGS_DYNAMIC_VISCOSITY_HPP -#define BOOST_UNITS_CGS_DYNAMIC_VISCOSITY_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/dynamic_viscosity.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<dynamic_viscosity_dimension,cgs::system> dynamic_viscosity; - -BOOST_UNITS_STATIC_CONSTANT(poise,dynamic_viscosity); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_DYNAMIC_VISCOSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/energy.hpp b/contrib/restricted/boost/boost/units/systems/cgs/energy.hpp deleted file mode 100644 index f71099692f..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/energy.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_CGS_ENERGY_HPP -#define BOOST_UNITS_CGS_ENERGY_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/energy.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<energy_dimension,cgs::system> energy; - -BOOST_UNITS_STATIC_CONSTANT(erg,energy); -BOOST_UNITS_STATIC_CONSTANT(ergs,energy); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_ENERGY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/force.hpp b/contrib/restricted/boost/boost/units/systems/cgs/force.hpp deleted file mode 100644 index 3328b5d10d..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/force.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_CGS_FORCE_HPP -#define BOOST_UNITS_CGS_FORCE_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/force.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<force_dimension,cgs::system> force; - -BOOST_UNITS_STATIC_CONSTANT(dyne,force); -BOOST_UNITS_STATIC_CONSTANT(dynes,force); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_FORCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/frequency.hpp b/contrib/restricted/boost/boost/units/systems/cgs/frequency.hpp deleted file mode 100644 index ef90aea21c..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/frequency.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_CGS_FREQUENCY_HPP -#define BOOST_UNITS_CGS_FREQUENCY_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/frequency.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<frequency_dimension,cgs::system> frequency; - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_FREQUENCY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/io.hpp b/contrib/restricted/boost/boost/units/systems/cgs/io.hpp deleted file mode 100644 index 6f57b1e045..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/io.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// 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_CGS_IO_HPP -#define BOOST_UNITS_CGS_IO_HPP - -#include <boost/units/io.hpp> -#include <boost/units/reduce_unit.hpp> -#include <boost/units/systems/cgs.hpp> - -namespace boost { - -namespace units { - -inline std::string name_string(const reduce_unit<cgs::acceleration>::type&) { return "galileo"; } -inline std::string symbol_string(const reduce_unit<cgs::acceleration>::type&) { return "Gal"; } - -inline std::string name_string(const reduce_unit<cgs::current>::type&) { return "biot"; } -inline std::string symbol_string(const reduce_unit<cgs::current>::type&) { return "Bi"; } - -inline std::string name_string(const reduce_unit<cgs::dynamic_viscosity>::type&) { return "poise"; } -inline std::string symbol_string(const reduce_unit<cgs::dynamic_viscosity>::type&) { return "P"; } - -inline std::string name_string(const reduce_unit<cgs::energy>::type&) { return "erg"; } -inline std::string symbol_string(const reduce_unit<cgs::energy>::type&) { return "erg"; } - -inline std::string name_string(const reduce_unit<cgs::force>::type&) { return "dyne"; } -inline std::string symbol_string(const reduce_unit<cgs::force>::type&) { return "dyn"; } - -inline std::string name_string(const reduce_unit<cgs::kinematic_viscosity>::type&) { return "stoke"; } -inline std::string symbol_string(const reduce_unit<cgs::kinematic_viscosity>::type&) { return "St"; } - -inline std::string name_string(const reduce_unit<cgs::pressure>::type&) { return "barye"; } -inline std::string symbol_string(const reduce_unit<cgs::pressure>::type&) { return "Ba"; } - -inline std::string name_string(const reduce_unit<cgs::wavenumber>::type&) { return "kayser"; } -inline std::string symbol_string(const reduce_unit<cgs::wavenumber>::type&) { return "K"; } - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_IO_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/kinematic_viscosity.hpp b/contrib/restricted/boost/boost/units/systems/cgs/kinematic_viscosity.hpp deleted file mode 100644 index 185582b865..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/kinematic_viscosity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_CGS_KINEMATIC_VISCOSITY_HPP -#define BOOST_UNITS_CGS_KINEMATIC_VISCOSITY_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/kinematic_viscosity.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<kinematic_viscosity_dimension,cgs::system> kinematic_viscosity; - -BOOST_UNITS_STATIC_CONSTANT(stoke,kinematic_viscosity); -BOOST_UNITS_STATIC_CONSTANT(stokes,kinematic_viscosity); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_KINEMATIC_VISCOSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/length.hpp b/contrib/restricted/boost/boost/units/systems/cgs/length.hpp deleted file mode 100644 index 6d04cfe002..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/length.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// 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_CGS_LENGTH_HPP -#define BOOST_UNITS_CGS_LENGTH_HPP - -#include <boost/units/systems/cgs/base.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<length_dimension,cgs::system> length; - -BOOST_UNITS_STATIC_CONSTANT(centimeter,length); -BOOST_UNITS_STATIC_CONSTANT(centimeters,length); -BOOST_UNITS_STATIC_CONSTANT(centimetre,length); -BOOST_UNITS_STATIC_CONSTANT(centimetres,length); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_LENGTH_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/mass.hpp b/contrib/restricted/boost/boost/units/systems/cgs/mass.hpp deleted file mode 100644 index 70bf7c4875..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/mass.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_CGS_MASS_HPP -#define BOOST_UNITS_CGS_MASS_HPP - -#include <boost/units/systems/cgs/base.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<mass_dimension,cgs::system> mass; - -BOOST_UNITS_STATIC_CONSTANT(gram,mass); -BOOST_UNITS_STATIC_CONSTANT(grams,mass); -BOOST_UNITS_STATIC_CONSTANT(gramme,mass); -BOOST_UNITS_STATIC_CONSTANT(grammes,mass); - - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_MASS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/mass_density.hpp b/contrib/restricted/boost/boost/units/systems/cgs/mass_density.hpp deleted file mode 100644 index 5b2ce9e799..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/mass_density.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_CGS_MASS_DENSITY_HPP -#define BOOST_UNITS_CGS_MASS_DENSITY_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/mass_density.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<mass_density_dimension,cgs::system> mass_density; - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_MASS_DENSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/momentum.hpp b/contrib/restricted/boost/boost/units/systems/cgs/momentum.hpp deleted file mode 100644 index 6325a95a54..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/momentum.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_CGS_MOMENTUM_HPP -#define BOOST_UNITS_CGS_MOMENTUM_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/momentum.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<momentum_dimension,cgs::system> momentum; - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_MOMENTUM_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/power.hpp b/contrib/restricted/boost/boost/units/systems/cgs/power.hpp deleted file mode 100644 index 3ecb353143..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/power.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_CGS_POWER_HPP -#define BOOST_UNITS_CGS_POWER_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/power.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<power_dimension,cgs::system> power; - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_POWER_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/pressure.hpp b/contrib/restricted/boost/boost/units/systems/cgs/pressure.hpp deleted file mode 100644 index faef178bb1..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/pressure.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_CGS_PRESSURE_HPP -#define BOOST_UNITS_CGS_PRESSURE_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/pressure.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<pressure_dimension,cgs::system> pressure; - -BOOST_UNITS_STATIC_CONSTANT(barye,pressure); -BOOST_UNITS_STATIC_CONSTANT(baryes,pressure); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_PRESSURE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/time.hpp b/contrib/restricted/boost/boost/units/systems/cgs/time.hpp deleted file mode 100644 index 2ac3b040c7..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/time.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_CGS_TIME_HPP -#define BOOST_UNITS_CGS_TIME_HPP - -#include <boost/units/systems/cgs/base.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<time_dimension,cgs::system> time; - -BOOST_UNITS_STATIC_CONSTANT(second,time); -BOOST_UNITS_STATIC_CONSTANT(seconds,time); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_TIME_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/velocity.hpp b/contrib/restricted/boost/boost/units/systems/cgs/velocity.hpp deleted file mode 100644 index 152240a61b..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/velocity.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_CGS_VELOCITY_HPP -#define BOOST_UNITS_CGS_VELOCITY_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/velocity.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<velocity_dimension,cgs::system> velocity; - -BOOST_UNITS_STATIC_CONSTANT(centimeter_per_second,velocity); -BOOST_UNITS_STATIC_CONSTANT(centimeters_per_second,velocity); -BOOST_UNITS_STATIC_CONSTANT(centimetre_per_second,velocity); -BOOST_UNITS_STATIC_CONSTANT(centimetres_per_second,velocity); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_VELOCITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/volume.hpp b/contrib/restricted/boost/boost/units/systems/cgs/volume.hpp deleted file mode 100644 index 5e40cba09f..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/volume.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_CGS_VOLUME_HPP -#define BOOST_UNITS_CGS_VOLUME_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/volume.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<volume_dimension,cgs::system> volume; - -BOOST_UNITS_STATIC_CONSTANT(cubic_centimeter,volume); -BOOST_UNITS_STATIC_CONSTANT(cubic_centimeters,volume); -BOOST_UNITS_STATIC_CONSTANT(cubic_centimetre,volume); -BOOST_UNITS_STATIC_CONSTANT(cubic_centimetres,volume); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_VOLUME_HPP diff --git a/contrib/restricted/boost/boost/units/systems/cgs/wavenumber.hpp b/contrib/restricted/boost/boost/units/systems/cgs/wavenumber.hpp deleted file mode 100644 index 69c99ca5da..0000000000 --- a/contrib/restricted/boost/boost/units/systems/cgs/wavenumber.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// 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_CGS_WAVENUMBER_HPP -#define BOOST_UNITS_CGS_WAVENUMBER_HPP - -#include <boost/units/systems/cgs/base.hpp> -#include <boost/units/physical_dimensions/wavenumber.hpp> - -namespace boost { - -namespace units { - -namespace cgs { - -typedef unit<wavenumber_dimension,cgs::system> wavenumber; - -BOOST_UNITS_STATIC_CONSTANT(kayser,wavenumber); -BOOST_UNITS_STATIC_CONSTANT(kaysers,wavenumber); -BOOST_UNITS_STATIC_CONSTANT(reciprocal_centimeter,wavenumber); -BOOST_UNITS_STATIC_CONSTANT(reciprocal_centimeters,wavenumber); -BOOST_UNITS_STATIC_CONSTANT(reciprocal_centimetre,wavenumber); -BOOST_UNITS_STATIC_CONSTANT(reciprocal_centimetres,wavenumber); - -} // namespace cgs - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CGS_WAVENUMBER_HPP diff --git a/contrib/restricted/boost/boost/units/systems/detail/constants.hpp b/contrib/restricted/boost/boost/units/systems/detail/constants.hpp deleted file mode 100644 index 692efa4eb6..0000000000 --- a/contrib/restricted/boost/boost/units/systems/detail/constants.hpp +++ /dev/null @@ -1,278 +0,0 @@ -// 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_CONSTANTS_HPP -#define BOOST_UNITS_CONSTANTS_HPP - -#include <boost/config/no_tr1/cmath.hpp> -#include <iosfwd> -#include <iomanip> - -#include <boost/io/ios_state.hpp> - -#include <boost/units/static_constant.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/operators.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/detail/one.hpp> - -namespace boost { - -namespace units { - -template<class Base> -struct constant -{ - typedef typename Base::value_type value_type; - BOOST_CONSTEXPR operator value_type() const { return Base().value(); } - BOOST_CONSTEXPR value_type value() const { return Base().value(); } - BOOST_CONSTEXPR value_type uncertainty() const { return Base().uncertainty(); } - BOOST_CONSTEXPR value_type lower_bound() const { return Base().lower_bound(); } - BOOST_CONSTEXPR value_type upper_bound() const { return Base().upper_bound(); } -}; - -template<class Base> -struct physical_constant -{ - typedef typename Base::value_type value_type; - BOOST_CONSTEXPR operator value_type() const { return Base().value(); } - BOOST_CONSTEXPR value_type value() const { return Base().value(); } - BOOST_CONSTEXPR value_type uncertainty() const { return Base().uncertainty(); } - BOOST_CONSTEXPR value_type lower_bound() const { return Base().lower_bound(); } - BOOST_CONSTEXPR value_type upper_bound() const { return Base().upper_bound(); } -}; - -#define BOOST_UNITS_DEFINE_HELPER(name, symbol, template_name) \ - \ -template<class T, class Arg1, class Arg2> \ -struct name ## _typeof_helper<constant<T>, template_name<Arg1, Arg2> >\ -{ \ - typedef typename name ## _typeof_helper<typename T::value_type, template_name<Arg1, Arg2> >::type type;\ -}; \ - \ -template<class T, class Arg1, class Arg2> \ -struct name ## _typeof_helper<template_name<Arg1, Arg2>, constant<T> >\ -{ \ - typedef typename name ## _typeof_helper<template_name<Arg1, Arg2>, typename T::value_type>::type type;\ -}; \ - \ -template<class T, class Arg1, class Arg2> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<typename T::value_type, template_name<Arg1, Arg2> >::type \ -operator symbol(const constant<T>& t, const template_name<Arg1, Arg2>& u)\ -{ \ - return(t.value() symbol u); \ -} \ - \ -template<class T, class Arg1, class Arg2> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<template_name<Arg1, Arg2>, typename T::value_type>::type \ -operator symbol(const template_name<Arg1, Arg2>& u, const constant<T>& t)\ -{ \ - return(u symbol t.value()); \ -} - -BOOST_UNITS_DEFINE_HELPER(add, +, unit) -BOOST_UNITS_DEFINE_HELPER(add, +, quantity) -BOOST_UNITS_DEFINE_HELPER(subtract, -, unit) -BOOST_UNITS_DEFINE_HELPER(subtract, -, quantity) -BOOST_UNITS_DEFINE_HELPER(multiply, *, unit) -BOOST_UNITS_DEFINE_HELPER(multiply, *, quantity) -BOOST_UNITS_DEFINE_HELPER(divide, /, unit) -BOOST_UNITS_DEFINE_HELPER(divide, /, quantity) - -#undef BOOST_UNITS_DEFINE_HELPER - -#define BOOST_UNITS_DEFINE_HELPER(name, symbol) \ - \ -template<class T1, class T2> \ -struct name ## _typeof_helper<constant<T1>, constant<T2> > \ -{ \ - typedef typename name ## _typeof_helper<typename T1::value_type, typename T2::value_type>::type type;\ -}; \ - \ -template<class T1, class T2> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<typename T1::value_type, typename T2::value_type>::type \ -operator symbol(const constant<T1>& t, const constant<T2>& u) \ -{ \ - return(t.value() symbol u.value()); \ -} \ - \ -template<class T1, class T2> \ -struct name ## _typeof_helper<constant<T1>, T2> \ -{ \ - typedef typename name ## _typeof_helper<typename T1::value_type, T2>::type type;\ -}; \ - \ -template<class T1, class T2> \ -struct name ## _typeof_helper<T1, constant<T2> > \ -{ \ - typedef typename name ## _typeof_helper<T1, typename T2::value_type>::type type;\ -}; \ - \ -template<class T1, class T2> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<typename T1::value_type, T2>::type \ -operator symbol(const constant<T1>& t, const T2& u) \ -{ \ - return(t.value() symbol u); \ -} \ - \ -template<class T1, class T2> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<T1, typename T2::value_type>::type \ -operator symbol(const T1& t, const constant<T2>& u) \ -{ \ - return(t symbol u.value()); \ -} - -BOOST_UNITS_DEFINE_HELPER(add, +) -BOOST_UNITS_DEFINE_HELPER(subtract, -) -BOOST_UNITS_DEFINE_HELPER(multiply, *) -BOOST_UNITS_DEFINE_HELPER(divide, /) - -#undef BOOST_UNITS_DEFINE_HELPER - -#define BOOST_UNITS_DEFINE_HELPER(name, symbol) \ - \ -template<class T1> \ -struct name ## _typeof_helper<constant<T1>, one> \ -{ \ - typedef typename name ## _typeof_helper<typename T1::value_type, one>::type type;\ -}; \ - \ -template<class T2> \ -struct name ## _typeof_helper<one, constant<T2> > \ -{ \ - typedef typename name ## _typeof_helper<one, typename T2::value_type>::type type;\ -}; \ - \ -template<class T1> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<typename T1::value_type, one>::type \ -operator symbol(const constant<T1>& t, const one& u) \ -{ \ - return(t.value() symbol u); \ -} \ - \ -template<class T2> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<one, typename T2::value_type>::type \ -operator symbol(const one& t, const constant<T2>& u) \ -{ \ - return(t symbol u.value()); \ -} - -BOOST_UNITS_DEFINE_HELPER(multiply, *) -BOOST_UNITS_DEFINE_HELPER(divide, /) - -#undef BOOST_UNITS_DEFINE_HELPER - -template<class T1, long N, long D> -struct power_typeof_helper<constant<T1>, static_rational<N,D> > -{ - typedef power_typeof_helper<typename T1::value_type, static_rational<N,D> > base; - typedef typename base::type type; - static BOOST_CONSTEXPR type value(const constant<T1>& arg) - { - return base::value(arg.value()); - } -}; - -#define BOOST_UNITS_DEFINE_HELPER(name, symbol) \ - \ -template<class T1, class E> \ -struct name ## _typeof_helper<constant<T1> > \ -{ \ - typedef typename name ## _typeof_helper<typename T1::value_type, E>::type type;\ -}; \ - \ -template<class T1> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<typename T1::value_type, one>::type \ -operator symbol(const constant<T1>& t, const one& u) \ -{ \ - return(t.value() symbol u); \ -} \ - \ -template<class T2> \ -BOOST_CONSTEXPR \ -typename name ## _typeof_helper<one, typename T2::value_type>::type \ -operator symbol(const one& t, const constant<T2>& u) \ -{ \ - return(t symbol u.value()); \ -} - -#define BOOST_UNITS_PHYSICAL_CONSTANT(name, type, value_, uncertainty_) \ -struct name ## _t { \ - typedef type value_type; \ - BOOST_CONSTEXPR operator value_type() const { return value_; } \ - BOOST_CONSTEXPR value_type value() const { return value_; } \ - BOOST_CONSTEXPR value_type uncertainty() const { return uncertainty_; } \ - BOOST_CONSTEXPR value_type lower_bound() const { return value_-uncertainty_; } \ - BOOST_CONSTEXPR value_type upper_bound() const { return value_+uncertainty_; } \ -}; \ -BOOST_UNITS_STATIC_CONSTANT(name, boost::units::constant<boost::units::physical_constant<name ## _t> >) = { } - -// stream output -template<class Char, class Traits, class Y> -inline -std::basic_ostream<Char,Traits>& operator<<(std::basic_ostream<Char,Traits>& os,const physical_constant<Y>& val) -{ - boost::io::ios_precision_saver precision_saver(os); - //boost::io::ios_width_saver width_saver(os); - boost::io::ios_flags_saver flags_saver(os); - - //os << std::setw(21); - typedef typename Y::value_type value_type; - - if (val.uncertainty() > value_type()) - { - const double relative_uncertainty = std::abs(val.uncertainty()/val.value()); - - const double exponent = std::log10(relative_uncertainty); - const long digits_of_precision = static_cast<long>(std::ceil(std::abs(exponent)))+3; - - // should try to replicate NIST CODATA syntax - os << std::setprecision(digits_of_precision) - //<< std::setw(digits_of_precision+8) - //<< std::scientific - << val.value(); -// << long(10*(relative_uncertainty/std::pow(Y(10),Y(exponent)))); - - os << " (rel. unc. = " - << std::setprecision(1) - //<< std::setw(7) - << std::scientific - << relative_uncertainty << ")"; - } - else - { - os << val.value() << " (exact)"; - } - - return os; -} - -// stream output -template<class Char, class Traits, class Y> -inline -std::basic_ostream<Char,Traits>& operator<<(std::basic_ostream<Char,Traits>& os,const constant<Y>&) -{ - os << Y(); - return os; -} - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/information.hpp b/contrib/restricted/boost/boost/units/systems/information.hpp deleted file mode 100644 index a3ceb65bb9..0000000000 --- a/contrib/restricted/boost/boost/units/systems/information.hpp +++ /dev/null @@ -1,20 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_INFORMATION_HPP -#define BOOST_UNITS_INFORMATION_HPP - -#include <boost/units/systems/information/byte.hpp> -#include <boost/units/systems/information/bit.hpp> -#include <boost/units/systems/information/nat.hpp> -#include <boost/units/systems/information/hartley.hpp> -#include <boost/units/systems/information/shannon.hpp> -#include <boost/units/systems/information/prefixes.hpp> - -#endif diff --git a/contrib/restricted/boost/boost/units/systems/information/bit.hpp b/contrib/restricted/boost/boost/units/systems/information/bit.hpp deleted file mode 100644 index bd8f34bb8a..0000000000 --- a/contrib/restricted/boost/boost/units/systems/information/bit.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_SYSTEMS_INFORMATION_BIT_HPP_INCLUDED -#define BOOST_UNITS_SYSTEMS_INFORMATION_BIT_HPP_INCLUDED - -#include <boost/units/systems/information/byte.hpp> -#include <boost/units/base_units/information/bit.hpp> - -namespace boost { -namespace units { -namespace information { - -namespace hu { -namespace bit { -typedef unit<information_dimension, make_system<bit_base_unit>::type> info; -} // namespace bit -} // namespace hu - -BOOST_UNITS_STATIC_CONSTANT(bit, hu::bit::info); -BOOST_UNITS_STATIC_CONSTANT(bits, hu::bit::info); - -} // namespace information -} // namespace units -} // namespace boost - -#endif // BOOST_UNITS_SYSTEMS_INFORMATION_BIT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/systems/information/byte.hpp b/contrib/restricted/boost/boost/units/systems/information/byte.hpp deleted file mode 100644 index 8ea743cd9d..0000000000 --- a/contrib/restricted/boost/boost/units/systems/information/byte.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_SYSTEMS_INFORMATION_BYTE_HPP_INCLUDED -#define BOOST_UNITS_SYSTEMS_INFORMATION_BYTE_HPP_INCLUDED - -#include <boost/units/make_system.hpp> -#include <boost/units/unit.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/base_units/information/byte.hpp> - -namespace boost { -namespace units { -namespace information { - -typedef make_system<byte_base_unit>::type system; - -typedef unit<dimensionless_type, system> dimensionless; - -namespace hu { -namespace byte { -typedef unit<information_dimension, system> info; -} // namespace bit -} // namespace hu - -BOOST_UNITS_STATIC_CONSTANT(byte, hu::byte::info); -BOOST_UNITS_STATIC_CONSTANT(bytes, hu::byte::info); - -// I'm going to define boost::units::information::info (the "default") -// to be hu::byte::info -- other variants such as hu::bit::info, hu::nat::info, etc -// must be explicitly referred to -typedef hu::byte::info info; - -} // namespace information -} // namespace units -} // namespace boost - -#endif // BOOST_UNITS_SYSTEMS_INFORMATION_BYTE_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/systems/information/hartley.hpp b/contrib/restricted/boost/boost/units/systems/information/hartley.hpp deleted file mode 100644 index d0b25b7bce..0000000000 --- a/contrib/restricted/boost/boost/units/systems/information/hartley.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_SYSTEMS_INFORMATION_HARTLEY_HPP_INCLUDED -#define BOOST_UNITS_SYSTEMS_INFORMATION_HARTLEY_HPP_INCLUDED - -#include <boost/units/systems/information/byte.hpp> -#include <boost/units/base_units/information/hartley.hpp> - -namespace boost { -namespace units { -namespace information { - -namespace hu { -namespace hartley { -typedef unit<information_dimension, make_system<hartley_base_unit>::type> info; -} // namespace bit -} // namespace hu - -BOOST_UNITS_STATIC_CONSTANT(hartley, hu::hartley::info); -BOOST_UNITS_STATIC_CONSTANT(hartleys, hu::hartley::info); - -} // namespace information -} // namespace units -} // namespace boost - -#endif // BOOST_UNITS_SYSTEMS_INFORMATION_HARTLEY_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/systems/information/nat.hpp b/contrib/restricted/boost/boost/units/systems/information/nat.hpp deleted file mode 100644 index eb24178940..0000000000 --- a/contrib/restricted/boost/boost/units/systems/information/nat.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_SYSTEMS_INFORMATION_NAT_HPP_INCLUDED -#define BOOST_UNITS_SYSTEMS_INFORMATION_NAT_HPP_INCLUDED - -#include <boost/units/systems/information/byte.hpp> -#include <boost/units/base_units/information/nat.hpp> - -namespace boost { -namespace units { -namespace information { - -namespace hu { -namespace nat { -typedef unit<information_dimension, make_system<nat_base_unit>::type> info; -} // namespace bit -} // namespace hu - -BOOST_UNITS_STATIC_CONSTANT(nat, hu::nat::info); -BOOST_UNITS_STATIC_CONSTANT(nats, hu::nat::info); - -} // namespace information -} // namespace units -} // namespace boost - -#endif // BOOST_UNITS_SYSTEMS_INFORMATION_NAT_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/systems/information/prefixes.hpp b/contrib/restricted/boost/boost/units/systems/information/prefixes.hpp deleted file mode 100644 index 1c092f9ae4..0000000000 --- a/contrib/restricted/boost/boost/units/systems/information/prefixes.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_SYSTEMS_INFORMATION_PREFIXES_HPP_INCLUDED -#define BOOST_UNITS_SYSTEMS_INFORMATION_PREFIXES_HPP_INCLUDED - -#include <boost/units/make_scaled_unit.hpp> -#include <boost/units/static_rational.hpp> -#include <boost/units/scale.hpp> - -#include <boost/units/systems/information/byte.hpp> - -#define BOOST_UNITS_INFOSYS_PREFIX(exponent, name) \ - typedef make_scaled_unit<dimensionless, scale<2, static_rational<exponent> > >::type name ## _pf_type; \ - BOOST_UNITS_STATIC_CONSTANT(name, name ## _pf_type) - -namespace boost { -namespace units { -namespace information { - -// Note, these are defined (somewhat arbitrarily) against the 'byte' system. -// They work smoothly with bit_information, nat_information, etc, so it is -// transparent to the user. -BOOST_UNITS_INFOSYS_PREFIX(10, kibi); -BOOST_UNITS_INFOSYS_PREFIX(20, mebi); -BOOST_UNITS_INFOSYS_PREFIX(30, gibi); -BOOST_UNITS_INFOSYS_PREFIX(40, tebi); -BOOST_UNITS_INFOSYS_PREFIX(50, pebi); -BOOST_UNITS_INFOSYS_PREFIX(60, exbi); -BOOST_UNITS_INFOSYS_PREFIX(70, zebi); -BOOST_UNITS_INFOSYS_PREFIX(80, yobi); - -} // namespace information -} // namespace units -} // namespace boost - -#undef BOOST_UNITS_INFOSYS_PREFIX - -#endif // BOOST_UNITS_SYSTEMS_INFORMATION_PREFIXES_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/systems/information/shannon.hpp b/contrib/restricted/boost/boost/units/systems/information/shannon.hpp deleted file mode 100644 index e3069c953a..0000000000 --- a/contrib/restricted/boost/boost/units/systems/information/shannon.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// Boost.Units - A C++ library for zero-overhead dimensional analysis and -// unit/quantity manipulation and conversion -// -// Copyright (C) 2014 Erik Erlandson -// -// 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_SYSTEMS_INFORMATION_SHANNON_HPP_INCLUDED -#define BOOST_UNITS_SYSTEMS_INFORMATION_SHANNON_HPP_INCLUDED - -#include <boost/units/systems/information/byte.hpp> -#include <boost/units/base_units/information/shannon.hpp> - -namespace boost { -namespace units { -namespace information { - -namespace hu { -namespace shannon { -typedef unit<information_dimension, make_system<shannon_base_unit>::type> info; -} // namespace bit -} // namespace hu - -BOOST_UNITS_STATIC_CONSTANT(shannon, hu::shannon::info); -BOOST_UNITS_STATIC_CONSTANT(shannons, hu::shannon::info); - -} // namespace information -} // namespace units -} // namespace boost - -#endif // BOOST_UNITS_SYSTEMS_INFORMATION_SHANNON_HPP_INCLUDED diff --git a/contrib/restricted/boost/boost/units/systems/si.hpp b/contrib/restricted/boost/boost/units/systems/si.hpp deleted file mode 100644 index 727982b44a..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si.hpp +++ /dev/null @@ -1,77 +0,0 @@ -// 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_SI_HPP -#define BOOST_UNITS_SI_HPP - -/// \file -/// Includes all the si unit headers - -#include <string> - -#include <boost/units/quantity.hpp> - -#include <boost/units/systems/si/base.hpp> - -#include <boost/units/systems/si/absorbed_dose.hpp> -#include <boost/units/systems/si/acceleration.hpp> -#include <boost/units/systems/si/action.hpp> -#include <boost/units/systems/si/activity.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/angular_acceleration.hpp> -#include <boost/units/systems/si/angular_momentum.hpp> -#include <boost/units/systems/si/angular_velocity.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/capacitance.hpp> -#include <boost/units/systems/si/catalytic_activity.hpp> -#include <boost/units/systems/si/conductance.hpp> -#include <boost/units/systems/si/conductivity.hpp> -#include <boost/units/systems/si/current.hpp> -#include <boost/units/systems/si/dimensionless.hpp> -#include <boost/units/systems/si/dose_equivalent.hpp> -#include <boost/units/systems/si/dynamic_viscosity.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/electric_potential.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/force.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/illuminance.hpp> -#include <boost/units/systems/si/impedance.hpp> -#include <boost/units/systems/si/inductance.hpp> -#include <boost/units/systems/si/kinematic_viscosity.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/luminous_flux.hpp> -#include <boost/units/systems/si/luminous_intensity.hpp> -#include <boost/units/systems/si/magnetic_field_intensity.hpp> -#include <boost/units/systems/si/magnetic_flux.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/mass_density.hpp> -#include <boost/units/systems/si/moment_of_inertia.hpp> -#include <boost/units/systems/si/momentum.hpp> -#include <boost/units/systems/si/permeability.hpp> -#include <boost/units/systems/si/permittivity.hpp> -#include <boost/units/systems/si/plane_angle.hpp> -#include <boost/units/systems/si/power.hpp> -#include <boost/units/systems/si/pressure.hpp> -#include <boost/units/systems/si/reluctance.hpp> -#include <boost/units/systems/si/resistance.hpp> -#include <boost/units/systems/si/resistivity.hpp> -#include <boost/units/systems/si/solid_angle.hpp> -#include <boost/units/systems/si/surface_density.hpp> -#include <boost/units/systems/si/surface_tension.hpp> -#include <boost/units/systems/si/temperature.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/torque.hpp> -#include <boost/units/systems/si/velocity.hpp> -#include <boost/units/systems/si/volume.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#endif // BOOST_UNITS_SI_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/absorbed_dose.hpp b/contrib/restricted/boost/boost/units/systems/si/absorbed_dose.hpp deleted file mode 100644 index f59ec513b1..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/absorbed_dose.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_ABSORBED_DOSE_HPP -#define BOOST_UNITS_SI_ABSORBED_DOSE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/absorbed_dose.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<absorbed_dose_dimension,si::system> absorbed_dose; - -BOOST_UNITS_STATIC_CONSTANT(gray,absorbed_dose); -BOOST_UNITS_STATIC_CONSTANT(grays,absorbed_dose); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ABSORBED_DOSE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/acceleration.hpp b/contrib/restricted/boost/boost/units/systems/si/acceleration.hpp deleted file mode 100644 index 54ac29f0b8..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/acceleration.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_SI_ACCELERATION_HPP -#define BOOST_UNITS_SI_ACCELERATION_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/acceleration.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<acceleration_dimension,si::system> acceleration; - -BOOST_UNITS_STATIC_CONSTANT(meter_per_second_squared,acceleration); -BOOST_UNITS_STATIC_CONSTANT(meters_per_second_squared,acceleration); -BOOST_UNITS_STATIC_CONSTANT(metre_per_second_squared,acceleration); -BOOST_UNITS_STATIC_CONSTANT(metres_per_second_squared,acceleration); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ACCELERATION_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/action.hpp b/contrib/restricted/boost/boost/units/systems/si/action.hpp deleted file mode 100644 index 43b6629369..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/action.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_ACTION_HPP -#define BOOST_UNITS_SI_ACTION_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/action.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<action_dimension,si::system> action; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ACTION_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/activity.hpp b/contrib/restricted/boost/boost/units/systems/si/activity.hpp deleted file mode 100644 index d31f0028d2..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/activity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_ACTIVITY_HPP -#define BOOST_UNITS_SI_ACTIVITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/activity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<activity_dimension,si::system> activity; - -BOOST_UNITS_STATIC_CONSTANT(becquerel,activity); -BOOST_UNITS_STATIC_CONSTANT(becquerels,activity); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ACTIVITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/amount.hpp b/contrib/restricted/boost/boost/units/systems/si/amount.hpp deleted file mode 100644 index 7fe8f413cd..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/amount.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_AMOUNT_HPP -#define BOOST_UNITS_SI_AMOUNT_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<amount_dimension,si::system> amount; - -BOOST_UNITS_STATIC_CONSTANT(mole,amount); -BOOST_UNITS_STATIC_CONSTANT(moles,amount); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_AMOUNT_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/angular_acceleration.hpp b/contrib/restricted/boost/boost/units/systems/si/angular_acceleration.hpp deleted file mode 100644 index ff20102691..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/angular_acceleration.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_ANGULAR_ACCELERATION_HPP -#define BOOST_UNITS_SI_ANGULAR_ACCELERATION_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/angular_acceleration.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<angular_acceleration_dimension,si::system> angular_acceleration; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ANGULAR_ACCELERATION_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/angular_momentum.hpp b/contrib/restricted/boost/boost/units/systems/si/angular_momentum.hpp deleted file mode 100644 index 7c20f5b4b5..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/angular_momentum.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_ANGULAR_MOMENTUM_HPP -#define BOOST_UNITS_SI_ANGULAR_MOMENTUM_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/angular_momentum.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<angular_momentum_dimension,si::system> angular_momentum; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ANGULAR_MOMENTUM_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/angular_velocity.hpp b/contrib/restricted/boost/boost/units/systems/si/angular_velocity.hpp deleted file mode 100644 index 3149dc6eef..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/angular_velocity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_ANGULAR_VELOCITY_HPP -#define BOOST_UNITS_SI_ANGULAR_VELOCITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/angular_velocity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<angular_velocity_dimension,si::system> angular_velocity; - -BOOST_UNITS_STATIC_CONSTANT(radian_per_second,angular_velocity); -BOOST_UNITS_STATIC_CONSTANT(radians_per_second,angular_velocity); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ANGULAR_VELOCITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/area.hpp b/contrib/restricted/boost/boost/units/systems/si/area.hpp deleted file mode 100644 index 568b80a5da..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/area.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_SI_AREA_HPP -#define BOOST_UNITS_SI_AREA_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/area.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<area_dimension,si::system> area; - -BOOST_UNITS_STATIC_CONSTANT(square_meter,area); -BOOST_UNITS_STATIC_CONSTANT(square_meters,area); -BOOST_UNITS_STATIC_CONSTANT(square_metre,area); -BOOST_UNITS_STATIC_CONSTANT(square_metres,area); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_AREA_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/base.hpp b/contrib/restricted/boost/boost/units/systems/si/base.hpp deleted file mode 100644 index 469b294297..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/base.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// 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_SI_BASE_HPP -#define BOOST_UNITS_SI_BASE_HPP - -#include <string> - -#include <boost/units/static_constant.hpp> -#include <boost/units/unit.hpp> -#include <boost/units/make_system.hpp> - -#include <boost/units/base_units/si/meter.hpp> -#include <boost/units/base_units/si/kilogram.hpp> -#include <boost/units/base_units/si/second.hpp> -#include <boost/units/base_units/si/ampere.hpp> -#include <boost/units/base_units/si/kelvin.hpp> -#include <boost/units/base_units/si/mole.hpp> -#include <boost/units/base_units/si/candela.hpp> -#include <boost/units/base_units/angle/radian.hpp> -#include <boost/units/base_units/angle/steradian.hpp> - -namespace boost { - -namespace units { - -namespace si { - -/// placeholder class defining si unit system -typedef make_system<meter_base_unit, - kilogram_base_unit, - second_base_unit, - ampere_base_unit, - kelvin_base_unit, - mole_base_unit, - candela_base_unit, - angle::radian_base_unit, - angle::steradian_base_unit>::type system; - -/// dimensionless si unit -typedef unit<dimensionless_type,system> dimensionless; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_BASE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/capacitance.hpp b/contrib/restricted/boost/boost/units/systems/si/capacitance.hpp deleted file mode 100644 index 076de71de9..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/capacitance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_CAPACITANCE_HPP -#define BOOST_UNITS_SI_CAPACITANCE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/capacitance.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<capacitance_dimension,si::system> capacitance; - -BOOST_UNITS_STATIC_CONSTANT(farad,capacitance); -BOOST_UNITS_STATIC_CONSTANT(farads,capacitance); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_CAPACITANCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/catalytic_activity.hpp b/contrib/restricted/boost/boost/units/systems/si/catalytic_activity.hpp deleted file mode 100644 index 2a2e538657..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/catalytic_activity.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// 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_SI_CATALYTIC_ACTIVITY_HPP -#define BOOST_UNITS_SI_CATALYTIC_ACTIVITY_HPP - -#include <boost/units/derived_dimension.hpp> -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -/// catalytic activity : T^-1 A^1 -typedef derived_dimension<time_base_dimension,-1,amount_base_dimension,1>::type catalytic_activity_dim; - -typedef unit<si::catalytic_activity_dim,si::system> catalytic_activity; - -BOOST_UNITS_STATIC_CONSTANT(katal,catalytic_activity); -BOOST_UNITS_STATIC_CONSTANT(katals,catalytic_activity); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_CATALYTIC_ACTIVITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/alpha_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/alpha_constants.hpp deleted file mode 100644 index fa6e7f5a21..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/alpha_constants.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// 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_CODATA_ALPHA_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_ALPHA_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// alpha particle mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_alpha,quantity<mass>,6.64465620e-27*kilograms,3.3e-34*kilograms); -/// alpha-electron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_alpha_over_m_e,quantity<dimensionless>,7294.2995365*dimensionless(),3.1e-6*dimensionless()); -/// alpha-proton mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_alpha_over_m_p,quantity<dimensionless>,3.97259968951*dimensionless(),4.1e-10*dimensionless()); -/// alpha molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_alpha,quantity<mass_over_amount>,4.001506179127e-3*kilograms/mole,6.2e-14*kilograms/mole); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_ALPHA_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/atomic-nuclear_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/atomic-nuclear_constants.hpp deleted file mode 100644 index 80b4c279e2..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/atomic-nuclear_constants.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// 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_CODATA_ATOMIC_AND_NUCLEAR_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_ATOMIC_AND_NUCLEAR_CONSTANTS_HPP - -#include <boost/units/systems/si/codata/alpha_constants.hpp> -#include <boost/units/systems/si/codata/deuteron_constants.hpp> -#include <boost/units/systems/si/codata/electron_constants.hpp> -#include <boost/units/systems/si/codata/helion_constants.hpp> -#include <boost/units/systems/si/codata/muon_constants.hpp> -#include <boost/units/systems/si/codata/neutron_constants.hpp> -#include <boost/units/systems/si/codata/proton_constants.hpp> -#include <boost/units/systems/si/codata/tau_constants.hpp> -#include <boost/units/systems/si/codata/triton_constants.hpp> - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -// ATOMIC AND NUCLEAR -/// fine structure constant -BOOST_UNITS_PHYSICAL_CONSTANT(alpha,quantity<dimensionless>,7.2973525376e-3*dimensionless(),5.0e-12*dimensionless()); -/// Rydberg constant -BOOST_UNITS_PHYSICAL_CONSTANT(R_infinity,quantity<wavenumber>,10973731.568527/meter,7.3e-5/meter); -/// Bohr radius -BOOST_UNITS_PHYSICAL_CONSTANT(a_0,quantity<length>,0.52917720859e-10*meters,3.6e-20*meters); -/// Hartree energy -BOOST_UNITS_PHYSICAL_CONSTANT(E_h,quantity<energy>,4.35974394e-18*joules,2.2e-25*joules); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_ATOMIC_AND_NUCLEAR_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/deuteron_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/deuteron_constants.hpp deleted file mode 100644 index 167c576756..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/deuteron_constants.hpp +++ /dev/null @@ -1,82 +0,0 @@ -// 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_CODATA_DEUTERON_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_DEUTERON_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// deuteron mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_d,quantity<mass>,3.34358320e-27*kilograms,1.7e-34*kilograms); -/// deuteron-electron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_d_over_m_e,quantity<dimensionless>,3670.4829654*dimensionless(),1.6e-6*dimensionless()); -/// deuteron-proton mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_d_over_m_p,quantity<dimensionless>,1.99900750108*dimensionless(),2.2e-10*dimensionless()); -/// deuteron molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_d,quantity<mass_over_amount>,2.013553212724e-3*kilograms/mole,7.8e-14*kilograms/mole); -/// deuteron rms charge radius -BOOST_UNITS_PHYSICAL_CONSTANT(R_d,quantity<length>,2.1402e-15*meters,2.8e-18*meters); -/// deuteron magnetic moment -BOOST_UNITS_PHYSICAL_CONSTANT(mu_d,quantity<energy_over_magnetic_flux_density>,0.433073465e-26*joules/tesla,1.1e-34*joules/tesla); -/// deuteron-Bohr magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_B,quantity<dimensionless>,0.4669754556e-3*dimensionless(),3.9e-12*dimensionless()); -/// deuteron-nuclear magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_N,quantity<dimensionless>,0.8574382308*dimensionless(),7.2e-9*dimensionless()); -/// deuteron g-factor -BOOST_UNITS_PHYSICAL_CONSTANT(g_d,quantity<dimensionless>,0.8574382308*dimensionless(),7.2e-9*dimensionless()); -/// deuteron-electron magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_e,quantity<dimensionless>,-4.664345537e-4*dimensionless(),3.9e-12*dimensionless()); -/// deuteron-proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_p,quantity<dimensionless>,0.3070122070*dimensionless(),2.4e-9*dimensionless()); -/// deuteron-neutron magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_n,quantity<dimensionless>,-0.44820652*dimensionless(),1.1e-7*dimensionless()); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_DEUTERON_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/electromagnetic_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/electromagnetic_constants.hpp deleted file mode 100644 index bad7be528a..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/electromagnetic_constants.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// 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_CODATA_ELECTROMAGNETIC_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_ELECTROMAGNETIC_CONSTANTS_HPP - -/// -/// \file -/// \brief CODATA recommended values of fundamental electromagnetic constants. -/// \details CODATA recommended values of the fundamental physical constants: NIST SP 961 -/// CODATA 2006 values as of 2007/03/30 -/// - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/conductance.hpp> -#include <boost/units/systems/si/current.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/electric_potential.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/magnetic_flux.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/resistance.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -// ELECTROMAGNETIC -/// elementary charge -BOOST_UNITS_PHYSICAL_CONSTANT(e,quantity<electric_charge>,1.602176487e-19*coulombs,4.0e-27*coulombs); -/// elementary charge to Planck constant ratio -BOOST_UNITS_PHYSICAL_CONSTANT(e_over_h,quantity<current_over_energy>,2.417989454e14*amperes/joule,6.0e6*amperes/joule); -/// magnetic flux quantum -BOOST_UNITS_PHYSICAL_CONSTANT(Phi_0,quantity<magnetic_flux>,2.067833667e-15*webers,5.2e-23*webers); -/// conductance quantum -BOOST_UNITS_PHYSICAL_CONSTANT(G_0,quantity<conductance>,7.7480917004e-5*siemens,5.3e-14*siemens); -/// Josephson constant -BOOST_UNITS_PHYSICAL_CONSTANT(K_J,quantity<frequency_over_electric_potential>,483597.891e9*hertz/volt,1.2e7*hertz/volt); -/// von Klitzing constant -BOOST_UNITS_PHYSICAL_CONSTANT(R_K,quantity<resistance>,25812.807557*ohms,1.77e-5*ohms); -/// Bohr magneton -BOOST_UNITS_PHYSICAL_CONSTANT(mu_B,quantity<energy_over_magnetic_flux_density>,927.400915e-26*joules/tesla,2.3e-31*joules/tesla); -/// nuclear magneton -BOOST_UNITS_PHYSICAL_CONSTANT(mu_N,quantity<energy_over_magnetic_flux_density>,5.05078324e-27*joules/tesla,1.3e-34*joules/tesla); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_ELECTROMAGNETIC_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/electron_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/electron_constants.hpp deleted file mode 100644 index 4582c79912..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/electron_constants.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// 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_CODATA_ELECTRON_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_ELECTRON_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// electron mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_e,quantity<mass>,9.10938215e-31*kilograms,4.5e-38*kilograms); -/// electron-muon mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_mu,quantity<dimensionless>,4.83633171e-3*dimensionless(),1.2e-10*dimensionless()); -/// electron-tau mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_tau,quantity<dimensionless>,2.87564e-4*dimensionless(),4.7e-8*dimensionless()); -/// electron-proton mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_p,quantity<dimensionless>,5.4461702177e-4*dimensionless(),2.4e-13*dimensionless()); -/// electron-neutron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_n,quantity<dimensionless>,5.4386734459e-4*dimensionless(),3.3e-13*dimensionless()); -/// electron-deuteron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_d,quantity<dimensionless>,2.7244371093e-4*dimensionless(),1.2e-13*dimensionless()); -/// electron-alpha particle mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_alpha,quantity<dimensionless>,1.37093355570e-4*dimensionless(),5.8e-14*dimensionless()); -/// electron charge to mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(e_over_m_e,quantity<electric_charge_over_mass>,1.758820150e11*coulombs/kilogram,4.4e3*coulombs/kilogram); -/// electron molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_e,quantity<mass_over_amount>,5.4857990943e-7*kilograms/mole,2.3e-16*kilograms/mole); -/// Compton wavelength -BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C,quantity<length>,2.4263102175e-12*meters,3.3e-21*meters); -/// classical electron radius -BOOST_UNITS_PHYSICAL_CONSTANT(r_e,quantity<length>,2.8179402894e-15*meters,5.8e-24*meters); -/// Thompson cross section -BOOST_UNITS_PHYSICAL_CONSTANT(sigma_e,quantity<area>,0.6652458558e-28*square_meters,2.7e-37*square_meters); -/// electron magnetic moment -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e,quantity<energy_over_magnetic_flux_density>,-928.476377e-26*joules/tesla,2.3e-31*joules/tesla); -/// electron-Bohr magenton moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_B,quantity<dimensionless>,-1.00115965218111*dimensionless(),7.4e-13*dimensionless()); -/// electron-nuclear magneton moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_N,quantity<dimensionless>,-183.28197092*dimensionless(),8.0e-7*dimensionless()); -/// electron magnetic moment anomaly -BOOST_UNITS_PHYSICAL_CONSTANT(a_e,quantity<dimensionless>,1.15965218111e-3*dimensionless(),7.4e-13*dimensionless()); -/// electron g-factor -BOOST_UNITS_PHYSICAL_CONSTANT(g_e,quantity<dimensionless>,-2.0023193043622*dimensionless(),1.5e-12*dimensionless()); -/// electron-muon magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_mu,quantity<dimensionless>,206.7669877*dimensionless(),5.2e-6*dimensionless()); -/// electron-proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_p,quantity<dimensionless>,-658.2106848*dimensionless(),5.4e-6*dimensionless()); -/// electron-shielded proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_p_prime,quantity<dimensionless>,-658.2275971*dimensionless(),7.2e-6*dimensionless()); -/// electron-neutron magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_n,quantity<dimensionless>,960.92050*dimensionless(),2.3e-4*dimensionless()); -/// electron-deuteron magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_d,quantity<dimensionless>,-2143.923498*dimensionless(),1.8e-5*dimensionless()); -/// electron-shielded helion magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_h_prime,quantity<dimensionless>,864.058257*dimensionless(),1.0e-5*dimensionless()); -/// electron gyromagnetic ratio -BOOST_UNITS_PHYSICAL_CONSTANT(gamma_e,quantity<frequency_over_magnetic_flux_density>,1.760859770e11/second/tesla,4.4e3/second/tesla); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_ELECTRON_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/helion_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/helion_constants.hpp deleted file mode 100644 index 4e88242da0..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/helion_constants.hpp +++ /dev/null @@ -1,78 +0,0 @@ -// 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_CODATA_HELION_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_HELION_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// helion mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_h,quantity<mass>,5.00641192e-27*kilograms,2.5e-34*kilograms); -/// helion-electron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_h_over_m_e,quantity<dimensionless>,5495.8852765*dimensionless(),5.2e-6*dimensionless()); -/// helion-proton mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_h_over_m_p,quantity<dimensionless>,2.9931526713*dimensionless(),2.6e-9*dimensionless()); -/// helion molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_h,quantity<mass_over_amount>,3.0149322473e-3*kilograms/mole,2.6e-12*kilograms/mole); -/// helion shielded magnetic moment -BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime,quantity<energy_over_magnetic_flux_density>,-1.074552982e-26*joules/tesla,3.0e-34*joules/tesla); -/// shielded helion-Bohr magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime_over_mu_B,quantity<dimensionless>,-1.158671471e-3*dimensionless(),1.4e-11*dimensionless()); -/// shielded helion-nuclear magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime_over_mu_N,quantity<dimensionless>,-2.127497718*dimensionless(),2.5e-8*dimensionless()); -/// shielded helion-proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime_over_mu_p,quantity<dimensionless>,-0.761766558*dimensionless(),1.1e-8*dimensionless()); -/// shielded helion-shielded proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime_over_mu_p_prime,quantity<dimensionless>,-0.7617861313*dimensionless(),3.3e-8*dimensionless()); -/// shielded helion gyromagnetic ratio -BOOST_UNITS_PHYSICAL_CONSTANT(gamma_h_prime,quantity<frequency_over_magnetic_flux_density>,2.037894730e8/second/tesla,5.6e-0/second/tesla); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_HELION_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/muon_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/muon_constants.hpp deleted file mode 100644 index c580e3c2ce..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/muon_constants.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// 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_CODATA_MUON_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_MUON_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// muon mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_mu,quantity<mass>,1.88353130e-28*kilograms,1.1e-35*kilograms); -/// muon-electron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_mu_over_m_e,quantity<dimensionless>,206.7682823*dimensionless(),5.2e-6*dimensionless()); -/// muon-tau mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_mu_over_m_tau,quantity<dimensionless>,5.94592e-2*dimensionless(),9.7e-6*dimensionless()); -/// muon-proton mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_mu_over_m_p,quantity<dimensionless>,0.1126095261*dimensionless(),2.9e-9*dimensionless()); -/// muon-neutron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_mu_over_m_n,quantity<dimensionless>,0.1124545167*dimensionless(),2.9e-9*dimensionless()); -/// muon molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_mu,quantity<mass_over_amount>,0.1134289256e-3*kilograms/mole,2.9e-12*kilograms/mole); -/// muon Compton wavelength -BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C_mu,quantity<length>,11.73444104e-15*meters,3.0e-22*meters); -/// muon magnetic moment -BOOST_UNITS_PHYSICAL_CONSTANT(mu_mu,quantity<energy_over_magnetic_flux_density>,-4.49044786e-26*joules/tesla,1.6e-33*joules/tesla); -/// muon-Bohr magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_mu_over_mu_B,quantity<dimensionless>,-4.84197049e-3*dimensionless(),1.2e-10*dimensionless()); -/// muon-nuclear magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_mu_over_mu_N,quantity<dimensionless>,-8.89059705*dimensionless(),2.3e-7*dimensionless()); -/// muon magnetic moment anomaly -BOOST_UNITS_PHYSICAL_CONSTANT(a_mu,quantity<dimensionless>,1.16592069e-3*dimensionless(),6.0e-10*dimensionless()); -/// muon g-factor -BOOST_UNITS_PHYSICAL_CONSTANT(g_mu,quantity<dimensionless>,-2.0023318414*dimensionless(),1.2e-9*dimensionless()); -/// muon-proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_mu_over_mu_p,quantity<dimensionless>,-3.183345137*dimensionless(),8.5e-8*dimensionless()); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_MUON_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/neutron_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/neutron_constants.hpp deleted file mode 100644 index fb971246d2..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/neutron_constants.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// 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_CODATA_NEUTRON_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_NEUTRON_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// neutron mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_n,quantity<mass>,1.674927211e-27*kilograms,8.4e-35*kilograms); -/// neutron-electron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_n_over_m_e,quantity<dimensionless>,1838.6836605*dimensionless(),1.1e-6*dimensionless()); -/// neutron-muon mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_n_over_m_mu,quantity<dimensionless>,8.89248409*dimensionless(),2.3e-7*dimensionless()); -/// neutron-tau mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_n_over_m_tau,quantity<dimensionless>,0.528740*dimensionless(),8.6e-5*dimensionless()); -/// neutron-proton mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_n_over_m_p,quantity<dimensionless>,1.00137841918*dimensionless(),4.6e-10*dimensionless()); -/// neutron molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_n,quantity<mass_over_amount>,1.00866491597e-3*kilograms/mole,4.3e-13*kilograms/mole); -/// neutron Compton wavelength -BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C_n,quantity<length>,1.3195908951e-15*meters,2.0e-24*meters); -/// neutron magnetic moment -BOOST_UNITS_PHYSICAL_CONSTANT(mu_n,quantity<energy_over_magnetic_flux_density>,-0.96623641e-26*joules/tesla,2.3e-33*joules/tesla); -/// neutron g-factor -BOOST_UNITS_PHYSICAL_CONSTANT(g_n,quantity<dimensionless>,-3.82608545*dimensionless(),9.0e-7*dimensionless()); -/// neutron-electron magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_n_over_mu_e,quantity<dimensionless>,1.04066882e-3*dimensionless(),2.5e-10*dimensionless()); -/// neutron-proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_n_over_mu_p,quantity<dimensionless>,-0.68497934*dimensionless(),1.6e-7*dimensionless()); -/// neutron-shielded proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_n_over_mu_p_prime,quantity<dimensionless>,-0.68499694*dimensionless(),1.6e-7*dimensionless()); -/// neutron gyromagnetic ratio -BOOST_UNITS_PHYSICAL_CONSTANT(gamma_n,quantity<frequency_over_magnetic_flux_density>,1.83247185e8/second/tesla,4.3e1/second/tesla); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_NEUTRON_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/physico-chemical_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/physico-chemical_constants.hpp deleted file mode 100644 index e9ed035f9c..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/physico-chemical_constants.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// 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_CODATA_PHYSICO_CHEMICAL_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_PHYSICO_CHEMICAL_CONSTANTS_HPP - -#include <boost/units/pow.hpp> -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/power.hpp> -#include <boost/units/systems/si/solid_angle.hpp> -#include <boost/units/systems/si/temperature.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental physico-chemical constants -/// CODATA 2014 values as of 2016/04/26 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -// PHYSICO-CHEMICAL -/// Avogadro constant -BOOST_UNITS_PHYSICAL_CONSTANT(N_A,quantity<inverse_amount>,6.022140857e23/mole,7.4e15/mole); -/// atomic mass constant -BOOST_UNITS_PHYSICAL_CONSTANT(m_u,quantity<mass>,1.660539040e-27*kilograms,2.0e-35*kilograms); -/// Faraday constant -BOOST_UNITS_PHYSICAL_CONSTANT(F,quantity<electric_charge_over_amount>,96485.33289*coulombs/mole,5.9e-4*coulombs/mole); -/// molar gas constant -BOOST_UNITS_PHYSICAL_CONSTANT(R,quantity<energy_over_temperature_amount>,8.3144598*joules/kelvin/mole,4.8e-06*joules/kelvin/mole); -/// Boltzmann constant -BOOST_UNITS_PHYSICAL_CONSTANT(k_B,quantity<energy_over_temperature>,1.38064852e-23*joules/kelvin,7.9e-30*joules/kelvin); -/// Stefan-Boltzmann constant -BOOST_UNITS_PHYSICAL_CONSTANT(sigma_SB,quantity<power_over_area_temperature_4>,5.670367e-8*watts/square_meter/pow<4>(kelvin),1.3e-13*watts/square_meter/pow<4>(kelvin)); -/// first radiation constant -BOOST_UNITS_PHYSICAL_CONSTANT(c_1,quantity<power_area>,3.741771790e-16*watt*square_meters,4.6e-24*watt*square_meters); -/// first radiation constant for spectral radiance -BOOST_UNITS_PHYSICAL_CONSTANT(c_1L,quantity<power_area_over_solid_angle>,1.191042953e-16*watt*square_meters/steradian,1.5e-24*watt*square_meters/steradian); -/// second radiation constant -BOOST_UNITS_PHYSICAL_CONSTANT(c_2,quantity<length_temperature>,1.43877736e-2*meter*kelvin,8.3e-9*meter*kelvin); -/// Wien displacement law constant : lambda_max T -BOOST_UNITS_PHYSICAL_CONSTANT(b,quantity<length_temperature>,2.8977729e-3*meter*kelvin,1.7e-9*meter*kelvin); -/// Wien displacement law constant : nu_max/T -BOOST_UNITS_PHYSICAL_CONSTANT(b_prime,quantity<frequency_over_temperature>,5.8789238e10*hertz/kelvin,3.4e4*hertz/kelvin); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_PHYSICO_CHEMICAL_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/proton_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/proton_constants.hpp deleted file mode 100644 index 78cce8c16b..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/proton_constants.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// 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_CODATA_PROTON_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_PROTON_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// proton mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_p,quantity<mass>,1.672621637e-27*kilograms,8.3e-35*kilograms); -/// proton-electron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_p_over_m_e,quantity<dimensionless>,1836.15267247*dimensionless(),8.0e-7*dimensionless()); -/// proton-muon mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_p_over_m_mu,quantity<dimensionless>,8.88024339*dimensionless(),2.3e-7*dimensionless()); -/// proton-tau mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_p_over_m_tau,quantity<dimensionless>,0.528012*dimensionless(),8.6e-5*dimensionless()); -/// proton-neutron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_p_over_m_n,quantity<dimensionless>,0.99862347824*dimensionless(),4.6e-10*dimensionless()); -/// proton charge to mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(e_over_m_p,quantity<electric_charge_over_mass>,9.57883392e7*coulombs/kilogram,2.4e0*coulombs/kilogram); -/// proton molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_p,quantity<mass_over_amount>,1.00727646677e-3*kilograms/mole,1.0e-13*kilograms/mole); -/// proton Compton wavelength -BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C_p,quantity<length>,1.3214098446e-15*meters,1.9e-24*meters); -/// proton rms charge radius -BOOST_UNITS_PHYSICAL_CONSTANT(R_p,quantity<length>,0.8768e-15*meters,6.9e-18*meters); -/// proton magnetic moment -BOOST_UNITS_PHYSICAL_CONSTANT(mu_p,quantity<energy_over_magnetic_flux_density>,1.410606662e-26*joules/tesla,3.7e-34*joules/tesla); -/// proton-Bohr magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_over_mu_B,quantity<dimensionless>,1.521032209e-3*dimensionless(),1.2e-11*dimensionless()); -/// proton-nuclear magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_over_mu_N,quantity<dimensionless>,2.792847356*dimensionless(),2.3e-8*dimensionless()); -/// proton g-factor -BOOST_UNITS_PHYSICAL_CONSTANT(g_p,quantity<dimensionless>,5.585694713*dimensionless(),4.6e-8*dimensionless()); -/// proton-neutron magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_over_mu_n,quantity<dimensionless>,-1.45989806*dimensionless(),3.4e-7*dimensionless()); -/// shielded proton magnetic moment -BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_prime,quantity<energy_over_magnetic_flux_density>,1.410570419e-26*joules/tesla,3.8e-34*joules/tesla); -/// shielded proton-Bohr magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_prime_over_mu_B,quantity<dimensionless>,1.520993128e-3*dimensionless(),1.7e-11*dimensionless()); -/// shielded proton-nuclear magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_prime_over_mu_N,quantity<dimensionless>,2.792775598*dimensionless(),3.0e-8*dimensionless()); -/// proton magnetic shielding correction -BOOST_UNITS_PHYSICAL_CONSTANT(sigma_p_prime,quantity<dimensionless>,25.694e-6*dimensionless(),1.4e-8*dimensionless()); -/// proton gyromagnetic ratio -BOOST_UNITS_PHYSICAL_CONSTANT(gamma_p,quantity<frequency_over_magnetic_flux_density>,2.675222099e8/second/tesla,7.0e0/second/tesla); -/// shielded proton gyromagnetic ratio -BOOST_UNITS_PHYSICAL_CONSTANT(gamma_p_prime,quantity<frequency_over_magnetic_flux_density>,2.675153362e8/second/tesla,7.3e0/second/tesla); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_PROTON_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/tau_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/tau_constants.hpp deleted file mode 100644 index ea047bcd1d..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/tau_constants.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// 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_CODATA_TAU_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_TAU_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// tau mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_tau,quantity<mass>,3.16777e-27*kilograms,5.2e-31*kilograms); -/// tau-electron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_tau_over_m_e,quantity<dimensionless>,3477.48*dimensionless(),5.7e-1*dimensionless()); -/// tau-muon mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_tau_over_m_mu,quantity<dimensionless>,16.8183*dimensionless(),2.7e-3*dimensionless()); -/// tau-proton mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_tau_over_m_p,quantity<dimensionless>,1.89390*dimensionless(),3.1e-4*dimensionless()); -/// tau-neutron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_tau_over_m_n,quantity<dimensionless>,1.89129*dimensionless(),3.1e-4*dimensionless()); -/// tau molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_tau,quantity<mass_over_amount>,1.90768e-3*kilograms/mole,3.1e-7*kilograms/mole); -/// tau Compton wavelength -BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C_tau,quantity<length>,0.69772e-15*meters,1.1e-19*meters); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_TAU_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/triton_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/triton_constants.hpp deleted file mode 100644 index 58660827d8..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/triton_constants.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// 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_CODATA_TRITON_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_TRITON_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/wavenumber.hpp> - -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental atomic and nuclear constants -/// CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -/// triton mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_t,quantity<mass>,5.00735588e-27*kilograms,2.5e-34*kilograms); -/// triton-electron mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_t_over_m_e,quantity<dimensionless>,5496.9215269*dimensionless(),5.1e-6*dimensionless()); -/// triton-proton mass ratio -BOOST_UNITS_PHYSICAL_CONSTANT(m_t_over_m_p,quantity<dimensionless>,2.9937170309*dimensionless(),2.5e-9*dimensionless()); -/// triton molar mass -BOOST_UNITS_PHYSICAL_CONSTANT(M_t,quantity<mass_over_amount>,3.0155007134e-3*kilograms/mole,2.5e-12*kilograms/mole); -/// triton magnetic moment -BOOST_UNITS_PHYSICAL_CONSTANT(mu_t,quantity<energy_over_magnetic_flux_density>,1.504609361e-26*joules/tesla,4.2e-34*joules/tesla); -/// triton-Bohr magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_B,quantity<dimensionless>,1.622393657e-3*dimensionless(),2.1e-11*dimensionless()); -/// triton-nuclear magneton ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_N,quantity<dimensionless>,2.978962448*dimensionless(),3.8e-8*dimensionless()); -/// triton g-factor -BOOST_UNITS_PHYSICAL_CONSTANT(g_t,quantity<dimensionless>,5.957924896*dimensionless(),7.6e-8*dimensionless()); -/// triton-electron magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_e,quantity<dimensionless>,-1.620514423e-3*dimensionless(),2.1e-11*dimensionless()); -/// triton-proton magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_p,quantity<dimensionless>,1.066639908*dimensionless(),1.0e-8*dimensionless()); -/// triton-neutron magnetic moment ratio -BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_n,quantity<dimensionless>,-1.55718553*dimensionless(),3.7e-7*dimensionless()); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_TRITON_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/typedefs.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/typedefs.hpp deleted file mode 100644 index 27330ce061..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/typedefs.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// 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_CODATA_TYPEDEFS_HPP -#define BOOST_UNITS_CODATA_TYPEDEFS_HPP - -#include <boost/units/operators.hpp> -#include <boost/units/systems/si/amount.hpp> -#include <boost/units/systems/si/area.hpp> -#include <boost/units/systems/si/capacitance.hpp> -#include <boost/units/systems/si/electric_charge.hpp> -#include <boost/units/systems/si/current.hpp> -#include <boost/units/systems/si/electric_potential.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/force.hpp> -#include <boost/units/systems/si/frequency.hpp> -#include <boost/units/systems/si/magnetic_flux_density.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/power.hpp> -#include <boost/units/systems/si/solid_angle.hpp> -#include <boost/units/systems/si/temperature.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/volume.hpp> - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -typedef divide_typeof_helper<frequency,electric_potential>::type frequency_over_electric_potential; -typedef divide_typeof_helper<electric_charge,mass>::type electric_charge_over_mass; -typedef divide_typeof_helper<mass,amount>::type mass_over_amount; -typedef divide_typeof_helper<energy,magnetic_flux_density>::type energy_over_magnetic_flux_density; -typedef divide_typeof_helper<frequency,magnetic_flux_density>::type frequency_over_magnetic_flux_density; -typedef divide_typeof_helper<current,energy>::type current_over_energy; -typedef divide_typeof_helper<dimensionless,amount>::type inverse_amount; -typedef divide_typeof_helper<energy,temperature>::type energy_over_temperature; -typedef divide_typeof_helper<energy_over_temperature,amount>::type energy_over_temperature_amount; -typedef divide_typeof_helper< - divide_typeof_helper<power,area>::type, - power_typeof_helper<temperature,static_rational<4> >::type - >::type power_over_area_temperature_4; -typedef multiply_typeof_helper<power,area>::type power_area; -typedef divide_typeof_helper<power_area,solid_angle>::type power_area_over_solid_angle; -typedef multiply_typeof_helper<length,temperature>::type length_temperature; -typedef divide_typeof_helper<frequency,temperature>::type frequency_over_temperature; -typedef divide_typeof_helper<divide_typeof_helper<force,current>::type,current>::type force_over_current_squared; -typedef divide_typeof_helper<capacitance,length>::type capacitance_over_length; -typedef divide_typeof_helper< - divide_typeof_helper<divide_typeof_helper<volume,mass>::type,time>::type, - time - >::type volume_over_mass_time_squared; -typedef multiply_typeof_helper<energy,time>::type energy_time; -typedef divide_typeof_helper<electric_charge,amount>::type electric_charge_over_amount; - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/universal_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/universal_constants.hpp deleted file mode 100644 index 9aa64c4aef..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata/universal_constants.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// 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_CODATA_UNIVERSAL_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_UNIVERSAL_CONSTANTS_HPP - -#include <boost/units/quantity.hpp> -#include <boost/units/static_constant.hpp> - -#include <boost/units/systems/detail/constants.hpp> -#include <boost/units/systems/si/capacitance.hpp> -#include <boost/units/systems/si/current.hpp> -#include <boost/units/systems/si/energy.hpp> -#include <boost/units/systems/si/force.hpp> -#include <boost/units/systems/si/length.hpp> -#include <boost/units/systems/si/mass.hpp> -#include <boost/units/systems/si/resistance.hpp> -#include <boost/units/systems/si/temperature.hpp> -#include <boost/units/systems/si/time.hpp> -#include <boost/units/systems/si/velocity.hpp> -#include <boost/units/systems/si/volume.hpp> -#include <boost/units/systems/si/codata/typedefs.hpp> - -/// \file -/// CODATA recommended values of fundamental universal constants -/// using CODATA 2006 values as of 2007/03/30 - -namespace boost { - -namespace units { - -namespace si { - -namespace constants { - -namespace codata { - -/// CODATA recommended values of the fundamental physical constants: NIST SP 961 - -// UNIVERSAL -/// speed of light -BOOST_UNITS_PHYSICAL_CONSTANT(c,quantity<velocity>,299792458.0*meters/second,0.0*meters/second); -/// magnetic constant (exactly 4 pi x 10^(-7) - error is due to finite precision of pi) -BOOST_UNITS_PHYSICAL_CONSTANT(mu_0,quantity<force_over_current_squared>,12.56637061435917295385057353311801153679e-7*newtons/ampere/ampere,0.0*newtons/ampere/ampere); -/// electric constant -BOOST_UNITS_PHYSICAL_CONSTANT(epsilon_0,quantity<capacitance_over_length>,8.854187817620389850536563031710750260608e-12*farad/meter,0.0*farad/meter); -/// characteristic impedance of vacuum -BOOST_UNITS_PHYSICAL_CONSTANT(Z_0,quantity<resistance>,376.7303134617706554681984004203193082686*ohm,0.0*ohm); -/// Newtonian constant of gravitation -BOOST_UNITS_PHYSICAL_CONSTANT(G,quantity<volume_over_mass_time_squared>,6.67428e-11*cubic_meters/kilogram/second/second,6.7e-15*cubic_meters/kilogram/second/second); -/// Planck constant -BOOST_UNITS_PHYSICAL_CONSTANT(h,quantity<energy_time>,6.62606896e-34*joule*seconds,3.3e-41*joule*seconds); -/// Dirac constant -BOOST_UNITS_PHYSICAL_CONSTANT(hbar,quantity<energy_time>,1.054571628e-34*joule*seconds,5.3e-42*joule*seconds); -/// Planck mass -BOOST_UNITS_PHYSICAL_CONSTANT(m_P,quantity<mass>,2.17644e-8*kilograms,1.1e-12*kilograms); -/// Planck temperature -BOOST_UNITS_PHYSICAL_CONSTANT(T_P,quantity<temperature>,1.416785e32*kelvin,7.1e27*kelvin); -/// Planck length -BOOST_UNITS_PHYSICAL_CONSTANT(l_P,quantity<length>,1.616252e-35*meters,8.1e-40*meters); -/// Planck time -BOOST_UNITS_PHYSICAL_CONSTANT(t_P,quantity<time>,5.39124e-44*seconds,2.7e-48*seconds); - -} // namespace codata - -} // namespace constants - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_CODATA_UNIVERSAL_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/codata_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata_constants.hpp deleted file mode 100644 index 69bb858a24..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/codata_constants.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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_CODATA_CONSTANTS_HPP -#define BOOST_UNITS_CODATA_CONSTANTS_HPP - -#include <boost/units/systems/si/codata/atomic-nuclear_constants.hpp> -#include <boost/units/systems/si/codata/electromagnetic_constants.hpp> -#include <boost/units/systems/si/codata/physico-chemical_constants.hpp> -#include <boost/units/systems/si/codata/universal_constants.hpp> - -#endif // BOOST_UNITS_CODATA_CONSTANTS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/conductance.hpp b/contrib/restricted/boost/boost/units/systems/si/conductance.hpp deleted file mode 100644 index 68c82c9648..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/conductance.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_SI_CONDUCTANCE_HPP -#define BOOST_UNITS_SI_CONDUCTANCE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/conductance.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<conductance_dimension,si::system> conductance; - -BOOST_UNITS_STATIC_CONSTANT(siemen,conductance); -BOOST_UNITS_STATIC_CONSTANT(siemens,conductance); -BOOST_UNITS_STATIC_CONSTANT(mho,conductance); -BOOST_UNITS_STATIC_CONSTANT(mhos,conductance); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_CONDUCTANCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/conductivity.hpp b/contrib/restricted/boost/boost/units/systems/si/conductivity.hpp deleted file mode 100644 index 0f48b64e49..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/conductivity.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_CONDUCTIVITY_HPP -#define BOOST_UNITS_SI_CONDUCTIVITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/conductivity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<conductivity_dimension,si::system> conductivity; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_CONDUCTIVITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/current.hpp b/contrib/restricted/boost/boost/units/systems/si/current.hpp deleted file mode 100644 index e2ba345b80..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/current.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_CURRENT_HPP -#define BOOST_UNITS_SI_CURRENT_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<current_dimension,si::system> current; - -BOOST_UNITS_STATIC_CONSTANT(ampere,current); -BOOST_UNITS_STATIC_CONSTANT(amperes,current); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_CURRENT_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/dimensionless.hpp b/contrib/restricted/boost/boost/units/systems/si/dimensionless.hpp deleted file mode 100644 index aa7b2c380d..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/dimensionless.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_SI_DIMENSIONLESS_HPP -#define BOOST_UNITS_SI_DIMENSIONLESS_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -BOOST_UNITS_STATIC_CONSTANT(si_dimensionless,dimensionless); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_DIMENSIONLESS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/dose_equivalent.hpp b/contrib/restricted/boost/boost/units/systems/si/dose_equivalent.hpp deleted file mode 100644 index 0be0d3b000..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/dose_equivalent.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_DOSE_EQUIVALENT_HPP -#define BOOST_UNITS_SI_DOSE_EQUIVALENT_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/dose_equivalent.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<dose_equivalent_dimension,si::system> dose_equivalent; - -BOOST_UNITS_STATIC_CONSTANT(sievert,dose_equivalent); -BOOST_UNITS_STATIC_CONSTANT(sieverts,dose_equivalent); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_DOSE_EQUIVALENT_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/dynamic_viscosity.hpp b/contrib/restricted/boost/boost/units/systems/si/dynamic_viscosity.hpp deleted file mode 100644 index f72523feca..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/dynamic_viscosity.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_DYNAMIC_VISCOSITY_HPP -#define BOOST_UNITS_SI_DYNAMIC_VISCOSITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/dynamic_viscosity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<dynamic_viscosity_dimension,si::system> dynamic_viscosity; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_DYNAMIC_VISCOSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/electric_charge.hpp b/contrib/restricted/boost/boost/units/systems/si/electric_charge.hpp deleted file mode 100644 index fa1ccff018..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/electric_charge.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_ELECTRIC_CHARGE_HPP -#define BOOST_UNITS_SI_ELECTRIC_CHARGE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/electric_charge.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<electric_charge_dimension,si::system> electric_charge; - -BOOST_UNITS_STATIC_CONSTANT(coulomb,electric_charge); -BOOST_UNITS_STATIC_CONSTANT(coulombs,electric_charge); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ELECTRIC_CHARGE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/electric_potential.hpp b/contrib/restricted/boost/boost/units/systems/si/electric_potential.hpp deleted file mode 100644 index e737985bc8..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/electric_potential.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_ELECTRIC_POTENTIAL_HPP -#define BOOST_UNITS_SI_ELECTRIC_POTENTIAL_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/electric_potential.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<electric_potential_dimension,si::system> electric_potential; - -BOOST_UNITS_STATIC_CONSTANT(volt,electric_potential); -BOOST_UNITS_STATIC_CONSTANT(volts,electric_potential); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ELECTRIC_POTENTIAL_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/energy.hpp b/contrib/restricted/boost/boost/units/systems/si/energy.hpp deleted file mode 100644 index 4fb1aa806d..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/energy.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_ENERGY_HPP -#define BOOST_UNITS_SI_ENERGY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/energy.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<energy_dimension,si::system> energy; - -BOOST_UNITS_STATIC_CONSTANT(joule,energy); -BOOST_UNITS_STATIC_CONSTANT(joules,energy); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ENERGY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/force.hpp b/contrib/restricted/boost/boost/units/systems/si/force.hpp deleted file mode 100644 index cd2689f6b3..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/force.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_FORCE_HPP -#define BOOST_UNITS_SI_FORCE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/force.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<force_dimension,si::system> force; - -BOOST_UNITS_STATIC_CONSTANT(newton,force); -BOOST_UNITS_STATIC_CONSTANT(newtons,force); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_FORCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/frequency.hpp b/contrib/restricted/boost/boost/units/systems/si/frequency.hpp deleted file mode 100644 index 83fbb5cff2..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/frequency.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_FREQUENCY_HPP -#define BOOST_UNITS_SI_FREQUENCY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/frequency.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<frequency_dimension,si::system> frequency; - -BOOST_UNITS_STATIC_CONSTANT(hertz,frequency); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_FREQUENCY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/illuminance.hpp b/contrib/restricted/boost/boost/units/systems/si/illuminance.hpp deleted file mode 100644 index 96f28c70b7..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/illuminance.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_ILLUMINANCE_HPP -#define BOOST_UNITS_SI_ILLUMINANCE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/illuminance.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<illuminance_dimension,si::system> illuminance; - -BOOST_UNITS_STATIC_CONSTANT(lux,illuminance); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_ILLUMINANCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/impedance.hpp b/contrib/restricted/boost/boost/units/systems/si/impedance.hpp deleted file mode 100644 index d2d7195e64..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/impedance.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_IMPEDANCE_HPP -#define BOOST_UNITS_SI_IMPEDANCE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/impedance.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<impedance_dimension,si::system> impedance; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_IMPEDANCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/inductance.hpp b/contrib/restricted/boost/boost/units/systems/si/inductance.hpp deleted file mode 100644 index a3f8f3ad31..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/inductance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_INDUCTANCE_HPP -#define BOOST_UNITS_SI_INDUCTANCE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/inductance.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<inductance_dimension,si::system> inductance; - -BOOST_UNITS_STATIC_CONSTANT(henry,inductance); -BOOST_UNITS_STATIC_CONSTANT(henrys,inductance); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_INDUCTANCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/io.hpp b/contrib/restricted/boost/boost/units/systems/si/io.hpp deleted file mode 100644 index 3f096cae83..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/io.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// 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_SI_IO_HPP -#define BOOST_UNITS_SI_IO_HPP - -#include <boost/units/io.hpp> -#include <boost/units/reduce_unit.hpp> - -#include <boost/units/systems/si.hpp> - -namespace boost { - -namespace units { - -// gray and sievert are indistinguishable -inline std::string name_string(const reduce_unit<si::absorbed_dose>::type&) { return "gray"; } -inline std::string symbol_string(const reduce_unit<si::absorbed_dose>::type&) { return "Gy"; } - -// activity and frequency are indistinguishable - would need a "decays" base unit -//inline std::string name_string(const si::activity&) { return "becquerel"; } -//inline std::string symbol_string(const si::activity&) { return "Bq"; } - -inline std::string name_string(const reduce_unit<si::capacitance>::type&) { return "farad"; } -inline std::string symbol_string(const reduce_unit<si::capacitance>::type&) { return "F"; } - -inline std::string name_string(const reduce_unit<si::catalytic_activity>::type&) { return "katal"; } -inline std::string symbol_string(const reduce_unit<si::catalytic_activity>::type&) { return "kat"; } - -inline std::string name_string(const reduce_unit<si::conductance>::type&) { return "siemen"; } -inline std::string symbol_string(const reduce_unit<si::conductance>::type&) { return "S"; } - -// gray and sievert are indistinguishable -//inline std::string name_string(const si::dose_equivalent&) { return "sievert"; } -//inline std::string symbol_string(const si::dose_equivalent&) { return "Sv"; } - -inline std::string name_string(const reduce_unit<si::electric_charge>::type&) { return "coulomb"; } -inline std::string symbol_string(const reduce_unit<si::electric_charge>::type&) { return "C"; } - -inline std::string name_string(const reduce_unit<si::electric_potential>::type&) { return "volt"; } -inline std::string symbol_string(const reduce_unit<si::electric_potential>::type&) { return "V"; } - -inline std::string name_string(const reduce_unit<si::energy>::type&) { return "joule"; } -inline std::string symbol_string(const reduce_unit<si::energy>::type&) { return "J"; } - -inline std::string name_string(const reduce_unit<si::force>::type&) { return "newton"; } -inline std::string symbol_string(const reduce_unit<si::force>::type&) { return "N"; } - -inline std::string name_string(const reduce_unit<si::frequency>::type&) { return "hertz"; } -inline std::string symbol_string(const reduce_unit<si::frequency>::type&) { return "Hz"; } - -inline std::string name_string(const reduce_unit<si::illuminance>::type&) { return "lux"; } -inline std::string symbol_string(const reduce_unit<si::illuminance>::type&) { return "lx"; } - -inline std::string name_string(const reduce_unit<si::inductance>::type&) { return "henry"; } -inline std::string symbol_string(const reduce_unit<si::inductance>::type&) { return "H"; } - -inline std::string name_string(const reduce_unit<si::luminous_flux>::type&) { return "lumen"; } -inline std::string symbol_string(const reduce_unit<si::luminous_flux>::type&) { return "lm"; } - -inline std::string name_string(const reduce_unit<si::magnetic_flux>::type&) { return "weber"; } -inline std::string symbol_string(const reduce_unit<si::magnetic_flux>::type&) { return "Wb"; } - -inline std::string name_string(const reduce_unit<si::magnetic_flux_density>::type&) { return "tesla"; } -inline std::string symbol_string(const reduce_unit<si::magnetic_flux_density>::type&) { return "T"; } - -inline std::string name_string(const reduce_unit<si::power>::type&) { return "watt"; } -inline std::string symbol_string(const reduce_unit<si::power>::type&) { return "W"; } - -inline std::string name_string(const reduce_unit<si::pressure>::type&) { return "pascal"; } -inline std::string symbol_string(const reduce_unit<si::pressure>::type&) { return "Pa"; } - -inline std::string name_string(const reduce_unit<si::resistance>::type&) { return "ohm"; } -inline std::string symbol_string(const reduce_unit<si::resistance>::type&) { return "Ohm"; } - - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_IO_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/kinematic_viscosity.hpp b/contrib/restricted/boost/boost/units/systems/si/kinematic_viscosity.hpp deleted file mode 100644 index 0224644c1e..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/kinematic_viscosity.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_KINEMATIC_VISCOSITY_HPP -#define BOOST_UNITS_SI_KINEMATIC_VISCOSITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/kinematic_viscosity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<kinematic_viscosity_dimension,si::system> kinematic_viscosity; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_KINEMATIC_VISCOSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/length.hpp b/contrib/restricted/boost/boost/units/systems/si/length.hpp deleted file mode 100644 index 40eab13dbc..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/length.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// 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_SI_LENGTH_HPP -#define BOOST_UNITS_SI_LENGTH_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<length_dimension,si::system> length; - -BOOST_UNITS_STATIC_CONSTANT(meter,length); -BOOST_UNITS_STATIC_CONSTANT(meters,length); -BOOST_UNITS_STATIC_CONSTANT(metre,length); -BOOST_UNITS_STATIC_CONSTANT(metres,length); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_LENGTH_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/luminous_flux.hpp b/contrib/restricted/boost/boost/units/systems/si/luminous_flux.hpp deleted file mode 100644 index 99a1acf859..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/luminous_flux.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_LUMINOUS_FLUX_HPP -#define BOOST_UNITS_SI_LUMINOUS_FLUX_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/luminous_flux.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<luminous_flux_dimension,si::system> luminous_flux; - -BOOST_UNITS_STATIC_CONSTANT(lumen,luminous_flux); -BOOST_UNITS_STATIC_CONSTANT(lumens,luminous_flux); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_LUMINOUS_FLUX_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/luminous_intensity.hpp b/contrib/restricted/boost/boost/units/systems/si/luminous_intensity.hpp deleted file mode 100644 index 2558c9e470..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/luminous_intensity.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_LUMINOUS_INTENSITY_HPP -#define BOOST_UNITS_SI_LUMINOUS_INTENSITY_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<luminous_intensity_dimension,si::system> luminous_intensity; - -BOOST_UNITS_STATIC_CONSTANT(candela,luminous_intensity); -BOOST_UNITS_STATIC_CONSTANT(candelas,luminous_intensity); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_LUMINOUS_INTENSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/magnetic_field_intensity.hpp b/contrib/restricted/boost/boost/units/systems/si/magnetic_field_intensity.hpp deleted file mode 100644 index 2f36d9054f..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/magnetic_field_intensity.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_MAGNETIC_FIELD_INTENSITY_HPP -#define BOOST_UNITS_SI_MAGNETIC_FIELD_INTENSITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/magnetic_field_intensity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<magnetic_field_intensity_dimension,si::system> magnetic_field_intensity; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_MAGNETIC_FIELD_INTENSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/magnetic_flux.hpp b/contrib/restricted/boost/boost/units/systems/si/magnetic_flux.hpp deleted file mode 100644 index 602a380ea2..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/magnetic_flux.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_MAGNETIC_FLUX_HPP -#define BOOST_UNITS_SI_MAGNETIC_FLUX_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/magnetic_flux.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<magnetic_flux_dimension,si::system> magnetic_flux; - -BOOST_UNITS_STATIC_CONSTANT(weber,magnetic_flux); -BOOST_UNITS_STATIC_CONSTANT(webers,magnetic_flux); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_MAGNETIC_FLUX_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/magnetic_flux_density.hpp b/contrib/restricted/boost/boost/units/systems/si/magnetic_flux_density.hpp deleted file mode 100644 index fc89069b3f..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/magnetic_flux_density.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_MAGNETIC_FLUX_DENSITY_HPP -#define BOOST_UNITS_SI_MAGNETIC_FLUX_DENSITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/magnetic_flux_density.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<magnetic_flux_density_dimension,si::system> magnetic_flux_density; - -BOOST_UNITS_STATIC_CONSTANT(tesla,magnetic_flux_density); -BOOST_UNITS_STATIC_CONSTANT(teslas,magnetic_flux_density); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_MAGNETIC_FLUX_DENSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/mass.hpp b/contrib/restricted/boost/boost/units/systems/si/mass.hpp deleted file mode 100644 index 5f35225c65..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/mass.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// 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_SI_MASS_HPP -#define BOOST_UNITS_SI_MASS_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<mass_dimension,si::system> mass; - -BOOST_UNITS_STATIC_CONSTANT(kilogram,mass); -BOOST_UNITS_STATIC_CONSTANT(kilograms,mass); -BOOST_UNITS_STATIC_CONSTANT(kilogramme,mass); -BOOST_UNITS_STATIC_CONSTANT(kilogrammes,mass); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_MASS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/mass_density.hpp b/contrib/restricted/boost/boost/units/systems/si/mass_density.hpp deleted file mode 100644 index a321e084ff..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/mass_density.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_SI_MASS_DENSITY_HPP -#define BOOST_UNITS_SI_MASS_DENSITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/mass_density.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<mass_density_dimension,si::system> mass_density; - -BOOST_UNITS_STATIC_CONSTANT(kilogram_per_cubic_meter,mass_density); -BOOST_UNITS_STATIC_CONSTANT(kilograms_per_cubic_meter,mass_density); -BOOST_UNITS_STATIC_CONSTANT(kilogramme_per_cubic_metre,mass_density); -BOOST_UNITS_STATIC_CONSTANT(kilogrammes_per_cubic_metre,mass_density); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_MASS_DENSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/moment_of_inertia.hpp b/contrib/restricted/boost/boost/units/systems/si/moment_of_inertia.hpp deleted file mode 100644 index b86c0e66f4..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/moment_of_inertia.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_MOMENT_OF_INERTIA_HPP -#define BOOST_UNITS_SI_MOMENT_OF_INERTIA_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/moment_of_inertia.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<moment_of_inertia_dimension,si::system> moment_of_inertia; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_MOMENT_OF_INERTIA_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/momentum.hpp b/contrib/restricted/boost/boost/units/systems/si/momentum.hpp deleted file mode 100644 index fb6f2d344a..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/momentum.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_MOMENTUM_HPP -#define BOOST_UNITS_SI_MOMENTUM_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/momentum.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<momentum_dimension,si::system> momentum; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_MOMENTUM_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/permeability.hpp b/contrib/restricted/boost/boost/units/systems/si/permeability.hpp deleted file mode 100644 index 72ee3336e5..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/permeability.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_PERMEABILITY_HPP -#define BOOST_UNITS_SI_PERMEABILITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/permeability.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<permeability_dimension,si::system> permeability; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_PERMEABILITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/permittivity.hpp b/contrib/restricted/boost/boost/units/systems/si/permittivity.hpp deleted file mode 100644 index b46c7ae6f0..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/permittivity.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_PERMITTIVITY_HPP -#define BOOST_UNITS_SI_PERMITTIVITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/permittivity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<permittivity_dimension,si::system> permittivity; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_PERMITTIVITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/plane_angle.hpp b/contrib/restricted/boost/boost/units/systems/si/plane_angle.hpp deleted file mode 100644 index 918900c6a4..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/plane_angle.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_PLANE_ANGLE_HPP -#define BOOST_UNITS_SI_PLANE_ANGLE_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<plane_angle_dimension,si::system> plane_angle; - -BOOST_UNITS_STATIC_CONSTANT(radian,plane_angle); -BOOST_UNITS_STATIC_CONSTANT(radians,plane_angle); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_PLANE_ANGLE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/power.hpp b/contrib/restricted/boost/boost/units/systems/si/power.hpp deleted file mode 100644 index 9d1b979bfd..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/power.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_POWER_HPP -#define BOOST_UNITS_SI_POWER_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/power.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<power_dimension,si::system> power; - -BOOST_UNITS_STATIC_CONSTANT(watt,power); -BOOST_UNITS_STATIC_CONSTANT(watts,power); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_POWER_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/prefixes.hpp b/contrib/restricted/boost/boost/units/systems/si/prefixes.hpp deleted file mode 100644 index ec36fd0d8a..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/prefixes.hpp +++ /dev/null @@ -1,77 +0,0 @@ -// 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) 2007-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_SI_PREFIXES_HPP -#define BOOST_UNITS_SI_PREFIXES_HPP - -#include <boost/units/static_constant.hpp> - -#include <boost/units/make_scaled_unit.hpp> -#include <boost/units/systems/si/dimensionless.hpp> - -namespace boost { - -namespace units { - -namespace si { - -#define BOOST_UNITS_METRIC_PREFIX(exponent, name) \ - typedef make_scaled_unit<dimensionless, scale<10, static_rational<exponent> > >::type name ## _type;\ - BOOST_UNITS_STATIC_CONSTANT(name, name ## _type) - -BOOST_UNITS_METRIC_PREFIX(-24, yocto); -BOOST_UNITS_METRIC_PREFIX(-21, zepto); -BOOST_UNITS_METRIC_PREFIX(-18, atto); -BOOST_UNITS_METRIC_PREFIX(-15, femto); -BOOST_UNITS_METRIC_PREFIX(-12, pico); -BOOST_UNITS_METRIC_PREFIX(-9, nano); -BOOST_UNITS_METRIC_PREFIX(-6, micro); -BOOST_UNITS_METRIC_PREFIX(-3, milli); -BOOST_UNITS_METRIC_PREFIX(-2, centi); -BOOST_UNITS_METRIC_PREFIX(-1, deci); -BOOST_UNITS_METRIC_PREFIX(1, deka); -BOOST_UNITS_METRIC_PREFIX(2, hecto); -BOOST_UNITS_METRIC_PREFIX(3, kilo); -BOOST_UNITS_METRIC_PREFIX(6, mega); -BOOST_UNITS_METRIC_PREFIX(9, giga); -BOOST_UNITS_METRIC_PREFIX(12, tera); -BOOST_UNITS_METRIC_PREFIX(15, peta); -BOOST_UNITS_METRIC_PREFIX(18, exa); -BOOST_UNITS_METRIC_PREFIX(21, zetta); -BOOST_UNITS_METRIC_PREFIX(24, yotta); - -/*BOOST_UNITS_STATIC_CONSTANT(yocto,long double) = (1e-24); ///< metric prefix for 1.0e-24 -BOOST_UNITS_STATIC_CONSTANT(zepto,long double) = (1e-21); ///< metric prefix for 1.0e-21 -BOOST_UNITS_STATIC_CONSTANT(atto,long double) = (1e-18); ///< metric prefix for 1.0e-18 -BOOST_UNITS_STATIC_CONSTANT(femto,long double) = (1e-15); ///< metric prefix for 1.0e-15 -BOOST_UNITS_STATIC_CONSTANT(pico,long double) = (1e-12); ///< metric prefix for 1.0e-12 -BOOST_UNITS_STATIC_CONSTANT(nano,long double) = (1e-9); ///< metric prefix for 1.0e-9 -BOOST_UNITS_STATIC_CONSTANT(micro,long double) = (1e-6); ///< metric prefix for 1.0e-6 -BOOST_UNITS_STATIC_CONSTANT(milli,long double) = (1e-3); ///< metric prefix for 1.0e-3 -BOOST_UNITS_STATIC_CONSTANT(centi,long double) = (1e-2); ///< metric prefix for 1.0e-2 -BOOST_UNITS_STATIC_CONSTANT(deci,long double) = (1e-1); ///< metric prefix for 1.0e-1 -BOOST_UNITS_STATIC_CONSTANT(deka,long double) = (1e1); ///< metric prefix for 1.0e+1 -BOOST_UNITS_STATIC_CONSTANT(hecto,long double) = (1e2); ///< metric prefix for 1.0e+2 -BOOST_UNITS_STATIC_CONSTANT(kilo,long double) = (1e3); ///< metric prefix for 1.0e+3 -BOOST_UNITS_STATIC_CONSTANT(mega,long double) = (1e6); ///< metric prefix for 1.0e+6 -BOOST_UNITS_STATIC_CONSTANT(giga,long double) = (1e9); ///< metric prefix for 1.0e+9 -BOOST_UNITS_STATIC_CONSTANT(tera,long double) = (1e12); ///< metric prefix for 1.0e+12 -BOOST_UNITS_STATIC_CONSTANT(peta,long double) = (1e15); ///< metric prefix for 1.0e+15 -BOOST_UNITS_STATIC_CONSTANT(exa,long double) = (1e18); ///< metric prefix for 1.0e+18 -BOOST_UNITS_STATIC_CONSTANT(zetta,long double) = (1e21); ///< metric prefix for 1.0e+21 -BOOST_UNITS_STATIC_CONSTANT(yotta,long double) = (1e24); ///< metric prefix for 1.0e+24 */ - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_PREFIXES_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/pressure.hpp b/contrib/restricted/boost/boost/units/systems/si/pressure.hpp deleted file mode 100644 index b9105e44ec..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/pressure.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// 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_SI_PRESSURE_HPP -#define BOOST_UNITS_SI_PRESSURE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/pressure.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<pressure_dimension,si::system> pressure; - -// windef.h #defines pascal on Metrowerks compilers -#if defined(__MWERKS__) - #if !__option(only_std_keywords) - #define BOOST_UNITS_NO_PASCAL 1 - #elif defined(pascal) - #define BOOST_UNITS_NO_PASCAL 1 - #endif -#elif defined(pascal) - #define BOOST_UNITS_NO_PASCAL 1 -#elif BOOST_MSVC - #define BOOST_UNITS_NO_PASCAL 1 -#endif - -#ifndef BOOST_UNITS_NO_PASCAL -BOOST_UNITS_STATIC_CONSTANT(pascal,pressure); -#endif -BOOST_UNITS_STATIC_CONSTANT(pascals,pressure); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_PRESSURE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/reluctance.hpp b/contrib/restricted/boost/boost/units/systems/si/reluctance.hpp deleted file mode 100644 index 30014cc460..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/reluctance.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_RELUCTANCE_HPP -#define BOOST_UNITS_SI_RELUCTANCE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/reluctance.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<reluctance_dimension,si::system> reluctance; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_RELUCTANCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/resistance.hpp b/contrib/restricted/boost/boost/units/systems/si/resistance.hpp deleted file mode 100644 index 4bcb13f6cd..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/resistance.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_RESISTANCE_HPP -#define BOOST_UNITS_SI_RESISTANCE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/resistance.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<resistance_dimension,si::system> resistance; - -BOOST_UNITS_STATIC_CONSTANT(ohm,resistance); -BOOST_UNITS_STATIC_CONSTANT(ohms,resistance); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_RESISTANCE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/resistivity.hpp b/contrib/restricted/boost/boost/units/systems/si/resistivity.hpp deleted file mode 100644 index bebfc4a042..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/resistivity.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_SI_RESISTIVITY_HPP -#define BOOST_UNITS_SI_RESISTIVITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/resistivity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<resistivity_dimension,si::system> resistivity; - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_RESISTIVITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/solid_angle.hpp b/contrib/restricted/boost/boost/units/systems/si/solid_angle.hpp deleted file mode 100644 index a5036c7bf2..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/solid_angle.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_SOLID_ANGLE_HPP -#define BOOST_UNITS_SI_SOLID_ANGLE_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<solid_angle_dimension,si::system> solid_angle; - -BOOST_UNITS_STATIC_CONSTANT(steradian,solid_angle); -BOOST_UNITS_STATIC_CONSTANT(steradians,solid_angle); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_SOLID_ANGLE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/surface_density.hpp b/contrib/restricted/boost/boost/units/systems/si/surface_density.hpp deleted file mode 100644 index f686c3d672..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/surface_density.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_SI_SURFACE_DENSITY_HPP -#define BOOST_UNITS_SI_SURFACE_DENSITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/surface_density.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<surface_density_dimension,si::system> surface_density; - -BOOST_UNITS_STATIC_CONSTANT(kilogram_per_square_meter,surface_density); -BOOST_UNITS_STATIC_CONSTANT(kilograms_per_square_meter,surface_density); -BOOST_UNITS_STATIC_CONSTANT(kilogramme_per_square_metre,surface_density); -BOOST_UNITS_STATIC_CONSTANT(kilogrammes_per_square_metre,surface_density); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_SURFACE_DENSITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/surface_tension.hpp b/contrib/restricted/boost/boost/units/systems/si/surface_tension.hpp deleted file mode 100644 index b4b181f508..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/surface_tension.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_SURFACE_TENSION_HPP -#define BOOST_UNITS_SI_SURFACE_TENSION_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/surface_tension.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<surface_tension_dimension,si::system> surface_tension; - -BOOST_UNITS_STATIC_CONSTANT(newton_per_meter,surface_tension); -BOOST_UNITS_STATIC_CONSTANT(newtons_per_meter,surface_tension); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_SURFACE_TENSION_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/temperature.hpp b/contrib/restricted/boost/boost/units/systems/si/temperature.hpp deleted file mode 100644 index 2bb70dd60b..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/temperature.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_TEMPERATURE_HPP -#define BOOST_UNITS_SI_TEMPERATURE_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<temperature_dimension,si::system> temperature; - -BOOST_UNITS_STATIC_CONSTANT(kelvin,temperature); -BOOST_UNITS_STATIC_CONSTANT(kelvins,temperature); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_TEMPERATURE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/time.hpp b/contrib/restricted/boost/boost/units/systems/si/time.hpp deleted file mode 100644 index 1b22de51b6..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/time.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_SI_TIME_HPP -#define BOOST_UNITS_SI_TIME_HPP - -#include <boost/units/systems/si/base.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<time_dimension,si::system> time; - -BOOST_UNITS_STATIC_CONSTANT(second,time); -BOOST_UNITS_STATIC_CONSTANT(seconds,time); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_TIME_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/torque.hpp b/contrib/restricted/boost/boost/units/systems/si/torque.hpp deleted file mode 100644 index de9e685707..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/torque.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// 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_SI_TORQUE_HPP -#define BOOST_UNITS_SI_TORQUE_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/torque.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<torque_dimension,si::system> torque; - -BOOST_UNITS_STATIC_CONSTANT(newton_meter,torque); -BOOST_UNITS_STATIC_CONSTANT(newton_meters,torque); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_TORQUE_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/velocity.hpp b/contrib/restricted/boost/boost/units/systems/si/velocity.hpp deleted file mode 100644 index 44a5911c13..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/velocity.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_SI_VELOCITY_HPP -#define BOOST_UNITS_SI_VELOCITY_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/velocity.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<velocity_dimension,si::system> velocity; - -BOOST_UNITS_STATIC_CONSTANT(meter_per_second,velocity); -BOOST_UNITS_STATIC_CONSTANT(meters_per_second,velocity); -BOOST_UNITS_STATIC_CONSTANT(metre_per_second,velocity); -BOOST_UNITS_STATIC_CONSTANT(metres_per_second,velocity); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_VELOCITY_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/volume.hpp b/contrib/restricted/boost/boost/units/systems/si/volume.hpp deleted file mode 100644 index 2bc9dc22b9..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/volume.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_SI_VOLUME_HPP -#define BOOST_UNITS_SI_VOLUME_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/volume.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<volume_dimension,si::system> volume; - -BOOST_UNITS_STATIC_CONSTANT(cubic_meter,volume); -BOOST_UNITS_STATIC_CONSTANT(cubic_meters,volume); -BOOST_UNITS_STATIC_CONSTANT(cubic_metre,volume); -BOOST_UNITS_STATIC_CONSTANT(cubic_metres,volume); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_VOLUME_HPP diff --git a/contrib/restricted/boost/boost/units/systems/si/wavenumber.hpp b/contrib/restricted/boost/boost/units/systems/si/wavenumber.hpp deleted file mode 100644 index a593d011bf..0000000000 --- a/contrib/restricted/boost/boost/units/systems/si/wavenumber.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// 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_SI_WAVENUMBER_HPP -#define BOOST_UNITS_SI_WAVENUMBER_HPP - -#include <boost/units/systems/si/base.hpp> -#include <boost/units/physical_dimensions/wavenumber.hpp> - -namespace boost { - -namespace units { - -namespace si { - -typedef unit<wavenumber_dimension,si::system> wavenumber; - -BOOST_UNITS_STATIC_CONSTANT(reciprocal_meter,wavenumber); -BOOST_UNITS_STATIC_CONSTANT(reciprocal_meters,wavenumber); -BOOST_UNITS_STATIC_CONSTANT(reciprocal_metre,wavenumber); -BOOST_UNITS_STATIC_CONSTANT(reciprocal_metres,wavenumber); - -} // namespace si - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_SI_WAVENUMBER_HPP diff --git a/contrib/restricted/boost/boost/units/systems/temperature/celsius.hpp b/contrib/restricted/boost/boost/units/systems/temperature/celsius.hpp deleted file mode 100644 index 5b8a41bed9..0000000000 --- a/contrib/restricted/boost/boost/units/systems/temperature/celsius.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// 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_TEMPERATURE_CELSIUS_HPP -#define BOOST_UNITS_TEMPERATURE_CELSIUS_HPP - -#include <string> - -#include <boost/units/absolute.hpp> -#include <boost/units/static_constant.hpp> -#include <boost/units/make_system.hpp> -#include <boost/units/base_units/temperature/celsius.hpp> - -namespace boost { - -namespace units { - -namespace celsius { - -typedef make_system<boost::units::temperature::celsius_base_unit>::type system; - -typedef unit<temperature_dimension,system> temperature; - -BOOST_UNITS_STATIC_CONSTANT(degree,temperature); -BOOST_UNITS_STATIC_CONSTANT(degrees,temperature); - -} // namespace celsius - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_TEMPERATURE_CELSIUS_HPP diff --git a/contrib/restricted/boost/boost/units/systems/temperature/fahrenheit.hpp b/contrib/restricted/boost/boost/units/systems/temperature/fahrenheit.hpp deleted file mode 100644 index 3065723b57..0000000000 --- a/contrib/restricted/boost/boost/units/systems/temperature/fahrenheit.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// 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_TEMPERATURE_FAHRENHEIT_HPP -#define BOOST_UNITS_TEMPERATURE_FAHRENHEIT_HPP - -#include <string> - -#include <boost/units/absolute.hpp> -#include <boost/units/make_system.hpp> -#include <boost/units/static_constant.hpp> -#include <boost/units/base_units/temperature/fahrenheit.hpp> - -namespace boost { - -namespace units { - -namespace fahrenheit { - -typedef make_system<boost::units::temperature::fahrenheit_base_unit>::type system; - -typedef unit<temperature_dimension,system> temperature; - -BOOST_UNITS_STATIC_CONSTANT(degree,temperature); -BOOST_UNITS_STATIC_CONSTANT(degrees,temperature); - -} // namespace fahrenheit - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_TEMPERATURE_FAHRENHEIT_HPP diff --git a/contrib/restricted/boost/boost/units/unit.hpp b/contrib/restricted/boost/boost/units/unit.hpp deleted file mode 100644 index aa4611cf7f..0000000000 --- a/contrib/restricted/boost/boost/units/unit.hpp +++ /dev/null @@ -1,448 +0,0 @@ -// 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_UNIT_HPP -#define BOOST_UNITS_UNIT_HPP - -#include <boost/static_assert.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/mpl/assert.hpp> -#include <boost/type_traits/is_same.hpp> - -#include <boost/units/config.hpp> -#include <boost/units/dimension.hpp> -#include <boost/units/operators.hpp> -#include <boost/units/units_fwd.hpp> -#include <boost/units/homogeneous_system.hpp> -#include <boost/units/heterogeneous_system.hpp> -#include <boost/units/is_dimension_list.hpp> -#include <boost/units/reduce_unit.hpp> -#include <boost/units/static_rational.hpp> - -namespace boost { - -namespace units { - -/// class representing a model-dependent unit with no associated value - -/// (e.g. meters, Kelvin, feet, etc...) -template<class Dim,class System, class Enable> -class unit -{ - public: - typedef unit<Dim, System> unit_type; - typedef unit<Dim,System> this_type; - typedef Dim dimension_type; - typedef System system_type; - - BOOST_CONSTEXPR unit() { } - BOOST_CONSTEXPR unit(const this_type&) { } - //~unit() { } - - BOOST_CXX14_CONSTEXPR this_type& operator=(const this_type&) { return *this; } - - // sun will ignore errors resulting from templates - // instantiated in the return type of a function. - // Make sure that we get an error anyway by putting. - // the check in the destructor. - #ifdef __SUNPRO_CC - ~unit() { - BOOST_MPL_ASSERT((detail::check_system<System, Dim>)); - BOOST_MPL_ASSERT((is_dimension_list<Dim>)); - } - #else - private: - BOOST_MPL_ASSERT((detail::check_system<System, Dim>)); - BOOST_MPL_ASSERT((is_dimension_list<Dim>)); - #endif -}; - -} - -} - -#if BOOST_UNITS_HAS_BOOST_TYPEOF - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::unit, 2) - -#endif - -namespace boost { - -namespace units { - -/// Returns a unique type for every unit. -template<class Dim, class System> -struct reduce_unit<unit<Dim, System> > -{ - typedef unit< - Dim, - typename detail::make_heterogeneous_system< - Dim, - System - >::type - > type; -}; - -/// INTERNAL ONLY -template<class S1,class S2> -struct is_implicitly_convertible : - boost::is_same<typename reduce_unit<S1>::type, typename reduce_unit<S2>::type> -{ }; - -/// unit unary plus typeof helper -/// INTERNAL ONLY -template<class Dim,class System> -struct unary_plus_typeof_helper< unit<Dim,System> > -{ - typedef unit<Dim,System> type; -}; - -/// unit unary minus typeof helper -/// INTERNAL ONLY -template<class Dim,class System> -struct unary_minus_typeof_helper< unit<Dim,System> > -{ - typedef unit<Dim,System> type; -}; - -/// unit add typeof helper -/// INTERNAL ONLY -template<class Dim, - class System> -struct add_typeof_helper< unit<Dim,System>,unit<Dim,System> > -{ - typedef unit<Dim,System> type; -}; - -/// unit subtract typeof helper -/// INTERNAL ONLY -template<class Dim, - class System> -struct subtract_typeof_helper< unit<Dim,System>,unit<Dim,System> > -{ - typedef unit<Dim,System> type; -}; - -/// unit multiply typeof helper for two identical homogeneous systems -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System> -struct multiply_typeof_helper< unit<Dim1,homogeneous_system<System> >, - unit<Dim2,homogeneous_system<System> > > -{ - typedef unit<typename mpl::times<Dim1,Dim2>::type,homogeneous_system<System> > type; -}; - -/// unit multiply typeof helper for two different homogeneous systems -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System1, - class System2> -struct multiply_typeof_helper< unit<Dim1,homogeneous_system<System1> >, - unit<Dim2,homogeneous_system<System2> > > -{ - typedef unit< - typename mpl::times<Dim1,Dim2>::type, - typename detail::multiply_systems< - typename detail::make_heterogeneous_system<Dim1, System1>::type, - typename detail::make_heterogeneous_system<Dim2, System2>::type - >::type - > type; -}; - -/// unit multiply typeof helper for a heterogeneous and a homogeneous system -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System1, - class System2> -struct multiply_typeof_helper< unit<Dim1,heterogeneous_system<System1> >, - unit<Dim2,homogeneous_system<System2> > > -{ - typedef unit< - typename mpl::times<Dim1,Dim2>::type, - typename detail::multiply_systems< - heterogeneous_system<System1>, - typename detail::make_heterogeneous_system<Dim2, System2>::type - >::type - > type; -}; - -/// unit multiply typeof helper for a homogeneous and a heterogeneous system -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System1, - class System2> -struct multiply_typeof_helper< unit<Dim1,homogeneous_system<System1> >, - unit<Dim2,heterogeneous_system<System2> > > -{ - typedef unit< - typename mpl::times<Dim1,Dim2>::type, - typename detail::multiply_systems< - typename detail::make_heterogeneous_system<Dim1, System1>::type, - heterogeneous_system<System2> - >::type - > type; -}; - -/// unit multiply typeof helper for two heterogeneous systems -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System1, - class System2> -struct multiply_typeof_helper< unit<Dim1,heterogeneous_system<System1> >, - unit<Dim2,heterogeneous_system<System2> > > -{ - typedef unit< - typename mpl::times<Dim1,Dim2>::type, - typename detail::multiply_systems< - heterogeneous_system<System1>, - heterogeneous_system<System2> - >::type - > type; -}; - -/// unit divide typeof helper for two identical homogeneous systems -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System> -struct divide_typeof_helper< unit<Dim1,homogeneous_system<System> >, - unit<Dim2,homogeneous_system<System> > > -{ - typedef unit<typename mpl::divides<Dim1,Dim2>::type,homogeneous_system<System> > type; -}; - -/// unit divide typeof helper for two different homogeneous systems -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System1, - class System2> -struct divide_typeof_helper< unit<Dim1,homogeneous_system<System1> >, - unit<Dim2,homogeneous_system<System2> > > -{ - typedef unit< - typename mpl::divides<Dim1,Dim2>::type, - typename detail::divide_systems< - typename detail::make_heterogeneous_system<Dim1, System1>::type, - typename detail::make_heterogeneous_system<Dim2, System2>::type - >::type - > type; -}; - -/// unit divide typeof helper for a heterogeneous and a homogeneous system -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System1, - class System2> -struct divide_typeof_helper< unit<Dim1,heterogeneous_system<System1> >, - unit<Dim2,homogeneous_system<System2> > > -{ - typedef unit< - typename mpl::divides<Dim1,Dim2>::type, - typename detail::divide_systems< - heterogeneous_system<System1>, - typename detail::make_heterogeneous_system<Dim2, System2>::type - >::type - > type; -}; - -/// unit divide typeof helper for a homogeneous and a heterogeneous system -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System1, - class System2> -struct divide_typeof_helper< unit<Dim1,homogeneous_system<System1> >, - unit<Dim2,heterogeneous_system<System2> > > -{ - typedef unit< - typename mpl::divides<Dim1,Dim2>::type, - typename detail::divide_systems< - typename detail::make_heterogeneous_system<Dim1, System1>::type, - heterogeneous_system<System2> - >::type - > type; -}; - -/// unit divide typeof helper for two heterogeneous systems -/// INTERNAL ONLY -template<class Dim1, - class Dim2, - class System1, - class System2> -struct divide_typeof_helper< unit<Dim1,heterogeneous_system<System1> >, - unit<Dim2,heterogeneous_system<System2> > > -{ - typedef unit< - typename mpl::divides<Dim1,Dim2>::type, - typename detail::divide_systems< - heterogeneous_system<System1>, - heterogeneous_system<System2> - >::type - > type; -}; - -/// raise unit to a @c static_rational power -template<class Dim,class System,long N,long D> -struct power_typeof_helper<unit<Dim,System>,static_rational<N,D> > -{ - typedef unit<typename static_power<Dim,static_rational<N,D> >::type,typename static_power<System, static_rational<N,D> >::type> type; - - static BOOST_CONSTEXPR type value(const unit<Dim,System>&) - { - return type(); - } -}; - -/// take the @c static_rational root of a unit -template<class Dim,class System,long N,long D> -struct root_typeof_helper<unit<Dim,System>,static_rational<N,D> > -{ - typedef unit<typename static_root<Dim,static_rational<N,D> >::type,typename static_root<System, static_rational<N,D> >::type> type; - - static BOOST_CONSTEXPR type value(const unit<Dim,System>&) - { - return type(); - } -}; - -/// unit runtime unary plus -template<class Dim,class System> -BOOST_CONSTEXPR -typename unary_plus_typeof_helper< unit<Dim,System> >::type -operator+(const unit<Dim,System>&) -{ - typedef typename unary_plus_typeof_helper< unit<Dim,System> >::type type; - - return type(); -} - -/// unit runtime unary minus -template<class Dim,class System> -BOOST_CONSTEXPR -typename unary_minus_typeof_helper< unit<Dim,System> >::type -operator-(const unit<Dim,System>&) -{ - typedef typename unary_minus_typeof_helper< unit<Dim,System> >::type type; - - return type(); -} - -/// runtime add two units -template<class Dim1, - class Dim2, - class System1, - class System2> -BOOST_CONSTEXPR -typename add_typeof_helper< unit<Dim1,System1>, - unit<Dim2,System2> >::type -operator+(const unit<Dim1,System1>&,const unit<Dim2,System2>&) -{ - BOOST_STATIC_ASSERT((boost::is_same<System1,System2>::value == true)); - - typedef System1 system_type; - typedef typename add_typeof_helper< unit<Dim1,system_type>, - unit<Dim2,system_type> >::type type; - - return type(); -} - -/// runtime subtract two units -template<class Dim1, - class Dim2, - class System1, - class System2> -BOOST_CONSTEXPR -typename subtract_typeof_helper< unit<Dim1,System1>, - unit<Dim2,System2> >::type -operator-(const unit<Dim1,System1>&,const unit<Dim2,System2>&) -{ - BOOST_STATIC_ASSERT((boost::is_same<System1,System2>::value == true)); - - typedef System1 system_type; - typedef typename subtract_typeof_helper< unit<Dim1,system_type>, - unit<Dim2,system_type> >::type type; - - return type(); -} - -/// runtime multiply two units -template<class Dim1, - class Dim2, - class System1, - class System2> -BOOST_CONSTEXPR -typename multiply_typeof_helper< unit<Dim1,System1>, - unit<Dim2,System2> >::type -operator*(const unit<Dim1,System1>&,const unit<Dim2,System2>&) -{ - typedef typename multiply_typeof_helper< unit<Dim1,System1>, - unit<Dim2,System2> >::type type; - - return type(); -} - -/// runtime divide two units -template<class Dim1, - class Dim2, - class System1, - class System2> -BOOST_CONSTEXPR -typename divide_typeof_helper< unit<Dim1,System1>, - unit<Dim2,System2> >::type -operator/(const unit<Dim1,System1>&,const unit<Dim2,System2>&) -{ - typedef typename divide_typeof_helper< unit<Dim1,System1>, - unit<Dim2,System2> >::type type; - - return type(); -} - -/// unit runtime @c operator== -template<class Dim1, - class Dim2, - class System1, - class System2> -inline -BOOST_CONSTEXPR -bool -operator==(const unit<Dim1,System1>&,const unit<Dim2,System2>&) -{ - return boost::is_same<typename reduce_unit<unit<Dim1,System1> >::type, typename reduce_unit<unit<Dim2,System2> >::type>::value; -} - -/// unit runtime @c operator!= -template<class Dim1, - class Dim2, - class System1, - class System2> -inline -BOOST_CONSTEXPR -bool -operator!=(const unit<Dim1,System1>&,const unit<Dim2,System2>&) -{ - return !boost::is_same<typename reduce_unit<unit<Dim1,System1> >::type, typename reduce_unit<unit<Dim2,System2> >::type>::value; -} - -} // namespace units - -} // namespace boost - -#endif // BOOST_UNITS_UNIT_HPP diff --git a/contrib/restricted/boost/boost/units/units_fwd.hpp b/contrib/restricted/boost/boost/units/units_fwd.hpp deleted file mode 100644 index cca5c0b15a..0000000000 --- a/contrib/restricted/boost/boost/units/units_fwd.hpp +++ /dev/null @@ -1,73 +0,0 @@ -// 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_UNITS_FWD_HPP -#define BOOST_UNITS_UNITS_FWD_HPP - -/// -/// \file -/// \brief Forward declarations of library components. -/// \details Forward declarations of units library - dimensions, systems, quantity and string components. -/// - -#ifndef BOOST_UNITS_DOXYGEN - -#include <string> - -namespace boost { - -namespace units { - -template<typename T,typename V> struct dim; -template<typename T> struct is_dim; - -struct dimensionless_type; -template<class Item,class Next> struct list; -template<typename Seq> struct make_dimension_list; - -template<class T> struct is_dimensionless; -template<class S1,class S2> struct is_implicitly_convertible; -template<class T> struct get_dimension; -template<class T> struct get_system; - -template<class Y> class absolute; - -template<class Dim,class System, class Enable=void> class unit; - -template<long Base, class Exponent> struct scale; - -template<class BaseUnitTag> struct base_unit_info; -template<class System> struct dimensionless_unit; -template<class T> struct is_unit; -template<class T,class Dim> struct is_unit_of_dimension; -template<class T,class System> struct is_unit_of_system; - -template<class Unit,class Y = double> class quantity; - -template<class System,class Y> struct dimensionless_quantity; -template<class T> struct is_quantity; -template<class T,class Dim> struct is_quantity_of_dimension; -template<class T,class System> struct is_quantity_of_system; - -template<class From,class To> struct conversion_helper; - -template<class T> std::string to_string(const T&); -template<class T> std::string name_string(const T&); -template<class T> std::string symbol_string(const T&); -template<class T> std::string raw_string(const T&); -template<class T> std::string typename_string(const T&); - -} // namespace units - -} // namespace boost - -#endif - -#endif // BOOST_UNITS_UNITS_FWD_HPP diff --git a/contrib/restricted/boost/units/CMakeLists.txt b/contrib/restricted/boost/units/CMakeLists.txt new file mode 100644 index 0000000000..8bdd2d3de3 --- /dev/null +++ b/contrib/restricted/boost/units/CMakeLists.txt @@ -0,0 +1,30 @@ + +# This file was gererated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(restricted-boost-units INTERFACE) +target_include_directories(restricted-boost-units INTERFACE + ${CMAKE_SOURCE_DIR}/contrib/restricted/boost/units/include +) +target_link_libraries(restricted-boost-units INTERFACE + contrib-libs-cxxsupp + yutil + restricted-boost-assert + restricted-boost-config + restricted-boost-core + restricted-boost-integer + restricted-boost-io + restricted-boost-lambda + restricted-boost-math + restricted-boost-mpl + restricted-boost-preprocessor + restricted-boost-serialization + restricted-boost-static_assert + restricted-boost-type_traits + restricted-boost-typeof +) diff --git a/contrib/restricted/boost/units/README.md b/contrib/restricted/boost/units/README.md new file mode 100644 index 0000000000..685cb464aa --- /dev/null +++ b/contrib/restricted/boost/units/README.md @@ -0,0 +1,38 @@ +Boost.Units +=========== + +Boost.Units, part of collection of the [Boost C++ Libraries](http://github.com/boostorg), +implements dimensional analysis in a general and extensible manner, +treating it as a generic compile-time metaprogramming problem. +With appropriate compiler optimization, no runtime execution cost is introduced, +facilitating the use of this library to provide dimension checking in performance-critical code. + +### Directories + +* **doc** - QuickBook documentation sources +* **example** - examples +* **images** - images for documention +* **include** - Interface headers +* **test** - unit tests +* **test_headers** - unit tests for self containment of headers +* **tutorial** - tutorial + +### Test results + +@ | Travis | AppVeyor +--------|-------------|--------- +master | [![Build Status](https://travis-ci.org/boostorg/units.svg?branch=master)](https://travis-ci.org/boostorg/units) | [![Build Status](https://ci.appveyor.com/api/projects/status/github/boostorg/units?branch=master&svg=true)](https://ci.appveyor.com/project/boostorg/units) +develop | [![Build Status](https://travis-ci.org/boostorg/units.svg)](https://travis-ci.org/boostorg/units) | [![Build Status](https://ci.appveyor.com/api/projects/status/github/boostorg/units?svg=true)](https://ci.appveyor.com/project/boostorg/units) + +<a href="https://scan.coverity.com/projects/boostorg-units"> + <img alt="Coverity Scan Build Status" + src="https://img.shields.io/coverity/scan/14037.svg"/> +</a> + +### More information + +* [Documentation](http://boost.org/libs/units) + +### License + +Distributed under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt). |