Sha256: 807cc067842aa4f6be2e0d6d92988711cc470237f7f21f066eb6eea22854b5c4

Contents?: true

Size: 1.66 KB

Versions: 23

Compression:

Stored size: 1.66 KB

Contents

//! \file Platform.hpp
//! Macros and utility functions to facilitate programming on all of Gosu's supported platforms.

#ifndef GOSU_PLATFORM_HPP
#define GOSU_PLATFORM_HPP

#ifdef __BIG_ENDIAN__
#define GOSU_IS_BIG_ENDIAN
#define IDENTITY_FUN bigToNative
#define IDENTITY_FUN2 nativeToBig
#define CONV_FUN littleToNative
#define CONV_FUN2 nativeToLittle
#else
#define GOSU_IS_LITTLE_ENDIAN
#define IDENTITY_FUN littleToNative
#define IDENTITY_FUN2 nativeToLittle
#define CONV_FUN bigToNative
#define CONV_FUN2 nativeToBig
#endif

#include <algorithm>

namespace Gosu
{
    template<typename T> T IDENTITY_FUN(T t) { return t; }
    template<typename T> T IDENTITY_FUN2(T t) { return t; }
    
    template<typename T>
    T CONV_FUN(T t)
    {
        char* begin = reinterpret_cast<char*>(&t);
        std::reverse(begin, begin + sizeof t);
        return t;
    }

    template<typename T> T CONV_FUN2(T t) { return CONV_FUN(t); }
}

#undef IDENTITY_FUN
#undef IDENTITY_FUN2
#undef CONV_FUN
#undef CONV_FUN2

#if defined(_MSC_VER)
#define GOSU_NORETURN __declspec(noreturn)
#elif defined(__GNUC__)
#define GOSU_NORETURN __attribute__ ((noreturn))
#endif

#if defined(WIN32)
# define GOSU_IS_WIN
#else
# define GOSU_IS_UNIX
# if defined(__linux) || defined(__FreeBSD__)
#  define GOSU_IS_X
# else
#  define GOSU_IS_MAC
#  include <TargetConditionals.h>
#  if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
#   define GOSU_IS_IPHONE
#  endif
# endif
#endif

#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
# define GOSU_DEPRECATED  __attribute__((__deprecated__))
#elif defined(GOSU_IS_WIN)
# define GOSU_DEPRECATED __declspec(deprecated)
#else
# define GOSU_DEPRECATED 
#endif

#endif

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
gosu-0.7.29-i386-mingw32 Gosu/Platform.hpp
gosu-0.7.29 Gosu/Platform.hpp
gosu-0.7.29-universal-darwin Gosu/Platform.hpp
gosu-0.7.28-universal-darwin Gosu/Platform.hpp
gosu-0.7.28 Gosu/Platform.hpp
gosu-0.7.28-i386-mingw32 Gosu/Platform.hpp
gosu-0.7.27.1 Gosu/Platform.hpp
gosu-0.7.27.1-i386-mingw32 Gosu/Platform.hpp
gosu-0.7.27.1-universal-darwin Gosu/Platform.hpp
gosu-0.7.27 Gosu/Platform.hpp
gosu-0.7.27-i386-mingw32 Gosu/Platform.hpp
gosu-0.7.27-universal-darwin Gosu/Platform.hpp
gosu-0.7.26.1 Gosu/Platform.hpp
gosu-0.7.26.1-i386-mingw32 Gosu/Platform.hpp
gosu-0.7.26.1-universal-darwin Gosu/Platform.hpp
gosu-0.7.26 Gosu/Platform.hpp
gosu-0.7.26-i386-mingw32 Gosu/Platform.hpp
gosu-0.7.26-universal-darwin Gosu/Platform.hpp
gosu-0.7.25 Gosu/Platform.hpp
gosu-0.7.24 Gosu/Platform.hpp