// Copyright (C) 2004 Arkadiy Vertleyb

// Copyright (C) 2004 Peder Holt

// Use, modification and distribution is subject to the Boost Software

// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)



#ifndef BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED

#define BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED



#include <boost/typeof/typeof.hpp>



#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()



BOOST_TYPEOF_REGISTER_TYPE(unsigned char)

BOOST_TYPEOF_REGISTER_TYPE(unsigned short)

BOOST_TYPEOF_REGISTER_TYPE(unsigned int)

BOOST_TYPEOF_REGISTER_TYPE(unsigned long)



BOOST_TYPEOF_REGISTER_TYPE(signed char)

BOOST_TYPEOF_REGISTER_TYPE(signed short)

BOOST_TYPEOF_REGISTER_TYPE(signed int)

BOOST_TYPEOF_REGISTER_TYPE(signed long)



BOOST_TYPEOF_REGISTER_TYPE(bool)

BOOST_TYPEOF_REGISTER_TYPE(char)



BOOST_TYPEOF_REGISTER_TYPE(float)

BOOST_TYPEOF_REGISTER_TYPE(double)

BOOST_TYPEOF_REGISTER_TYPE(long double)



#ifndef BOOST_NO_INTRINSIC_WCHAR_T

// If the following line fails to compile and you're using the Intel

// compiler, see http://lists.boost.org/MailArchives/boost-users/msg06567.php,

// and define BOOST_NO_INTRINSIC_WCHAR_T on the command line.

BOOST_TYPEOF_REGISTER_TYPE(wchar_t)

#endif



#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1200)) \

    || (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \

    || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER == 1200))

BOOST_TYPEOF_REGISTER_TYPE(unsigned __int8)

BOOST_TYPEOF_REGISTER_TYPE(__int8)

BOOST_TYPEOF_REGISTER_TYPE(unsigned __int16)

BOOST_TYPEOF_REGISTER_TYPE(__int16)

BOOST_TYPEOF_REGISTER_TYPE(unsigned __int32)

BOOST_TYPEOF_REGISTER_TYPE(__int32)

#ifdef __BORLANDC__

BOOST_TYPEOF_REGISTER_TYPE(unsigned __int64)

BOOST_TYPEOF_REGISTER_TYPE(__int64)

#endif

#endif



# if defined(BOOST_HAS_LONG_LONG)

BOOST_TYPEOF_REGISTER_TYPE(::boost::ulong_long_type)

BOOST_TYPEOF_REGISTER_TYPE(::boost::long_long_type)

#elif defined(BOOST_HAS_MS_INT64)

BOOST_TYPEOF_REGISTER_TYPE(unsigned __int64)

BOOST_TYPEOF_REGISTER_TYPE(__int64)

#endif



BOOST_TYPEOF_REGISTER_TYPE(void)



#endif//BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED

