| /*---------------------------------------------------------------------------* |
| * pendian.h * |
| * * |
| * Copyright 2007, 2008 Nuance Communciations, Inc. * |
| * * |
| * 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. * |
| * * |
| *---------------------------------------------------------------------------*/ |
| |
| #ifndef PENDIAN_H |
| #define PENDIAN_H |
| |
| |
| |
| #include "PortPrefix.h" |
| #include "ptypes.h" |
| |
| #ifdef __sgi |
| /* */#include <sys/endian.h> |
| |
| #elif defined(__sparc) |
| /* */#include <sys/isa_defs.h> |
| /* */#ifdef __LITTLE_ENDIAN |
| /* *//* */#define __LITTLE_ENDIAN 1234 |
| /* *//* */#define __BYTE_ORDER __LITTLE_ENDIAN |
| /* */#elif defined(_BIG_ENDIAN) |
| /* *//* */#define __BIG_ENDIAN 4321 |
| /* *//* */#define __BYTE_ORDER __BIG_ENDIAN |
| /* */#endif |
| |
| #elif defined(ANDROID) |
| |
| /* */#ifdef HAVE_ENDIAN |
| /* */#include <endian.h> |
| |
| /* */#elif defined(HAVE_LITTLE_ENDIAN) |
| /* *//* */#define __LITTLE_ENDIAN 1234 |
| /* *//* */#define __BYTE_ORDER __LITTLE_ENDIAN |
| |
| /* */#elif defined(HAVE_BIG_ENDIAN) |
| /* *//* */#define __BIG_ENDIAN 4321 |
| /* *//* */#define __BYTE_ORDER __BIG_ENDIAN |
| |
| /* */#endif |
| |
| #elif defined (__linux) |
| /* */#include <endian.h> |
| |
| #elif defined(__FreeBSD__) || defined(_decunix_) |
| /* */#include <machine/endian.h> |
| |
| #elif defined(__i386) || defined(_M_IX86) |
| /* */#undef __LITTLE_ENDIAN |
| /* */#define __LITTLE_ENDIAN 1234 |
| /* */#define __BYTE_ORDER __LITTLE_ENDIAN |
| |
| #elif defined(_sh4_)||defined(SH4) |
| /* */#if defined (__vxworks) |
| /* *//* */#if _BYTE_ORDER == _LITTLE_ENDIAN /* VxWorks defines _BYTE_ORDER and _LITTLE_ENDIAN */ |
| /* *//* *//* */#undef __LITTLE_ENDIAN |
| /* *//* *//* */#define __LITTLE_ENDIAN 1234 |
| /* *//* *//* */#define __BYTE_ORDER __LITTLE_ENDIAN |
| /* *//* */#elif _BYTE_ORDER == _BIG_ENDIAN /* VxWorks defines _BYTE_ORDER and _BIG_ENDIAN */ |
| /* *//* *//* */#undef __BIG_ENDIAN |
| /* *//* *//* */#define __BIG_ENDIAN 4321 |
| /* *//* *//* */#define __BYTE_ORDER __BIG_ENDIAN |
| /* *//* */#else |
| /* *//* *//* */#error |
| /* *//* */#endif |
| /* */#else |
| /* *//* */#error "Could not determine endianness of the machine Unknown OS for SH4 Chip." |
| /* */#endif |
| |
| #else |
| /* */#error "Could not determine endianness of the machine Chip Not Known." |
| #endif |
| |
| |
| /** |
| * @addtogroup ESR_PortableModule ESR_Portable API functions |
| * |
| * @{ |
| */ |
| |
| /** |
| * Swaps bytes of each item in buffer. |
| * |
| * @param buffer Buffer containing items to swap. |
| * @param count Number of items to swap. |
| * @param itemSize Size of each items. |
| */ |
| PORTABLE_API void swap_byte_order(void *buffer, |
| size_t count, |
| size_t itemSize); |
| |
| /** |
| * @} |
| */ |
| |
| #endif |