/*
  USCONFIG.h
  this file is generated. Do not change!
*/

#ifndef USGLOBALCONFIG_H
#define USGLOBALCONFIG_H

#define US_BUILD_SHARED_LIBS
/* #undef US_ENABLE_THREADING_SUPPORT */
/* #undef US_GCC_RTTI_WORKAROUND_NEEDED */
#define US_HAVE_VISIBILITY_ATTRIBUTE

//-------------------------------------------------------------------
// Header Availability
//-------------------------------------------------------------------

#define US_HAVE_CXXABI_H
#define US_HAVE_STDINT_H
#define US_HAVE_TR1_UNORDERED_MAP_H
#define US_HAVE_TR1_UNORDERED_SET_H
#define US_HAVE_TR1_FUNCTIONAL_H
/* #undef US_HAVE_UNORDERED_MAP_H */
/* #undef US_HAVE_UNORDERED_SET_H */
#define US_HAVE_FUNCTIONAL_H

#define US_HAVE_TR1_UNORDERED_MAP
#define US_HAVE_TR1_UNORDERED_SET
#define US_HAVE_TR1_FUNCTION
/* #undef US_HAVE_STD_UNORDERED_MAP */
/* #undef US_HAVE_STD_UNORDERED_SET */
/* #undef US_HAVE_STD_FUNCTION */

#define US_HAVE_TR1_HASH
#define US_HAVE_TR1_HASH_STRUCT
#define US_HAVE_TR1_HASH_CLASS
/* #undef US_HAVE_STD_HASH */
/* #undef US_HAVE_STD_HASH_STRUCT */
/* #undef US_HAVE_STD_HASH_CLASS */

///-------------------------------------------------------------------
// Version information
//-------------------------------------------------------------------

#define CppMicroServices_MAJOR_VERSION 2
#define CppMicroServices_MINOR_VERSION 99
#define CppMicroServices_PATCH_VERSION 0
#define CppMicroServices_VERSION 2.99.0
#define CppMicroServices_VERSION_STR "2.99.0"

#define US_MAJOR_VERSION 2
#define US_MINOR_VERSION 99
#define US_PATCH_VERSION 0
#define US_VERSION 2.99.0
#define US_VERSION_STR "2.99.0"

//-------------------------------------------------------------------
// Namespace customization
//-------------------------------------------------------------------

#define US_NAMESPACE us

#ifndef US_NAMESPACE /* user namespace */

  # define US_PREPEND_NAMESPACE(name) ::name
  # define US_USE_NAMESPACE
  # define US_BEGIN_NAMESPACE
  # define US_END_NAMESPACE
  # define US_FORWARD_DECLARE_CLASS(name) class name;
  # define US_FORWARD_DECLARE_STRUCT(name) struct name;

#else /* user namespace */

  # define US_PREPEND_NAMESPACE(name) ::US_NAMESPACE::name
  # define US_USE_NAMESPACE using namespace ::US_NAMESPACE;
  # define US_BEGIN_NAMESPACE namespace US_NAMESPACE {
  # define US_END_NAMESPACE }
  # define US_FORWARD_DECLARE_CLASS(name) \
    US_BEGIN_NAMESPACE class name; US_END_NAMESPACE

  # define US_FORWARD_DECLARE_STRUCT(name) \
    US_BEGIN_NAMESPACE struct name; US_END_NAMESPACE

  namespace US_NAMESPACE {}

#endif /* user namespace */

//-------------------------------------------------------------------
// Platform defines
//-------------------------------------------------------------------

#if defined(__APPLE__)
  #define US_PLATFORM_APPLE
#endif

#if defined(__linux__)
  #define US_PLATFORM_LINUX
#endif

#if defined(_WIN32) || defined(_WIN64)
  #define US_PLATFORM_WINDOWS
#else
  #define US_PLATFORM_POSIX
#endif

///-------------------------------------------------------------------
// Macros for import/export declarations
//-------------------------------------------------------------------

#if defined(US_PLATFORM_WINDOWS)
  #define US_ABI_EXPORT __declspec(dllexport)
  #define US_ABI_IMPORT __declspec(dllimport)
  #define US_ABI_LOCAL
