Imported Debian version 2.4.3~trusty1
[deb_ffmpeg.git] / ffmpeg / compat / avisynth / windowsPorts / windows2linux.h
CommitLineData
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
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__