11#ifndef __COVISE_BYTESWAP_INCLUDED
12#define __COVISE_BYTESWAP_INCLUDED
19inline bool machineIsLittleEndian()
22 return (1 == (
int)*((
char *)&
x));
25inline bool machineIsBigEndian()
28 return (1 != (
int)*((
char *)&
x));
31inline void byteSwap(uint32_t &
value)
33 value = ((
value & 0x000000ff) << 24) | ((
value & 0x0000ff00) << 8) | ((
value & 0x00ff0000) >> 8) | ((
value & 0xff000000) >> 24);
36inline void byteSwap(int32_t &
value)
38 int uval = (uint32_t)
value;
39 value = ((uval & 0x000000ff) << 24) | ((uval & 0x0000ff00) << 8) | ((uval & 0x00ff0000) >> 8) | ((uval & 0xff000000) >> 24);
42inline void byteSwap(uint32_t *
values,
int no)
44 for (
int i = 0; i < no; i++,
values++)
48inline void byteSwap(uint32_t*
values, uint64_t no)
50 for (uint64_t i = 0; i < no; i++,
values++)
53inline void byteSwap(int32_t *
values,
int no)
55 byteSwap((uint32_t *)
values, no);
58inline void byteSwap(uint64_t &
value)
61#if defined(_WIN32) && !defined(__MINGW32__)
62 ((
value & 0x00000000000000ff) << 56) | ((
value & 0x000000000000ff00) << 40) | ((
value & 0x0000000000ff0000) << 24) | ((
value & 0x00000000ff000000) << 8) | ((
value & 0x000000ff00000000) >> 8) | ((
value & 0x0000ff0000000000) >> 24) | ((
value & 0x00ff000000000000) >> 40) | ((
value & 0xff00000000000000) >> 56);
64 ((
value & 0x00000000000000ffll) << 56) | ((
value & 0x000000000000ff00ll) << 40) | ((
value & 0x0000000000ff0000ll) << 24) | ((
value & 0x00000000ff000000ll) << 8) | ((
value & 0x000000ff00000000ll) >> 8) | ((
value & 0x0000ff0000000000ll) >> 24) | ((
value & 0x00ff000000000000ll) >> 40) | ((
value & 0xff00000000000000ll) >> 56);
68inline void byteSwap(int64_t &
value)
71#if defined(_WIN32) && !defined(__MINGW32__)
72 ((
value & 0x00000000000000ff) << 56) | ((
value & 0x000000000000ff00) << 40) | ((
value & 0x0000000000ff0000) << 24) | ((
value & 0x00000000ff000000) << 8) | ((
value & 0x000000ff00000000) >> 8) | ((
value & 0x0000ff0000000000) >> 24) | ((
value & 0x00ff000000000000) >> 40) | ((
value & 0xff00000000000000) >> 56);
74 ((
value & 0x00000000000000ffll) << 56) | ((
value & 0x000000000000ff00ll) << 40) | ((
value & 0x0000000000ff0000ll) << 24) | ((
value & 0x00000000ff000000ll) << 8) | ((
value & 0x000000ff00000000ll) >> 8) | ((
value & 0x0000ff0000000000ll) >> 24) | ((
value & 0x00ff000000000000ll) >> 40) | ((
value & 0xff00000000000000ll) >> 56);
78inline void byteSwap(uint64_t *
values,
int no)
81 for (i = 0; i < no; i++,
values++)
84#if defined(_WIN32) && !defined(__MINGW32__)
85 ((*
values & 0x00000000000000ff) << 56) | ((*
values & 0x000000000000ff00) << 40) | ((*
values & 0x0000000000ff0000) << 24) | ((*
values & 0x00000000ff000000) << 8) | ((*
values & 0x000000ff00000000) >> 8) | ((*
values & 0x0000ff0000000000) >> 24) | ((*
values & 0x00ff000000000000) >> 40) | ((*
values & 0xff00000000000000) >> 56);
87 ((*
values & 0x00000000000000ffll) << 56) | ((*
values & 0x000000000000ff00ll) << 40) | ((*
values & 0x0000000000ff0000ll) << 24) | ((*
values & 0x00000000ff000000ll) << 8) | ((*
values & 0x000000ff00000000ll) >> 8) | ((*
values & 0x0000ff0000000000ll) >> 24) | ((*
values & 0x00ff000000000000ll) >> 40) | ((*
values & 0xff00000000000000ll) >> 56);
92inline void byteSwap(uint64_t*
values, uint64_t no)
95 for (i = 0; i < no; i++,
values++)
98#if defined(_WIN32) && !defined(__MINGW32__)
99 ((*
values & 0x00000000000000ff) << 56) | ((*
values & 0x000000000000ff00) << 40) | ((*
values & 0x0000000000ff0000) << 24) | ((*
values & 0x00000000ff000000) << 8) | ((*
values & 0x000000ff00000000) >> 8) | ((*
values & 0x0000ff0000000000) >> 24) | ((*
values & 0x00ff000000000000) >> 40) | ((*
values & 0xff00000000000000) >> 56);
101 ((*
values & 0x00000000000000ffll) << 56) | ((*
values & 0x000000000000ff00ll) << 40) | ((*
values & 0x0000000000ff0000ll) << 24) | ((*
values & 0x00000000ff000000ll) << 8) | ((*
values & 0x000000ff00000000ll) >> 8) | ((*
values & 0x0000ff0000000000ll) >> 24) | ((*
values & 0x00ff000000000000ll) >> 40) | ((*
values & 0xff00000000000000ll) >> 56);
108#define double2ll(value) (*(uint64_t *)(&value))
109inline void byteSwap(
double &
value)
113#if defined(_WIN32) && !defined(__MINGW32__)
120inline void byteSwap(
double *
values,
int no)
122 for (
int i = 0; i < no; i++)
128#define float2int(value) (*(uint32_t *)(&value))
129inline void byteSwap(
float &
value)
135inline void byteSwap(
float *
values,
int no)
137 uint32_t *intValues = (uint32_t *)
values;
138 for (
int i = 0; i < no; i++, intValues++)
139 *intValues = ((*intValues & 0x000000ff) << 24) | ((*intValues & 0x0000ff00) << 8) | ((*intValues & 0x00ff0000) >> 8) | ((*intValues & 0xff000000) >> 24);
142inline void byteSwap(uint16_t &
value)
147inline void byteSwap(uint16_t *
values,
int no)
149 for (
int i = 0; i < no; i++,
values++)
153inline void byteSwap(int16_t &
value)
155 uint16_t uval = (uint16_t)
value;
156 value = ((uval & 0x00ff) << 8) | ((uval & 0xff00) >> 8);
159inline void byteSwap(int16_t *
values,
int no)
161 byteSwap((uint16_t *)
values, no);
#define float2int(value)
Definition: byteswap.h:128
#define double2ll(value)
Definition: byteswap.h:108
GLsizei const GLfloat * value
Definition: khronos-glext.h:6760
GLboolean GLenum GLenum GLvoid * values
Definition: khronos-glext.h:6369
GLint GLint GLint GLint GLint x
Definition: khronos-glext.h:6346