npy_endian.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef _NPY_ENDIAN_H_
  2. #define _NPY_ENDIAN_H_
  3. /*
  4. * NPY_BYTE_ORDER is set to the same value as BYTE_ORDER set by glibc in
  5. * endian.h
  6. */
  7. #ifdef NPY_HAVE_ENDIAN_H
  8. /* Use endian.h if available */
  9. #include <endian.h>
  10. #if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN)
  11. #define NPY_BYTE_ORDER BYTE_ORDER
  12. #define NPY_LITTLE_ENDIAN LITTLE_ENDIAN
  13. #define NPY_BIG_ENDIAN BIG_ENDIAN
  14. #elif defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && defined(_LITTLE_ENDIAN)
  15. #define NPY_BYTE_ORDER _BYTE_ORDER
  16. #define NPY_LITTLE_ENDIAN _LITTLE_ENDIAN
  17. #define NPY_BIG_ENDIAN _BIG_ENDIAN
  18. #elif defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN)
  19. #define NPY_BYTE_ORDER __BYTE_ORDER
  20. #define NPY_LITTLE_ENDIAN __LITTLE_ENDIAN
  21. #define NPY_BIG_ENDIAN __BIG_ENDIAN
  22. #endif
  23. #endif
  24. #ifndef NPY_BYTE_ORDER
  25. /* Set endianness info using target CPU */
  26. #include "npy_cpu.h"
  27. #define NPY_LITTLE_ENDIAN 1234
  28. #define NPY_BIG_ENDIAN 4321
  29. #if defined(NPY_CPU_X86) \
  30. || defined(NPY_CPU_AMD64) \
  31. || defined(NPY_CPU_IA64) \
  32. || defined(NPY_CPU_ALPHA) \
  33. || defined(NPY_CPU_ARMEL) \
  34. || defined(NPY_CPU_AARCH64) \
  35. || defined(NPY_CPU_SH_LE) \
  36. || defined(NPY_CPU_MIPSEL) \
  37. || defined(NPY_CPU_PPC64LE)
  38. #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN
  39. #elif defined(NPY_CPU_PPC) \
  40. || defined(NPY_CPU_SPARC) \
  41. || defined(NPY_CPU_S390) \
  42. || defined(NPY_CPU_HPPA) \
  43. || defined(NPY_CPU_PPC64) \
  44. || defined(NPY_CPU_ARMEB) \
  45. || defined(NPY_CPU_SH_BE) \
  46. || defined(NPY_CPU_MIPSEB) \
  47. || defined(NPY_CPU_OR1K) \
  48. || defined(NPY_CPU_M68K)
  49. #define NPY_BYTE_ORDER NPY_BIG_ENDIAN
  50. #else
  51. #error Unknown CPU: can not set endianness
  52. #endif
  53. #endif
  54. #endif