X-Git-Url: https://git.donarmstrong.com/?p=rsem.git;a=blobdiff_plain;f=boost%2Ftypeof%2Ftypeof.hpp;fp=boost%2Ftypeof%2Ftypeof.hpp;h=4d569649804ab68076801e8e03016fe4993d5667;hp=0000000000000000000000000000000000000000;hb=2d71eb92104693ca9baa5a2e1c23eeca776d8fd3;hpb=da57529b92adbb7ae74a89861cb39fb35ac7c62d diff --git a/boost/typeof/typeof.hpp b/boost/typeof/typeof.hpp new file mode 100644 index 0000000..4d56964 --- /dev/null +++ b/boost/typeof/typeof.hpp @@ -0,0 +1,218 @@ +// Copyright (C) 2004 Arkadiy Vertleyb +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_TYPEOF_TYPEOF_HPP_INCLUDED +#define BOOST_TYPEOF_TYPEOF_HPP_INCLUDED + +#if defined(BOOST_TYPEOF_COMPLIANT) +# define BOOST_TYPEOF_EMULATION +#endif + +#if defined(BOOST_TYPEOF_EMULATION) && defined(BOOST_TYPEOF_NATIVE) +# error both typeof emulation and native mode requested +#endif + +#if defined(__COMO__) +# ifdef __GNUG__ +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_NATIVE +# endif +# define BOOST_TYPEOF_KEYWORD typeof +# endif +# else +# ifndef BOOST_TYPEOF_NATIVE +# ifndef BOOST_TYPEOF_EMULATION +# define BOOST_TYPEOF_EMULATION +# endif +# else +# error native typeof is not supported +# endif +# endif + +#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC) +# ifdef __GNUC__ +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_NATIVE +# endif +# define BOOST_TYPEOF_KEYWORD __typeof__ +# endif +# else +# ifndef BOOST_TYPEOF_NATIVE +# ifndef BOOST_TYPEOF_EMULATION +# define BOOST_TYPEOF_EMULATION +# endif +# else +# error native typeof is not supported +# endif +# endif + +#elif defined(__GNUC__) +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_NATIVE +# endif +# define BOOST_TYPEOF_KEYWORD __typeof__ +# endif + +#elif defined(__MWERKS__) +# if(__MWERKS__ <= 0x3003) // 8.x +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_NATIVE +# endif +# define BOOST_TYPEOF_KEYWORD __typeof__ +# else +# define BOOST_TYPEOF_EMULATION_UNSUPPORTED +# endif +# else // 9.x +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_NATIVE +# endif +# define BOOST_TYPEOF_KEYWORD __typeof__ +# endif +# endif +#elif defined __CODEGEARC__ +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_EMULATION_UNSUPPORTED +# endif +# else +# define BOOST_TYPEOF_EMULATION_UNSUPPORTED +# endif +#elif defined __BORLANDC__ +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_EMULATION_UNSUPPORTED +# endif +# else +# define BOOST_TYPEOF_EMULATION_UNSUPPORTED +# endif +#elif defined __DMC__ +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_NATIVE +# endif +# include +# define MSVC_TYPEOF_HACK +# endif +#elif defined(_MSC_VER) +# if (_MSC_VER <= 1300) // 6.5, 7.0 +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_NATIVE +# endif +# include +# define MSVC_TYPEOF_HACK +# else +# error typeof emulation is not supported +# endif +# elif (_MSC_VER >= 1310) // 7.1 -> +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# ifndef _MSC_EXTENSIONS +# define BOOST_TYPEOF_EMULATION +# else +# define BOOST_TYPEOF_NATIVE +# endif +# endif +# endif +# ifdef BOOST_TYPEOF_NATIVE +# include +# define MSVC_TYPEOF_HACK +# endif +# endif +#elif defined(__HP_aCC) +# ifndef BOOST_TYPEOF_NATIVE +# ifndef BOOST_TYPEOF_EMULATION +# define BOOST_TYPEOF_EMULATION +# endif +# else +# error native typeof is not supported +# endif + +#elif defined(__DECCXX) +# ifndef BOOST_TYPEOF_NATIVE +# ifndef BOOST_TYPEOF_EMULATION +# define BOOST_TYPEOF_EMULATION +# endif +# else +# error native typeof is not supported +# endif + +#elif defined(__BORLANDC__) +# if (__BORLANDC__ < 0x590) +# define BOOST_TYPEOF_NO_FUNCTION_TYPES +# define BOOST_TYPEOF_NO_MEMBER_FUNCTION_TYPES +# endif +# ifndef BOOST_TYPEOF_NATIVE +# ifndef BOOST_TYPEOF_EMULATION +# define BOOST_TYPEOF_EMULATION +# endif +# else +# error native typeof is not supported +# endif +#elif defined(__SUNPRO_CC) +# if (__SUNPRO_CC < 0x590 ) +# ifdef BOOST_TYPEOF_NATIVE +# error native typeof is not supported +# endif +# ifndef BOOST_TYPEOF_EMULATION +# define BOOST_TYPEOF_EMULATION +# endif +# else +# ifndef BOOST_TYPEOF_EMULATION +# ifndef BOOST_TYPEOF_NATIVE +# define BOOST_TYPEOF_NATIVE +# endif +# define BOOST_TYPEOF_KEYWORD __typeof__ +# endif +# endif +#else //unknown compiler +# ifndef BOOST_TYPEOF_NATIVE +# ifndef BOOST_TYPEOF_EMULATION +# define BOOST_TYPEOF_EMULATION +# endif +# else +# ifndef BOOST_TYPEOF_KEYWORD +# define BOOST_TYPEOF_KEYWORD typeof +# endif +# endif + +#endif + +#define BOOST_TYPEOF_UNIQUE_ID()\ + BOOST_TYPEOF_REGISTRATION_GROUP * 0x10000 + __LINE__ + +#define BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()\ + + +#ifdef BOOST_TYPEOF_EMULATION_UNSUPPORTED +# include +#elif defined BOOST_TYPEOF_EMULATION +# define BOOST_TYPEOF_TEXT "using typeof emulation" +# include +# include +# include +# include +# include +# include +# include +# include + +#elif defined(BOOST_TYPEOF_NATIVE) +# define BOOST_TYPEOF_TEXT "using native typeof" +# include +# include +#else +# error typeof configuration error +#endif + +// auto +#define BOOST_AUTO(Var, Expr) BOOST_TYPEOF(Expr) Var = Expr +#define BOOST_AUTO_TPL(Var, Expr) BOOST_TYPEOF_TPL(Expr) Var = Expr + +#endif//BOOST_TYPEOF_TYPEOF_HPP_INCLUDED