1#ifndef __WINDOWS2LINUX_H__ 2#define __WINDOWS2LINUX_H__ 3 4/* 5 * LINUX SPECIFIC DEFINITIONS 6*/ 7// 8// Data types conversions 9// 10#include <stdlib.h> 11#include <string.h> 12#include "basicDataTypeConversions.h" 13 14#ifdef __cplusplus 15namespace avxsynth { 16#endif // __cplusplus 17// 18// purposefully define the following MSFT definitions 19// to mean nothing (as they do not mean anything on Linux) 20// 21#define __stdcall 22#define __cdecl 23#define noreturn 24#define __declspec(x) 25#define STDAPI extern "C" HRESULT 26#define STDMETHODIMP HRESULT __stdcall 27#define STDMETHODIMP_(x) x __stdcall 28 29#define STDMETHOD(x) virtual HRESULT x 30#define STDMETHOD_(a, x) virtual a x 31 32#ifndef TRUE 33#define TRUE true 34#endif 35 36#ifndef FALSE 37#define FALSE false 38#endif 39 40#define S_OK (0x00000000) 41#define S_FALSE (0x00000001) 42#define E_NOINTERFACE (0X80004002) 43#define E_POINTER (0x80004003) 44#define E_FAIL (0x80004005) 45#define E_OUTOFMEMORY (0x8007000E) 46 47#define INVALID_HANDLE_VALUE ((HANDLE)((LONG_PTR)-1)) 48#define FAILED(hr) ((hr) & 0x80000000) 49#define SUCCEEDED(hr) (!FAILED(hr)) 50 51 52// 53// Functions 54// 55#define MAKEDWORD(a,b,c,d) ((a << 24) | (b << 16) | (c << 8) | (d)) 56#define MAKEWORD(a,b) ((a << 8) | (b)) 57 58#define lstrlen strlen 59#define lstrcpy strcpy 60#define lstrcmpi strcasecmp 61#define _stricmp strcasecmp 62#define InterlockedIncrement(x) __sync_fetch_and_add((x), 1) 63#define InterlockedDecrement(x) __sync_fetch_and_sub((x), 1) 64// Windows uses (new, old) ordering but GCC has (old, new) 65#define InterlockedCompareExchange(x,y,z) __sync_val_compare_and_swap(x,z,y) 66 67#define UInt32x32To64(a, b) ( (uint64_t) ( ((uint64_t)((uint32_t)(a))) * ((uint32_t)(b)) ) ) 68#define Int64ShrlMod32(a, b) ( (uint64_t) ( (uint64_t)(a) >> (b) ) ) 69#define Int32x32To64(a, b) ((__int64)(((__int64)((long)(a))) * ((long)(b)))) 70 71#define MulDiv(nNumber, nNumerator, nDenominator) (int32_t) (((int64_t) (nNumber) * (int64_t) (nNumerator) + (int64_t) ((nDenominator)/2)) / (int64_t) (nDenominator)) 72 73#ifdef __cplusplus 74}; // namespace avxsynth 75#endif // __cplusplus 76 77#endif // __WINDOWS2LINUX_H__ 78