summaryrefslogtreecommitdiff
path: root/src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2018-12-13 11:44:21 -0500
committerHenrik Edin <henrik.edin@mongodb.com>2018-12-18 09:12:51 -0500
commitc28cb6852fca219d6f0262000c378e982b7ca9ff (patch)
treee06e74d1729e644db7c4dc2e5ecd529145b2f34c /src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp
parent05ebfef11161b96ba0e8374f34c359a403097f60 (diff)
downloadmongo-c28cb6852fca219d6f0262000c378e982b7ca9ff.tar.gz
SERVER-38458 Upgrade boost to version 1.69
Diffstat (limited to 'src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp')
-rw-r--r--src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp b/src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp
new file mode 100644
index 00000000000..b230692d803
--- /dev/null
+++ b/src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp
@@ -0,0 +1,63 @@
+// (C) Copyright Gennadiy Rozental 2001.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/test for the library home page.
+//
+// File : $RCSfile$
+//
+// Version : $Revision$
+//
+// Description : simple facilities for accessing type information at runtime
+// ***************************************************************************
+
+#ifndef BOOST_TEST_UTILS_RTTI_HPP
+#define BOOST_TEST_UTILS_RTTI_HPP
+
+// C Runtime
+#include <cstddef>
+
+namespace boost {
+namespace rtti {
+
+// ************************************************************************** //
+// ************** rtti::type_id ************** //
+// ************************************************************************** //
+
+typedef std::ptrdiff_t id_t;
+
+namespace rtti_detail {
+
+template<typename T>
+struct rttid_holder {
+ static id_t id() { return reinterpret_cast<id_t>( &inst() ); }
+
+private:
+ struct rttid {};
+
+ static rttid const& inst() { static rttid s_inst; return s_inst; }
+};
+
+} // namespace rtti_detail
+
+//____________________________________________________________________________//
+
+template<typename T>
+inline id_t
+type_id()
+{
+ return rtti_detail::rttid_holder<T>::id();
+}
+
+//____________________________________________________________________________//
+
+#define BOOST_RTTI_SWITCH( type_id_ ) if( ::boost::rtti::id_t switch_by_id = type_id_ )
+#define BOOST_RTTI_CASE( type ) if( switch_by_id == ::boost::rtti::type_id<type>() )
+
+//____________________________________________________________________________//
+
+} // namespace rtti
+} // namespace boost
+
+#endif // BOOST_TEST_UTILS_RTTI_HPP