stabilize build system: depends, installer, boost/bdb fixes, cross targets groundwork
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Applicative`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_APPLICATIVE_HPP
|
||||
#define BOOST_HANA_CONCEPT_APPLICATIVE_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/applicative.hpp>
|
||||
|
||||
#include <boost/hana/ap.hpp>
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/lift.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename A>
|
||||
struct Applicative
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<ap_impl<typename tag_of<A>::type>>::value &&
|
||||
!is_default<lift_impl<typename tag_of<A>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_APPLICATIVE_HPP
|
||||
@@ -0,0 +1,35 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Comonad`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_COMONAD_HPP
|
||||
#define BOOST_HANA_CONCEPT_COMONAD_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/comonad.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/duplicate.hpp>
|
||||
#include <boost/hana/extend.hpp>
|
||||
#include <boost/hana/extract.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename W>
|
||||
struct Comonad
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<extract_impl<typename tag_of<W>::type>>::value &&
|
||||
(!is_default<duplicate_impl<typename tag_of<W>::type>>::value ||
|
||||
!is_default<extend_impl<typename tag_of<W>::type>>::value)
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_COMONAD_HPP
|
||||
@@ -0,0 +1,32 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Comparable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_COMPARABLE_HPP
|
||||
#define BOOST_HANA_CONCEPT_COMPARABLE_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/comparable.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/equal.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename T>
|
||||
struct Comparable
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<equal_impl<typename tag_of<T>::type,
|
||||
typename tag_of<T>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_COMPARABLE_HPP
|
||||
@@ -0,0 +1,31 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Constant`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_CONSTANT_HPP
|
||||
#define BOOST_HANA_CONCEPT_CONSTANT_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/constant.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/value.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename C>
|
||||
struct Constant
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<value_impl<typename tag_of<C>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_CONSTANT_HPP
|
||||
@@ -0,0 +1,35 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::EuclideanRing`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_EUCLIDEAN_RING_HPP
|
||||
#define BOOST_HANA_CONCEPT_EUCLIDEAN_RING_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/euclidean_ring.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/div.hpp>
|
||||
#include <boost/hana/mod.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename R>
|
||||
struct EuclideanRing
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<mod_impl<typename tag_of<R>::type,
|
||||
typename tag_of<R>::type>>::value &&
|
||||
!is_default<div_impl<typename tag_of<R>::type,
|
||||
typename tag_of<R>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_EUCLIDEAN_RING_HPP
|
||||
@@ -0,0 +1,33 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Foldable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_FOLDABLE_HPP
|
||||
#define BOOST_HANA_CONCEPT_FOLDABLE_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/foldable.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/fold_left.hpp>
|
||||
#include <boost/hana/unpack.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename T>
|
||||
struct Foldable
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<fold_left_impl<typename tag_of<T>::type>>::value ||
|
||||
!is_default<unpack_impl<typename tag_of<T>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_FOLDABLE_HPP
|
||||
@@ -0,0 +1,33 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Functor`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_FUNCTOR_HPP
|
||||
#define BOOST_HANA_CONCEPT_FUNCTOR_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/functor.hpp>
|
||||
|
||||
#include <boost/hana/adjust_if.hpp>
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/transform.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename F>
|
||||
struct Functor
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<transform_impl<typename tag_of<F>::type>>::value ||
|
||||
!is_default<adjust_if_impl<typename tag_of<F>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_FUNCTOR_HPP
|
||||
@@ -0,0 +1,34 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Group`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_GROUP_HPP
|
||||
#define BOOST_HANA_CONCEPT_GROUP_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/group.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/minus.hpp>
|
||||
#include <boost/hana/negate.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename G>
|
||||
struct Group
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<negate_impl<typename tag_of<G>::type>>::value ||
|
||||
!is_default<minus_impl<typename tag_of<G>::type,
|
||||
typename tag_of<G>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_GROUP_HPP
|
||||
@@ -0,0 +1,32 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Hashable`.
|
||||
|
||||
@copyright Louis Dionne 2016
|
||||
@copyright Jason Rice 2016
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_HASHABLE_HPP
|
||||
#define BOOST_HANA_CONCEPT_HASHABLE_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/hashable.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/hash.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename T>
|
||||
struct Hashable
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<hash_impl<typename tag_of<T>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_HASHABLE_HPP
|
||||
@@ -0,0 +1,43 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::IntegralConstant`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_INTEGRAL_CONSTANT_HPP
|
||||
#define BOOST_HANA_CONCEPT_INTEGRAL_CONSTANT_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/integral_constant.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace detail {
|
||||
template <typename C, typename Tag = typename tag_of<C>::type>
|
||||
struct integral_constant_dispatch
|
||||
: hana::integral_constant<bool,
|
||||
hana::IntegralConstant<Tag>::value
|
||||
>
|
||||
{ };
|
||||
|
||||
template <typename C>
|
||||
struct integral_constant_dispatch<C, C>
|
||||
: hana::integral_constant<bool, false>
|
||||
{ };
|
||||
}
|
||||
|
||||
//! @cond
|
||||
template <typename C>
|
||||
struct IntegralConstant
|
||||
: detail::integral_constant_dispatch<C>
|
||||
{ };
|
||||
//! @endcond
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_INTEGRAL_CONSTANT_HPP
|
||||
@@ -0,0 +1,35 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Iterable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_ITERABLE_HPP
|
||||
#define BOOST_HANA_CONCEPT_ITERABLE_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/iterable.hpp>
|
||||
|
||||
#include <boost/hana/at.hpp>
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/drop_front.hpp>
|
||||
#include <boost/hana/is_empty.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename It>
|
||||
struct Iterable
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<at_impl<typename tag_of<It>::type>>::value &&
|
||||
!is_default<drop_front_impl<typename tag_of<It>::type>>::value &&
|
||||
!is_default<is_empty_impl<typename tag_of<It>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_ITERABLE_HPP
|
||||
@@ -0,0 +1,35 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Logical`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_LOGICAL_HPP
|
||||
#define BOOST_HANA_CONCEPT_LOGICAL_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/logical.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/eval_if.hpp>
|
||||
#include <boost/hana/not.hpp>
|
||||
#include <boost/hana/while.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename L>
|
||||
struct Logical
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<eval_if_impl<typename tag_of<L>::type>>::value &&
|
||||
!is_default<not_impl<typename tag_of<L>::type>>::value &&
|
||||
!is_default<while_impl<typename tag_of<L>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_LOGICAL_HPP
|
||||
@@ -0,0 +1,41 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Metafunction`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_METAFUNCTION_HPP
|
||||
#define BOOST_HANA_CONCEPT_METAFUNCTION_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/metafunction.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace detail {
|
||||
template <typename F, typename Tag = typename tag_of<F>::type>
|
||||
struct metafunction_dispatch
|
||||
: hana::integral_constant<bool,
|
||||
Metafunction<Tag>::value
|
||||
>
|
||||
{ };
|
||||
|
||||
template <typename F>
|
||||
struct metafunction_dispatch<F, F>
|
||||
: hana::integral_constant<bool, false>
|
||||
{ };
|
||||
}
|
||||
|
||||
template <typename F>
|
||||
struct Metafunction
|
||||
: detail::metafunction_dispatch<F>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_METAFUNCTION_HPP
|
||||
@@ -0,0 +1,33 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Monad`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_MONAD_HPP
|
||||
#define BOOST_HANA_CONCEPT_MONAD_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/monad.hpp>
|
||||
|
||||
#include <boost/hana/chain.hpp>
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/flatten.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename M>
|
||||
struct Monad
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<flatten_impl<typename tag_of<M>::type>>::value ||
|
||||
!is_default<chain_impl<typename tag_of<M>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_MONAD_HPP
|
||||
@@ -0,0 +1,33 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::MonadPlus`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_MONAD_PLUS_HPP
|
||||
#define BOOST_HANA_CONCEPT_MONAD_PLUS_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/monad_plus.hpp>
|
||||
|
||||
#include <boost/hana/concat.hpp>
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/empty.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename M>
|
||||
struct MonadPlus
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<concat_impl<typename tag_of<M>::type>>::value &&
|
||||
!is_default<empty_impl<typename tag_of<M>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_MONAD_PLUS_HPP
|
||||
@@ -0,0 +1,34 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Monoid`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_MONOID_HPP
|
||||
#define BOOST_HANA_CONCEPT_MONOID_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/monoid.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/plus.hpp>
|
||||
#include <boost/hana/zero.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename M>
|
||||
struct Monoid
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<zero_impl<typename tag_of<M>::type>>::value &&
|
||||
!is_default<plus_impl<typename tag_of<M>::type,
|
||||
typename tag_of<M>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_MONOID_HPP
|
||||
@@ -0,0 +1,32 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Orderable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_ORDERABLE_HPP
|
||||
#define BOOST_HANA_CONCEPT_ORDERABLE_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/orderable.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/less.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename Ord>
|
||||
struct Orderable
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<less_impl<typename tag_of<Ord>::type,
|
||||
typename tag_of<Ord>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_ORDERABLE_HPP
|
||||
@@ -0,0 +1,33 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Product`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_PRODUCT_HPP
|
||||
#define BOOST_HANA_CONCEPT_PRODUCT_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/product.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/first.hpp>
|
||||
#include <boost/hana/second.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename P>
|
||||
struct Product
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<first_impl<typename tag_of<P>::type>>::value &&
|
||||
!is_default<second_impl<typename tag_of<P>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_PRODUCT_HPP
|
||||
@@ -0,0 +1,34 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Ring`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_RING_HPP
|
||||
#define BOOST_HANA_CONCEPT_RING_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/ring.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/mult.hpp>
|
||||
#include <boost/hana/one.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename R>
|
||||
struct Ring
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<one_impl<typename tag_of<R>::type>>::value &&
|
||||
!is_default<mult_impl<typename tag_of<R>::type,
|
||||
typename tag_of<R>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_RING_HPP
|
||||
@@ -0,0 +1,33 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Searchable`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_SEARCHABLE_HPP
|
||||
#define BOOST_HANA_CONCEPT_SEARCHABLE_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/searchable.hpp>
|
||||
|
||||
#include <boost/hana/any_of.hpp>
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
#include <boost/hana/find_if.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename S>
|
||||
struct Searchable
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<any_of_impl<typename tag_of<S>::type>>::value &&
|
||||
!is_default<find_if_impl<typename tag_of<S>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_SEARCHABLE_HPP
|
||||
@@ -0,0 +1,44 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Sequence`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_SEQUENCE_HPP
|
||||
#define BOOST_HANA_CONCEPT_SEQUENCE_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/sequence.hpp>
|
||||
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/core/when.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
namespace detail {
|
||||
template <typename S, typename Tag = typename hana::tag_of<S>::type>
|
||||
struct sequence_dispatch
|
||||
: hana::integral_constant<bool,
|
||||
hana::Sequence<Tag>::value
|
||||
>
|
||||
{ };
|
||||
|
||||
template <typename S>
|
||||
struct sequence_dispatch<S, S>
|
||||
: hana::integral_constant<bool, false>
|
||||
{ };
|
||||
}
|
||||
|
||||
//! @cond
|
||||
template <typename S, bool condition>
|
||||
struct Sequence<S, when<condition>>
|
||||
: detail::sequence_dispatch<S>
|
||||
{ };
|
||||
//! @endcond
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_SEQUENCE_HPP
|
||||
@@ -0,0 +1,31 @@
|
||||
/*!
|
||||
@file
|
||||
Defines `boost::hana::Struct`.
|
||||
|
||||
@copyright Louis Dionne 2013-2017
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_HANA_CONCEPT_STRUCT_HPP
|
||||
#define BOOST_HANA_CONCEPT_STRUCT_HPP
|
||||
|
||||
#include <boost/hana/fwd/concept/struct.hpp>
|
||||
|
||||
#include <boost/hana/accessors.hpp>
|
||||
#include <boost/hana/config.hpp>
|
||||
#include <boost/hana/core/default.hpp>
|
||||
#include <boost/hana/core/tag_of.hpp>
|
||||
#include <boost/hana/detail/integral_constant.hpp>
|
||||
|
||||
|
||||
BOOST_HANA_NAMESPACE_BEGIN
|
||||
template <typename S>
|
||||
struct Struct
|
||||
: hana::integral_constant<bool,
|
||||
!is_default<accessors_impl<typename tag_of<S>::type>>::value
|
||||
>
|
||||
{ };
|
||||
BOOST_HANA_NAMESPACE_END
|
||||
|
||||
#endif // !BOOST_HANA_CONCEPT_STRUCT_HPP
|
||||
Reference in New Issue
Block a user