Changeset 4274:c73655bf5888 in roaraudio


Ignore:
Timestamp:
08/28/10 15:53:14 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

updated macro to work with 64 bit types correctly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • include/roaraudio/byteorder.h

    r4073 r4274  
    3030#define _ROARAUDIO_BYTEORDER_H_ 
    3131 
    32 #define _ROAR_MOVE_BYTE(x,p,n) (((x) & (0xFFUL << (8*(p)))) >> (8*(p)) << ((n)-8*((p)+1))) 
     32#define _ROAR_MOVE_BYTE(x,p,n) ( \ 
     33                                ((int_least64_t)( \ 
     34                                 ((int_least64_t)((int_least64_t)(x) & ((int_least64_t)0xFFUL << (8*(p))))) >> (8*(p)) \ 
     35                                )) << ((n)-8*((p)+1)) \ 
     36                               ) 
    3337 
    3438#if BYTE_ORDER == BIG_ENDIAN && !defined(ROAR_TARGET_WIN32) 
     
    5862#if BYTE_ORDER == LITTLE_ENDIAN 
    5963#define ROAR_NET2HOST64(x) ROAR_HOST2NET64(x) 
    60 #define ROAR_HOST2NET64(x) (_ROAR_MOVE_BYTE((x), 0, 64) | _ROAR_MOVE_BYTE((x), 1, 64) | \ 
    61                             _ROAR_MOVE_BYTE((x), 2, 64) | _ROAR_MOVE_BYTE((x), 3, 64) | \ 
    62                             _ROAR_MOVE_BYTE((x), 4, 64) | _ROAR_MOVE_BYTE((x), 5, 64) | \ 
    63                             _ROAR_MOVE_BYTE((x), 6, 64) | _ROAR_MOVE_BYTE((x), 7, 64) ) 
     64#define ROAR_HOST2NET64(x) ((int_least64_t) \ 
     65                            (_ROAR_MOVE_BYTE((x), 0, 64) | _ROAR_MOVE_BYTE((x), 1, 64) | \ 
     66                             _ROAR_MOVE_BYTE((x), 2, 64) | _ROAR_MOVE_BYTE((x), 3, 64) | \ 
     67                             _ROAR_MOVE_BYTE((x), 4, 64) | _ROAR_MOVE_BYTE((x), 5, 64) | \ 
     68                             _ROAR_MOVE_BYTE((x), 6, 64) | _ROAR_MOVE_BYTE((x), 7, 64) ) ) 
    6469#else 
    6570/* PDP byte order */ 
Note: See TracChangeset for help on using the changeset viewer.