Commit | Line | Data |
---|---|---|
2ba45a60 DM |
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 | |
15 | namespace 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__ |