diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) |
commit | 0efa7c32aaf21a29b42b5926cc116007056843be (patch) | |
tree | 882f663a5dd0e65694bf6077b71086dd77fd7ff8 /3rdParty/Boost/boost/any.hpp | |
parent | 1d20eabbc32274b491b4c2bedf73d19933d97bfd (diff) | |
download | swift-contrib-0efa7c32aaf21a29b42b5926cc116007056843be.zip swift-contrib-0efa7c32aaf21a29b42b5926cc116007056843be.tar.bz2 |
Moved some modules into separate git modules.
Diffstat (limited to '3rdParty/Boost/boost/any.hpp')
m--------- | 3rdParty/Boost | 0 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/any.hpp | 237 |
2 files changed, 0 insertions, 237 deletions
diff --git a/3rdParty/Boost b/3rdParty/Boost new file mode 160000 +Subproject 3bbdbc8cf1996f23d9a366da8bac0f97be6ad79 diff --git a/3rdParty/Boost/boost/any.hpp b/3rdParty/Boost/boost/any.hpp deleted file mode 100644 index 47773dc..0000000 --- a/3rdParty/Boost/boost/any.hpp +++ /dev/null @@ -1,237 +0,0 @@ -// See http://www.boost.org/libs/any for Documentation. - -#ifndef BOOST_ANY_INCLUDED -#define BOOST_ANY_INCLUDED - -// what: variant type boost::any -// who: contributed by Kevlin Henney, -// with features contributed and bugs found by -// Ed Brey, Mark Rodgers, Peter Dimov, and James Curran -// when: July 2001 -// where: tested with BCC 5.5, MSVC 6.0, and g++ 2.95 - -#include <algorithm> -#include <typeinfo> - -#include "boost/config.hpp" -#include <boost/type_traits/remove_reference.hpp> -#include <boost/type_traits/is_reference.hpp> -#include <boost/throw_exception.hpp> -#include <boost/static_assert.hpp> - -namespace boost -{ - class any - { - public: // structors - - any() - : content(0) - { - } - - template<typename ValueType> - any(const ValueType & value) - : content(new holder<ValueType>(value)) - { - } - - any(const any & other) - : content(other.content ? other.content->clone() : 0) - { - } - - ~any() - { - delete content; - } - - public: // modifiers - - any & swap(any & rhs) - { - std::swap(content, rhs.content); - return *this; - } - - template<typename ValueType> - any & operator=(const ValueType & rhs) - { - any(rhs).swap(*this); - return *this; - } - - any & operator=(any rhs) - { - rhs.swap(*this); - return *this; - } - - public: // queries - - bool empty() const - { - return !content; - } - - const std::type_info & type() const - { - return content ? content->type() : typeid(void); - } - -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - private: // types -#else - public: // types (public so any_cast can be non-friend) -#endif - - class placeholder - { - public: // structors - - virtual ~placeholder() - { - } - - public: // queries - - virtual const std::type_info & type() const = 0; - - virtual placeholder * clone() const = 0; - - }; - - template<typename ValueType> - class holder : public placeholder - { - public: // structors - - holder(const ValueType & value) - : held(value) - { - } - - public: // queries - - virtual const std::type_info & type() const - { - return typeid(ValueType); - } - - virtual placeholder * clone() const - { - return new holder(held); - } - - public: // representation - - ValueType held; - - private: // intentionally left unimplemented - holder & operator=(const holder &); - }; - -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - - private: // representation - - template<typename ValueType> - friend ValueType * any_cast(any *); - - template<typename ValueType> - friend ValueType * unsafe_any_cast(any *); - -#else - - public: // representation (public so any_cast can be non-friend) - -#endif - - placeholder * content; - - }; - - class bad_any_cast : public std::bad_cast - { - public: - virtual const char * what() const throw() - { - return "boost::bad_any_cast: " - "failed conversion using boost::any_cast"; - } - }; - - template<typename ValueType> - ValueType * any_cast(any * operand) - { - return operand && operand->type() == typeid(ValueType) - ? &static_cast<any::holder<ValueType> *>(operand->content)->held - : 0; - } - - template<typename ValueType> - inline const ValueType * any_cast(const any * operand) - { - return any_cast<ValueType>(const_cast<any *>(operand)); - } - - template<typename ValueType> - ValueType any_cast(any & operand) - { - typedef BOOST_DEDUCED_TYPENAME remove_reference<ValueType>::type nonref; - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // If 'nonref' is still reference type, it means the user has not - // specialized 'remove_reference'. - - // Please use BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION macro - // to generate specialization of remove_reference for your class - // See type traits library documentation for details - BOOST_STATIC_ASSERT(!is_reference<nonref>::value); -#endif - - nonref * result = any_cast<nonref>(&operand); - if(!result) - boost::throw_exception(bad_any_cast()); - return *result; - } - - template<typename ValueType> - inline ValueType any_cast(const any & operand) - { - typedef BOOST_DEDUCED_TYPENAME remove_reference<ValueType>::type nonref; - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // The comment in the above version of 'any_cast' explains when this - // assert is fired and what to do. - BOOST_STATIC_ASSERT(!is_reference<nonref>::value); -#endif - - return any_cast<const nonref &>(const_cast<any &>(operand)); - } - - // Note: The "unsafe" versions of any_cast are not part of the - // public interface and may be removed at any time. They are - // required where we know what type is stored in the any and can't - // use typeid() comparison, e.g., when our types may travel across - // different shared libraries. - template<typename ValueType> - inline ValueType * unsafe_any_cast(any * operand) - { - return &static_cast<any::holder<ValueType> *>(operand->content)->held; - } - - template<typename ValueType> - inline const ValueType * unsafe_any_cast(const any * operand) - { - return unsafe_any_cast<ValueType>(const_cast<any *>(operand)); - } -} - -// Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved. -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#endif |