Added boost header
This commit is contained in:
87
test/external/boost/icl/concept/container.hpp
vendored
Normal file
87
test/external/boost/icl/concept/container.hpp
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
/*-----------------------------------------------------------------------------+
|
||||
Copyright (c) 2010-2010: Joachim Faulhaber
|
||||
+------------------------------------------------------------------------------+
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENCE.txt or copy at
|
||||
http://www.boost.org/LICENSE_1_0.txt)
|
||||
+-----------------------------------------------------------------------------*/
|
||||
#ifndef BOOST_ICL_CONCEPT_CONTAINER_HPP_JOFA_100923
|
||||
#define BOOST_ICL_CONCEPT_CONTAINER_HPP_JOFA_100923
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/mpl/and.hpp>
|
||||
#include <boost/mpl/not.hpp>
|
||||
#include <boost/icl/type_traits/is_container.hpp>
|
||||
#include <boost/icl/type_traits/is_icl_container.hpp>
|
||||
|
||||
namespace boost{ namespace icl
|
||||
{
|
||||
|
||||
//==============================================================================
|
||||
//= Emptieness
|
||||
//==============================================================================
|
||||
|
||||
/** Tests if the container is empty.
|
||||
Complexity: constant. */
|
||||
template<class Type>
|
||||
typename enable_if<is_container<Type>, bool>::type
|
||||
is_empty(const Type& object)
|
||||
{
|
||||
return object.begin()==object.end();
|
||||
}
|
||||
|
||||
|
||||
/** All content of the container is dropped.
|
||||
Complexity: linear. */
|
||||
template<class Type>
|
||||
typename enable_if<is_container<Type>, void>::type
|
||||
clear(Type& object)
|
||||
{
|
||||
object.erase(object.begin(), object.end());
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
//= Size
|
||||
//==============================================================================
|
||||
|
||||
template<class Type>
|
||||
typename enable_if<mpl::and_< is_container<Type>
|
||||
, mpl::not_<is_icl_container<Type> > >
|
||||
, std::size_t>::type
|
||||
iterative_size(const Type& object)
|
||||
{
|
||||
return object.size();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
//= Swap
|
||||
//==============================================================================
|
||||
|
||||
template<class Type>
|
||||
typename enable_if<is_container<Type>, void>::type
|
||||
swap(Type& left, Type& right)
|
||||
{
|
||||
left.swap(right);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
//= Iteration
|
||||
//==============================================================================
|
||||
|
||||
template<class Type>
|
||||
typename enable_if<is_container<Type>, typename Type::iterator>::type
|
||||
cyclic_prior(Type& object, typename Type::iterator it_)
|
||||
{ return it_ == object.begin() ? object.end() : --it_; }
|
||||
|
||||
template<class Type>
|
||||
typename enable_if<is_container<Type>, typename Type::const_iterator>::type
|
||||
cyclic_prior(const Type& object, typename Type::const_iterator it_)
|
||||
{ return it_ == object.begin() ? object.end() : --it_; }
|
||||
|
||||
|
||||
|
||||
}} // namespace boost icl
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user