// This file is distributed under the BSD License. // See "license.txt" for details. // Copyright 2009-2012, Jonathan Turner (jonathan@emptycrate.com) // Copyright 2009-2015, Jason Turner (jason@emptycrate.com) // http://www.chaiscript.com #ifndef CHAISCRIPT_DEFINES_HPP_ #define CHAISCRIPT_DEFINES_HPP_ #ifdef _MSC_VER #define CHAISCRIPT_MSVC _MSC_VER #define CHAISCRIPT_HAS_DECLSPEC #if _MSC_VER <= 1800 #define CHAISCRIPT_MSVC_12 #endif #endif #include #if defined( _LIBCPP_VERSION ) #define CHAISCRIPT_LIBCPP #endif #if defined(_WIN32) || defined(__CYGWIN__) #define CHAISCRIPT_WINDOWS #endif #if (defined(__GNUC__) && __GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) /// Currently only g++>=4.8 supports this natively /// \todo Make this support other compilers when possible #define CHAISCRIPT_HAS_THREAD_LOCAL #endif #if (defined(__GNUC__) && __GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || defined(CHAISCRIPT_MSVC) || defined(__llvm__) #define CHAISCRIPT_OVERRIDE override #else #define CHAISCRIPT_OVERRIDE #endif #ifdef CHAISCRIPT_HAS_DECLSPEC #define CHAISCRIPT_MODULE_EXPORT extern "C" __declspec(dllexport) #else #define CHAISCRIPT_MODULE_EXPORT extern "C" #endif #ifdef CHAISCRIPT_MSVC #define CHAISCRIPT_NOEXCEPT throw() #define CHAISCRIPT_CONSTEXPR #else #define CHAISCRIPT_NOEXCEPT noexcept #define CHAISCRIPT_CONSTEXPR constexpr #endif #include namespace chaiscript { static const int version_major = 5; static const int version_minor = 7; static const int version_patch = 0; template inline std::shared_ptr make_shared(Arg && ... arg) { #ifdef CHAISCRIPT_USE_STD_MAKE_SHARED return std::make_shared(std::forward(arg)...); #else return std::shared_ptr(static_cast(new D(std::forward(arg)...))); #endif } } #endif