//  (C) Copyright Bryce Lelbach 2011

//  Use, modification and distribution are subject to 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 for most recent version.

// PathScale EKOPath C++ Compiler

#ifndef NDNBOOST_COMPILER
#  define NDNBOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__
#endif

#if __PATHCC__ >= 4
#  define NDNBOOST_MSVC6_MEMBER_TEMPLATES
#  define NDNBOOST_HAS_UNISTD_H
#  define NDNBOOST_HAS_STDINT_H
#  define NDNBOOST_HAS_SIGACTION
#  define NDNBOOST_HAS_SCHED_YIELD
#  define NDNBOOST_HAS_THREADS
#  define NDNBOOST_HAS_PTHREADS
#  define NDNBOOST_HAS_PTHREAD_YIELD
#  define NDNBOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
#  define NDNBOOST_HAS_PARTIAL_STD_ALLOCATOR
#  define NDNBOOST_HAS_NRVO
#  define NDNBOOST_HAS_NL_TYPES_H
#  define NDNBOOST_HAS_NANOSLEEP
#  define NDNBOOST_HAS_LONG_LONG
#  define NDNBOOST_HAS_LOG1P
#  define NDNBOOST_HAS_GETTIMEOFDAY
#  define NDNBOOST_HAS_EXPM1
#  define NDNBOOST_HAS_DIRENT_H
#  define NDNBOOST_HAS_CLOCK_GETTIME
#  define NDNBOOST_NO_CXX11_VARIADIC_TEMPLATES
#  define NDNBOOST_NO_CXX11_UNICODE_LITERALS
#  define NDNBOOST_NO_CXX11_TEMPLATE_ALIASES
#  define NDNBOOST_NO_CXX11_STATIC_ASSERT
#  define NDNBOOST_NO_SFINAE_EXPR
#  define NDNBOOST_NO_CXX11_SCOPED_ENUMS
#  define NDNBOOST_NO_CXX11_RVALUE_REFERENCES
#  define NDNBOOST_NO_CXX11_RANGE_BASED_FOR
#  define NDNBOOST_NO_CXX11_RAW_LITERALS
#  define NDNBOOST_NO_CXX11_NULLPTR
#  define NDNBOOST_NO_CXX11_NUMERIC_LIMITS
#  define NDNBOOST_NO_CXX11_NOEXCEPT
#  define NDNBOOST_NO_CXX11_LAMBDAS
#  define NDNBOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
#  define NDNBOOST_NO_MS_INT64_NUMERIC_LIMITS
#  define NDNBOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
#  define NDNBOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
#  define NDNBOOST_NO_CXX11_DELETED_FUNCTIONS
#  define NDNBOOST_NO_CXX11_DEFAULTED_FUNCTIONS
#  define NDNBOOST_NO_CXX11_DECLTYPE
#  define NDNBOOST_NO_CXX11_DECLTYPE_N3276
#  define NDNBOOST_NO_CXX11_CONSTEXPR
#  define NDNBOOST_NO_COMPLETE_VALUE_INITIALIZATION
#  define NDNBOOST_NO_CXX11_CHAR32_T
#  define NDNBOOST_NO_CXX11_CHAR16_T
#  define NDNBOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
#  define NDNBOOST_NO_CXX11_AUTO_DECLARATIONS
#  define NDNBOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
#  define NDNBOOST_NO_CXX11_HDR_UNORDERED_SET
#  define NDNBOOST_NO_CXX11_HDR_UNORDERED_MAP
#  define NDNBOOST_NO_CXX11_HDR_TYPEINDEX
#  define NDNBOOST_NO_CXX11_HDR_TUPLE
#  define NDNBOOST_NO_CXX11_HDR_THREAD
#  define NDNBOOST_NO_CXX11_HDR_SYSTEM_ERROR
#  define NDNBOOST_NO_CXX11_HDR_REGEX
#  define NDNBOOST_NO_CXX11_HDR_RATIO
#  define NDNBOOST_NO_CXX11_HDR_RANDOM
#  define NDNBOOST_NO_CXX11_HDR_MUTEX
#  define NDNBOOST_NO_CXX11_HDR_INITIALIZER_LIST
#  define NDNBOOST_NO_CXX11_HDR_FUTURE
#  define NDNBOOST_NO_CXX11_HDR_FORWARD_LIST
#  define NDNBOOST_NO_CXX11_HDR_CONDITION_VARIABLE
#  define NDNBOOST_NO_CXX11_HDR_CODECVT
#  define NDNBOOST_NO_CXX11_HDR_CHRONO
#  define NDNBOOST_NO_CXX11_USER_DEFINED_LITERALS
#endif

