]> rtime.felk.cvut.cz Git - orte.git/blob - orte/include/rtps_endian.h
ec9595054abe08772c0905498af7196671016d59
[orte.git] / orte / include / rtps_endian.h
1 #ifndef RTPS_ENDIAN_H
2 #define RTPS_ENDIAN_H 1
3
4 #include "orte/orte_config.h"
5
6 #define FLAG_BIG_ENDIAN 0
7 #define FLAG_LITTLE_ENDIAN 1
8
9 #if WORDS_BIGENDIAN
10
11 # define FLAG_ENDIANNESS FLAG_BIG_ENDIAN
12 # define conversion_needed(to_endianness) ((to_endianness)!=FLAG_BIG_ENDIAN)
13
14 #else
15
16 # define FLAG_ENDIANNESS FLAG_LITTLE_ENDIAN
17 # define conversion_needed(to_endianness) ((to_endianness)!=FLAG_LITTLE_ENDIAN)
18
19 #endif
20
21 static inline 
22 void rtps_byteswap(uint8_t *outdata,
23                           const uint8_t *data,
24                           uint32_t datalen)
25 {
26   const uint8_t *source_ptr = data;
27   uint8_t *dest_ptr = outdata + datalen - 1;
28   while(dest_ptr >= outdata)
29     *dest_ptr-- = *source_ptr++;
30 }
31
32
33 #endif /* FLAG_ENDIANNESS */