v2.0.0
Loading...
Searching...
No Matches
fiff_byte_swap.h
Go to the documentation of this file.
1//=============================================================================================================
25
26#ifndef FIFF_BYTE_SWAP_H
27#define FIFF_BYTE_SWAP_H
28
29//=============================================================================================================
30// INCLUDES
31//=============================================================================================================
32
33#include <QtGlobal>
34
35//=============================================================================================================
36// DEFINE NAMESPACE FIFFLIB
37//=============================================================================================================
38
39namespace FIFFLIB
40{
41
42//=============================================================================================================
46inline qint16 swap_short(qint16 source)
47{
48 auto *csource = reinterpret_cast<unsigned char *>(&source);
49 qint16 result;
50 auto *cresult = reinterpret_cast<unsigned char *>(&result);
51 cresult[0] = csource[1];
52 cresult[1] = csource[0];
53 return result;
54}
55
56//=============================================================================================================
60inline qint32 swap_int(qint32 source)
61{
62 auto *csource = reinterpret_cast<unsigned char *>(&source);
63 qint32 result;
64 auto *cresult = reinterpret_cast<unsigned char *>(&result);
65 cresult[0] = csource[3];
66 cresult[1] = csource[2];
67 cresult[2] = csource[1];
68 cresult[3] = csource[0];
69 return result;
70}
71
72//=============================================================================================================
76inline void swap_intp(qint32 *source)
77{
78 auto *csource = reinterpret_cast<unsigned char *>(source);
79 unsigned char c;
80 c = csource[3]; csource[3] = csource[0]; csource[0] = c;
81 c = csource[2]; csource[2] = csource[1]; csource[1] = c;
82}
83
84//=============================================================================================================
88inline qint64 swap_long(qint64 source)
89{
90 auto *csource = reinterpret_cast<unsigned char *>(&source);
91 qint64 result;
92 auto *cresult = reinterpret_cast<unsigned char *>(&result);
93 cresult[0] = csource[7];
94 cresult[1] = csource[6];
95 cresult[2] = csource[5];
96 cresult[3] = csource[4];
97 cresult[4] = csource[3];
98 cresult[5] = csource[2];
99 cresult[6] = csource[1];
100 cresult[7] = csource[0];
101 return result;
102}
103
104//=============================================================================================================
108inline void swap_longp(qint64 *source)
109{
110 auto *csource = reinterpret_cast<unsigned char *>(source);
111 unsigned char c;
112 c = csource[0]; csource[0] = csource[7]; csource[7] = c;
113 c = csource[1]; csource[1] = csource[6]; csource[6] = c;
114 c = csource[2]; csource[2] = csource[5]; csource[5] = c;
115 c = csource[3]; csource[3] = csource[4]; csource[4] = c;
116}
117
118//=============================================================================================================
122inline float swap_float(float source)
123{
124 auto *csource = reinterpret_cast<unsigned char *>(&source);
125 float result;
126 auto *cresult = reinterpret_cast<unsigned char *>(&result);
127 cresult[0] = csource[3];
128 cresult[1] = csource[2];
129 cresult[2] = csource[1];
130 cresult[3] = csource[0];
131 return result;
132}
133
134//=============================================================================================================
138inline void swap_floatp(float *source)
139{
140 auto *csource = reinterpret_cast<unsigned char *>(source);
141 unsigned char c;
142 c = csource[3]; csource[3] = csource[0]; csource[0] = c;
143 c = csource[2]; csource[2] = csource[1]; csource[1] = c;
144}
145
146//=============================================================================================================
150inline void swap_doublep(double *source)
151{
152 auto *csource = reinterpret_cast<unsigned char *>(source);
153 unsigned char c;
154 c = csource[7]; csource[7] = csource[0]; csource[0] = c;
155 c = csource[6]; csource[6] = csource[1]; csource[1] = c;
156 c = csource[5]; csource[5] = csource[2]; csource[2] = c;
157 c = csource[4]; csource[4] = csource[3]; csource[3] = c;
158}
159
160} // NAMESPACE FIFFLIB
161
162#endif // FIFF_BYTE_SWAP_H
FIFF file I/O, in-memory data structures and high-level readers/writers.
void swap_doublep(double *source)
float swap_float(float source)
qint32 swap_int(qint32 source)
void swap_longp(qint64 *source)
qint64 swap_long(qint64 source)
void swap_floatp(float *source)
void swap_intp(qint32 *source)
qint16 swap_short(qint16 source)