c99defs.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*
  2. * Copyright (c) 2013 Hugh Bailey <[email protected]>
  3. *
  4. * Permission to use, copy, modify, and distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #pragma once
  17. /*
  18. * Contains hacks for getting some C99 stuff working in VC, things like
  19. * bool, inline, stdint
  20. */
  21. #define UNUSED_PARAMETER(param) (void)param
  22. #ifdef _MSC_VER
  23. #define FORCE_INLINE __forceinline
  24. #else
  25. #define FORCE_INLINE __attribute__((always_inline))
  26. #endif
  27. #ifdef _MSC_VER
  28. #pragma warning (disable : 4996)
  29. /* Microsoft is one of the most inept companies on the face of the planet.
  30. * The fact that even visual studio 2013 doesn't support the standard 'inline'
  31. * keyword is so incredibly stupid that I just can't imagine what sort of
  32. * incredibly inept moron could possibly be managing the visual C compiler
  33. * project. They should be fired, and legally forbidden to have a job in
  34. * ANYTHING even REMOTELY related to programming. FOREVER. This should also
  35. * apply to the next 10 generations all of their descendents. */
  36. #ifndef __cplusplus
  37. #define inline __inline
  38. #endif
  39. #define EXPORT __declspec(dllexport)
  40. #else
  41. #define EXPORT
  42. #endif
  43. #if _MSC_VER && _MSC_VER < 0x0708
  44. #include "vc/vc_stdint.h"
  45. #include "vc/vc_stdbool.h"
  46. #ifndef __off_t_defined
  47. #define __off_t_defined
  48. #if _FILE_OFFSET_BITS == 64
  49. typedef long long off_t;
  50. #else
  51. typedef long off_t;
  52. #endif
  53. typedef int64_t off64_t;
  54. #endif /* __off_t_defined */
  55. #define SIZE_T_FORMAT "%u"
  56. #else
  57. #include <stdint.h>
  58. #include <stdbool.h>
  59. #include <sys/types.h>
  60. #define SIZE_T_FORMAT "%zu"
  61. #endif /* _MSC_VER */
  62. #ifndef OBS_DATA_PATH
  63. #define OBS_DATA_PATH "../../data"
  64. #endif
  65. #ifndef OBS_INSTALL_PREFIX
  66. #define OBS_INSTALL_PREFIX ""
  67. #endif
  68. #define OBS_INSTALL_DATA_PATH OBS_INSTALL_PREFIX OBS_DATA_PATH