openalbridge/endianness.h
author koda
Sun, 11 Oct 2009 16:03:56 +0000
changeset 2415 35d09cbf819a
parent 2261 57e99c908e7c
permissions -rw-r--r--
OpenALBridge updates - fix problems when building for PPC targets - gives more precise error messages
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
     1
/*
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
     2
 * OpenAL Bridge - a simple portable library for OpenAL interface
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
     3
 * Copyright (c) 2009 Vittorio Giovara <vittorio.giovara@gmail.com>
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
     4
 *
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
2257
7eb31efcfb9b updates licence and fix a memory leak (which was consuming iphone memory)
koda
parents: 2216
diff changeset
     6
 * it under the terms of the GNU Lesser General Public License as published by
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
     8
 *
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2257
7eb31efcfb9b updates licence and fix a memory leak (which was consuming iphone memory)
koda
parents: 2216
diff changeset
    12
 * GNU Lesser General Public License for more details.
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    13
 *
2257
7eb31efcfb9b updates licence and fix a memory leak (which was consuming iphone memory)
koda
parents: 2216
diff changeset
    14
 * You should have received a copy of the GNU Lesser General Public License
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    17
 */
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    18
2213
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2212
diff changeset
    19
#ifndef _OALB_ENDIANNESS_H
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2212
diff changeset
    20
#define _OALB_ENDIANNESS_H
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2212
diff changeset
    21
2212
6b5da1a2765a -openalbridge headers cleaned
koda
parents: 2203
diff changeset
    22
#include "globals.h"
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    23
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    24
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    25
#ifdef __CPLUSPLUS
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    26
extern "C" {
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    27
#endif 
2415
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    28
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    29
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    30
/* check compiler requirements */
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    31
#if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    32
#error Do not know the endianess of this architecture
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    33
#endif
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    34
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    35
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    36
/* use byteswap macros from the host system, hopefully optimized ones ;-) 
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    37
 * or define our own version, simple, stupid, straight-forward... */
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    38
#ifdef HAVE_BYTESWAP_H
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    39
#include <byteswap.h>
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    40
#else        
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    41
#define bswap_16(x)	((((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8))
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    42
#define bswap_32(x)	((((x) & 0xFF000000) >> 24) | (((x) & 0x00FF0000) >> 8)  | \
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    43
(((x) & 0x0000FF00) << 8)  | (((x) & 0x000000FF) << 24) )
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    44
#endif /* HAVE_BYTESWAP_H */
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    45
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    46
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    47
/* swap numbers accordingly to architecture automatically */
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    48
#ifdef __LITTLE_ENDIAN__
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    49
#define ENDIAN_LITTLE_32(x) x
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    50
#define ENDIAN_BIG_32(x)    bswap_32(x)
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    51
#define ENDIAN_LITTLE_16(x) x
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    52
#define ENDIAN_BIG_16(x)    bswap_16(x)
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    53
#elif __BIG_ENDIAN__
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    54
#define ENDIAN_LITTLE_32(x) bswap_32(x)
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    55
#define ENDIAN_BIG_32(x)    x
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    56
#define ENDIAN_LITTLE_16(x) bswap_16(x)
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    57
#define ENDIAN_BIG_16(x)    x    
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    58
#endif
2261
57e99c908e7c a lot of stuff:
koda
parents: 2260
diff changeset
    59
        
2415
35d09cbf819a OpenALBridge updates
koda
parents: 2261
diff changeset
    60
        
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    61
#ifdef __CPLUSPLUS
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents:
diff changeset
    62
}
2213
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2212
diff changeset
    63
#endif
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2212
diff changeset
    64
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2212
diff changeset
    65
#endif /*_OALB_ENDIANNESS_H*/