#elif defined(US_HAVE_VISIBILITY_ATTRIBUTE)
  #define US_ABI_EXPORT __attribute__ ((visibility ("default")))
  #define US_ABI_IMPORT __attribute__ ((visibility ("default")))
  #define US_ABI_LOCAL  __attribute__ ((visibility ("hidden")))
#else
  #define US_ABI_EXPORT
  #define US_ABI_IMPORT
  #define US_ABI_LOCAL
#endif

//-------------------------------------------------------------------
// Macros for suppressing warnings
//-------------------------------------------------------------------

#ifdef _MSC_VER
#define US_MSVC_PUSH_DISABLE_WARNING(wn) \
__pragma(warning(push))                  \
__pragma(warning(disable:wn))
#define US_MSVC_POP_WARNING \
__pragma(warning(pop))
#define US_MSVC_DISABLE_WARNING(wn) \
__pragma(warning(disable:wn))
#else
#define US_MSVC_PUSH_DISABLE_WARNING(wn)
#define US_MSVC_POP_WARNING
#define US_MSVC_DISABLE_WARNING(wn)
#endif

// Do not warn about the usage of deprecated unsafe functions
US_MSVC_DISABLE_WARNING(4996)

// Mark a variable or expression result as unused
#define US_UNUSED(x) (void)(x)


//-------------------------------------------------------------------
// Hash Container
//-------------------------------------------------------------------

#ifdef US_HAVE_UNORDERED_MAP_H
  #include <unordered_map>
#elif defined(US_HAVE_TR1_UNORDERED_MAP_H)
  #include <tr1/unordered_map>
#endif

#ifdef US_HAVE_UNORDERED_SET_H
  #include <unordered_set>
#elif defined(US_HAVE_TR1_UNORDERED_SET_H)
  #include <tr1/unordered_set>
#endif

#ifdef US_HAVE_STD_UNORDERED_MAP
  #define US_UNORDERED_MAP_TYPE ::std::unordered_map
#elif defined(US_HAVE_TR1_UNORDERED_MAP)
  #define US_UNORDERED_MAP_TYPE ::std::tr1::unordered_map
#endif

#ifdef US_HAVE_STD_UNORDERED_SET
  #define US_UNORDERED_SET_TYPE ::std::unordered_set
#elif defined(US_HAVE_TR1_UNORDERED_SET)
  #define US_UNORDERED_SET_TYPE ::std::tr1::unordered_set
#endif

#ifdef US_HAVE_STD_HASH
  #define US_HASH_FUNCTION_NAMESPACE ::std
  #ifdef US_HAVE_STD_HASH_STRUCT
    #define US_HASH_FUNCTION_FRIEND(type) friend struct ::std::hash<type>
  #elif defined(US_HAVE_STD_HASH_CLASS)
    #define US_HASH_FUNCTION_FRIEND(type) friend class ::std::hash<type>
  #endif
  #define US_HASH_FUNCTION_NAMESPACE_BEGIN namespace std {
  #define US_HASH_FUNCTION_NAMESPACE_END }
#elif defined(US_HAVE_TR1_HASH)
  #define US_HASH_FUNCTION_NAMESPACE ::std::tr1
  #ifdef US_HAVE_TR1_HASH_STRUCT
    #define US_HASH_FUNCTION_FRIEND(type) friend struct ::std::tr1::hash<type>
  #elif defined(US_HAVE_TR1_HASH_CLASS)
    #define US_HASH_FUNCTION_FRIEND(type) friend class ::std::tr1::hash<type>
  #endif
  #define US_HASH_FUNCTION_NAMESPACE_BEGIN namespace std { namespace tr1 {
  #define US_HASH_FUNCTION_NAMESPACE_END }}
#endif

#define US_HASH_FUNCTION_BEGIN(type) \
template<> \
struct hash<type> : std::unary_function<type, std::size_t> { \
std::size_t operator()(const type& arg) const {

#define US_HASH_FUNCTION_END } };

#define US_HASH_FUNCTION(type, arg) hash<type>()(arg)

#endif // USGLOBALCONFIG_H
