/*
 * Copyright 2015 Telenav Inc. All rights reserved.
 */
#ifndef TN_FOUNDATION_PRIVATE_CONFIG_HPP
#define TN_FOUNDATION_PRIVATE_CONFIG_HPP

// Define TN_CXX11 if we're using fully-comforming C++11 compiler. We don't care
// about partial support as using various subsets of C++11 features will create
// too many permutations to test/think about.
#if (__cplusplus >= 201103L)
#  define TN_CXX11 1
#endif

// We use std:: headers on winphone & winrt (with the exception of memory-related stuff)
// and boost:: headers everywhere else. In the next version of foundation we will use
// std:: headers on all C++11 compilers. 
#if (TN_PLATFORM_WINPHONE || TN_PLATFORM_WINRT)
#  define _TN_FOUNDATION_USE_STD 1
#  define _TN_FOUNDATION_STD_NS ::std
#else
#  define _TN_FOUNDATION_STD_NS ::boost
#endif

// Some headers (e.g. shared_ptr & co) are currently special snowflakes because
// we use boost versions even on winphone & winrt. In the next version of foundation
// we'll remove this special-snowflakeness and use std:: headers whenever we're 
// compiling in C++11 mode.
#define _TN_FOUNDATION_STD_MEMORY_NS ::boost
#define _TN_FOUNDATION_STD_MATH_NS ::boost::math

#if (TN_PLATFORM_ANDROID && !__EXCEPTIONS) 
#   undef _TN_FOUNDATION_HAS_EXCEPTIONS
#else 
#   define _TN_FOUNDATION_HAS_EXCEPTIONS 1
#endif

#endif /* TN_FOUNDATION_PRIVATE_CONFIG_HPP */
