Compatibility.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //-----------------------------------------------------------------------------
  2. // (c) 2006 by Basler Vision Technologies
  3. // Section: Vision Components
  4. // Project: GenApi
  5. // Author: Margret Albrecht
  6. // $Header$
  7. //
  8. // License: This file is published under the license of the EMVA GenICam Standard Group.
  9. // A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
  10. // If for some reason you are missing this file please contact the EMVA or visit the website
  11. // (http://www.genicam.org) for a full copy.
  12. //
  13. // THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
  14. // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  15. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  16. // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
  17. // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  18. // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  19. // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  20. // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  21. // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  22. // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  23. // POSSIBILITY OF SUCH DAMAGE.
  24. //-----------------------------------------------------------------------------
  25. /*!
  26. \file
  27. \brief Definition of macros for cross-platform compatibility
  28. \ingroup GenApi_Implementation
  29. */
  30. #ifndef GENAPI_COMPATIBILITY_H
  31. #define GENAPI_COMPATIBILITY_H
  32. #if defined (_MSC_VER) && defined (_WIN32)
  33. #if ! defined(NOMINMAX)
  34. # define NOMINMAX
  35. #endif
  36. #elif defined (__GNUC__) && (defined (__linux__) || defined (__APPLE__) || defined(VXWORKS))
  37. # include <stdint.h>
  38. /*
  39. * Watch out!
  40. * In order not to break existing code, we have to duplicate the
  41. * broken MS Windows GUID handling. Never mix with code using the
  42. * rfc4122-compliant uuid framework implemented by libuuid!
  43. */
  44. typedef struct _GUID {
  45. uint32_t Data1;
  46. uint16_t Data2;
  47. uint16_t Data3;
  48. uint8_t Data4[ 8 ];
  49. } __attribute__ ((packed)) GUID;
  50. #else
  51. # error Unsupported platform
  52. #endif
  53. #if defined (__APPLE__)
  54. # define FMT_I64 "ll"
  55. #else
  56. # if defined (__x86_64) // GNUC && 64 Bit
  57. # define FMT_I64 "l"
  58. # else // all 32 bit and all Windows
  59. # define FMT_I64 "ll"
  60. # endif
  61. #endif
  62. #endif // ifndef GENAPI_COMPATIBILITY_H