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//=============================================================================================================
50[[nodiscard]] inline qint16 swap_short(qint16 source)
51{
52 auto* csource = reinterpret_cast<unsigned char*>(&source);
53 qint16 result;
54 auto* cresult = reinterpret_cast<unsigned char*>(&result);
55 cresult[0] = csource[1];
56 cresult[1] = csource[0];
57 return result;
58}
59
60//=============================================================================================================
68[[nodiscard]] inline qint32 swap_int(qint32 source)
69{
70 auto* csource = reinterpret_cast<unsigned char*>(&source);
71 qint32 result;
72 auto* cresult = reinterpret_cast<unsigned char*>(&result);
73 cresult[0] = csource[3];
74 cresult[1] = csource[2];
75 cresult[2] = csource[1];
76 cresult[3] = csource[0];
77 return result;
78}
79
80//=============================================================================================================
86inline void swap_intp(qint32* source)
87{
88 auto* csource = reinterpret_cast<unsigned char*>(source);
89 unsigned char c;
90 c = csource[3];
91 csource[3] = csource[0];
92 csource[0] = c;
93 c = csource[2];
94 csource[2] = csource[1];
95 csource[1] = c;
96}
97
98//=============================================================================================================
106[[nodiscard]] inline qint64 swap_long(qint64 source)
107{
108 auto* csource = reinterpret_cast<unsigned char*>(&source);
109 qint64 result;
110 auto* cresult = reinterpret_cast<unsigned char*>(&result);
111 cresult[0] = csource[7];
112 cresult[1] = csource[6];
113 cresult[2] = csource[5];
114 cresult[3] = csource[4];
115 cresult[4] = csource[3];
116 cresult[5] = csource[2];
117 cresult[6] = csource[1];
118 cresult[7] = csource[0];
119 return result;
120}
121
122//=============================================================================================================
128inline void swap_longp(qint64* source)
129{
130 auto* csource = reinterpret_cast<unsigned char*>(source);
131 unsigned char c;
132 c = csource[0];
133 csource[0] = csource[7];
134 csource[7] = c;
135 c = csource[1];
136 csource[1] = csource[6];
137 csource[6] = c;
138 c = csource[2];
139 csource[2] = csource[5];
140 csource[5] = c;
141 c = csource[3];
142 csource[3] = csource[4];
143 csource[4] = c;
144}
145
146//=============================================================================================================
154[[nodiscard]] inline float swap_float(float source)
155{
156 auto* csource = reinterpret_cast<unsigned char*>(&source);
157 float result;
158 auto* cresult = reinterpret_cast<unsigned char*>(&result);
159 cresult[0] = csource[3];
160 cresult[1] = csource[2];
161 cresult[2] = csource[1];
162 cresult[3] = csource[0];
163 return result;
164}
165
166//=============================================================================================================
172inline void swap_floatp(float* source)
173{
174 auto* csource = reinterpret_cast<unsigned char*>(source);
175 unsigned char c;
176 c = csource[3];
177 csource[3] = csource[0];
178 csource[0] = c;
179 c = csource[2];
180 csource[2] = csource[1];
181 csource[1] = c;
182}
183
184//=============================================================================================================
190inline void swap_doublep(double* source)
191{
192 auto* csource = reinterpret_cast<unsigned char*>(source);
193 unsigned char c;
194 c = csource[7];
195 csource[7] = csource[0];
196 csource[0] = c;
197 c = csource[6];
198 csource[6] = csource[1];
199 csource[1] = c;
200 c = csource[5];
201 csource[5] = csource[2];
202 csource[2] = c;
203 c = csource[4];
204 csource[4] = csource[3];
205 csource[3] = c;
206}
207
208} // NAMESPACE FIFFLIB
209
210#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)