/*---------------------------------------------------------------------------* * 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