mirror of https://github.com/zeldaret/oot.git
				
				
				
			
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
| #ifndef ENDIAN_H_
 | |
| #define ENDIAN_H_
 | |
| 
 | |
| #if defined(__linux__) || defined(__CYGWIN__)
 | |
| #include <endian.h>
 | |
| #elif defined(__APPLE__)
 | |
| #include <libkern/OSByteOrder.h>
 | |
| 
 | |
| #define htobe16(x) OSSwapHostToBigInt16(x)
 | |
| #define htole16(x) OSSwapHostToLittleInt16(x)
 | |
| #define be16toh(x) OSSwapBigToHostInt16(x)
 | |
| #define le16toh(x) OSSwapLittleToHostInt16(x)
 | |
| 
 | |
| #define htobe32(x) OSSwapHostToBigInt32(x)
 | |
| #define htole32(x) OSSwapHostToLittleInt32(x)
 | |
| #define be32toh(x) OSSwapBigToHostInt32(x)
 | |
| #define le32toh(x) OSSwapLittleToHostInt32(x)
 | |
| 
 | |
| #define htobe64(x) OSSwapHostToBigInt64(x)
 | |
| #define htole64(x) OSSwapHostToLittleInt64(x)
 | |
| #define be64toh(x) OSSwapBigToHostInt64(x)
 | |
| #define le64toh(x) OSSwapLittleToHostInt64(x)
 | |
| #else
 | |
| 
 | |
| #if !defined(__BYTE_ORDER__)
 | |
| #error "No endian define provided by compiler"
 | |
| #endif
 | |
| 
 | |
| #if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
 | |
| 
 | |
| #define htobe16(x) (x)
 | |
| #define htole16(x) __builtin_bswap16(x)
 | |
| #define be16toh(x) (x)
 | |
| #define le16toh(x) __builtin_bswap16(x)
 | |
| 
 | |
| #define htobe32(x) (x)
 | |
| #define htole32(x) __builtin_bswap32(x)
 | |
| #define be32toh(x) (x)
 | |
| #define le32toh(x) __builtin_bswap32(x)
 | |
| 
 | |
| #define htobe64(x) (x)
 | |
| #define htole64(x) __builtin_bswap64(x)
 | |
| #define be64toh(x) (x)
 | |
| #define le64toh(x) __builtin_bswap64(x)
 | |
| 
 | |
| #else
 | |
| 
 | |
| #define htobe16(x) __builtin_bswap16(x)
 | |
| #define htole16(x) (x)
 | |
| #define be16toh(x) __builtin_bswap16(x)
 | |
| #define le16toh(x) (x)
 | |
| 
 | |
| #define htobe32(x) __builtin_bswap32(x)
 | |
| #define htole32(x) (x)
 | |
| #define be32toh(x) __builtin_bswap32(x)
 | |
| #define le32toh(x) (x)
 | |
| 
 | |
| #define htobe64(x) __builtin_bswap64(x)
 | |
| #define htole64(x) (x)
 | |
| #define be64toh(x) __builtin_bswap64(x)
 | |
| #define le64toh(x) (x)
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif
 |