Asterisk.org: Developer Documentation (28 Oct 2009)

Wed Oct 28 15:47:53 2009

## Asterisk developer's documentation

# endian.h

Go to the documentation of this file.

    00001 /*
    00002  * Asterisk -- An open source telephony toolkit.
    00003  *
    00004  * Copyright (C) 1999 - 2005, Digium, Inc.
    00005  *
    00006  * Mark Spencer <markster@digium.com>
    00007  *
    00008  * See http://www.asterisk.org for more information about
    00009  * the Asterisk project. Please do not directly contact
    00010  * any of the maintainers of this project for assistance;
    00011  * the project provides a web site, mailing lists and IRC
    00012  * channels for your use.
    00013  *
    00014  * This program is free software, distributed under the terms of
    00015  * the GNU General Public License Version 2. See the LICENSE file
    00016  * at the top of the source tree.
    00017  */
    00018
    00019 /*! \file
    00020  * \brief Asterisk architecture endianess compatibility definitions
    00021  */
    00022
    00023 #ifndef _ASTERISK_ENDIAN_H
    00024 #define _ASTERISK_ENDIAN_H
    00025
    00026 /*
    00027  * Autodetect system endianess
    00028  */
    00029
    00030 #include "asterisk/compat.h"
    00031
    00032 #ifndef __BYTE_ORDER
    00033 #ifdef __linux__
    00034 #include <endian.h>
    00035 #elif defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
    00036 #if defined(__OpenBSD__)
    00037 #include <machine/types.h>
    00038 #endif /* __OpenBSD__ */
    00039 #include <machine/endian.h>
    00040 #define __BYTE_ORDER BYTE_ORDER
    00041 #define __LITTLE_ENDIAN LITTLE_ENDIAN
    00042 #define __BIG_ENDIAN BIG_ENDIAN
    00043 #else
    00044 #ifdef __LITTLE_ENDIAN__
    00045 #define __BYTE_ORDER __LITTLE_ENDIAN
    00046 #endif /* __LITTLE_ENDIAN */
    00047
    00048 #if defined(i386) || defined(__i386__)
    00049 #define __BYTE_ORDER __LITTLE_ENDIAN
    00050 #endif /* defined i386 */
    00051
    00052 #if defined(sun) && defined(unix) && defined(sparc)
    00053 #define __BYTE_ORDER __BIG_ENDIAN
    00054 #endif /* sun unix sparc */
    00055
    00056 #endif /* linux */
    00057
    00058 #endif /* __BYTE_ORDER */
    00059
    00060 #ifndef __BYTE_ORDER
    00061 #error Need to know endianess
    00062 #endif /* __BYTE_ORDER */
    00063
    00064 #endif /* _ASTERISK_ENDIAN_H */
    00065