Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  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__
  78.