#pragma once #if defined(__GNUG__) #include #include #ifndef __APPLE__ #include #endif #define _fpclass(x) std::fpclassify(x) #define __forceinline __attribute__((always_inline)) #define _byteswap_ushort(x) __builtin_bswap16(x) #define _byteswap_ulong(x) __builtin_bswap32(x) #define _byteswap_uint64(x) __builtin_bswap64(x) #define Sleep(x) usleep(x * 1000) #define mkdir(x) mkdir(x, 0777) #define INFINITE 0xFFFFFFFF #define _CRT_ALIGN(x) __attribute__((aligned(x))) #define InterlockedCompareExchange(ptr,new_val,old_val) __sync_val_compare_and_swap(ptr,old_val,new_val) #define InterlockedCompareExchange64(ptr,new_val,old_val) __sync_val_compare_and_swap(ptr,old_val,new_val) #ifndef __APPLE__ #define _aligned_malloc(size,alignment) memalign(alignment,size) #else void * _aligned_malloc(size_t size, size_t alignment); #define wxIsNaN(x) ((x) != (x)) #endif #define _aligned_free free #ifndef CLOCK_MONOTONIC #define CLOCK_MONOTONIC 0 #include #include static int clock_gettime(int foo, struct timespec *ts) { struct timeval tv; gettimeofday(&tv, NULL); ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * 1000; return (0); } #endif /* !CLOCK_MONOTONIC */ #define DWORD int32_t #endif