| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 | /* * Copyright (c) 2011 Apple Inc. All rights reserved. * * @APPLE_APACHE_LICENSE_HEADER_START@ *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *  *     http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *  * @APPLE_APACHE_LICENSE_HEADER_END@ */////  EndianPortable.c////  Copyright 2011 Apple Inc. All rights reserved.//#include <stdio.h>#include "EndianPortable.h"#define BSWAP16(x) (((x << 8) | ((x >> 8) & 0x00ff)))#define BSWAP32(x) (((x << 24) | ((x << 8) & 0x00ff0000) | ((x >> 8) & 0x0000ff00) | ((x >> 24) & 0x000000ff)))#define BSWAP64(x) ((((int64_t)x << 56) | (((int64_t)x << 40) & 0x00ff000000000000LL) | \                    (((int64_t)x << 24) & 0x0000ff0000000000LL) | (((int64_t)x << 8) & 0x000000ff00000000LL) | \                    (((int64_t)x >> 8) & 0x00000000ff000000LL) | (((int64_t)x >> 24) & 0x0000000000ff0000LL) | \                    (((int64_t)x >> 40) & 0x000000000000ff00LL) | (((int64_t)x >> 56) & 0x00000000000000ffLL)))#if defined(__i386__)#define TARGET_RT_LITTLE_ENDIAN 1#elif defined(__x86_64__)#define TARGET_RT_LITTLE_ENDIAN 1#elif defined (TARGET_OS_WIN32)#define TARGET_RT_LITTLE_ENDIAN 1#elif defined (__arm__) || defined(__aarch64__)#define TARGET_RT_LITTLE_ENDIAN 1#endifuint16_t Swap16NtoB(uint16_t inUInt16){#if TARGET_RT_LITTLE_ENDIAN    return BSWAP16(inUInt16);#else    return inUInt16;#endif}uint16_t Swap16BtoN(uint16_t inUInt16){#if TARGET_RT_LITTLE_ENDIAN    return BSWAP16(inUInt16);#else    return inUInt16;#endif}uint32_t Swap32NtoB(uint32_t inUInt32){#if TARGET_RT_LITTLE_ENDIAN    return BSWAP32(inUInt32);#else    return inUInt32;#endif}uint32_t Swap32BtoN(uint32_t inUInt32){#if TARGET_RT_LITTLE_ENDIAN    return BSWAP32(inUInt32);#else    return inUInt32;#endif}uint64_t Swap64BtoN(uint64_t inUInt64){#if TARGET_RT_LITTLE_ENDIAN    return BSWAP64(inUInt64);#else    return inUInt64;#endif}uint64_t Swap64NtoB(uint64_t inUInt64){#if TARGET_RT_LITTLE_ENDIAN    return BSWAP64(inUInt64);#else    return inUInt64;#endif}float SwapFloat32BtoN(float in){#if TARGET_RT_LITTLE_ENDIAN	union {		float f;		int32_t i;	} x;	x.f = in;		x.i = BSWAP32(x.i);	return x.f;#else	return in;#endif}float SwapFloat32NtoB(float in){#if TARGET_RT_LITTLE_ENDIAN	union {		float f;		int32_t i;	} x;	x.f = in;		x.i = BSWAP32(x.i);	return x.f;#else	return in;#endif}double SwapFloat64BtoN(double in){#if TARGET_RT_LITTLE_ENDIAN	union {		double f;		int64_t i;	} x;	x.f = in;		x.i = BSWAP64(x.i);	return x.f;#else	return in;#endif}double SwapFloat64NtoB(double in){#if TARGET_RT_LITTLE_ENDIAN	union {		double f;		int64_t i;	} x;	x.f = in;		x.i = BSWAP64(x.i);	return x.f;#else	return in;#endif}void Swap16(uint16_t * inUInt16){	*inUInt16 = BSWAP16(*inUInt16);}void Swap24(uint8_t * inUInt24){	uint8_t tempVal = inUInt24[0];	inUInt24[0] = inUInt24[2];	inUInt24[2] = tempVal;}void Swap32(uint32_t * inUInt32){	*inUInt32 = BSWAP32(*inUInt32);}
 |