MNE-CPP  beta 1.0
ioutils.cpp
Go to the documentation of this file.
1 //=============================================================================================================
36 //*************************************************************************************************************
37 //=============================================================================================================
38 // INCLUDES
39 //=============================================================================================================
40 
41 #include "ioutils.h"
42 
43 
44 //*************************************************************************************************************
45 //=============================================================================================================
46 // INCLUDES
47 //=============================================================================================================
48 
49 #include <QDataStream>
50 
51 
52 //*************************************************************************************************************
53 //=============================================================================================================
54 // Eigen INCLUDES
55 //=============================================================================================================
56 
57 #include <Eigen/Core>
58 
59 
60 //*************************************************************************************************************
61 //=============================================================================================================
62 // USED NAMESPACES
63 //=============================================================================================================
64 
65 using namespace Eigen;
66 using namespace UTILSLIB;
67 
68 
69 //*************************************************************************************************************
70 //=============================================================================================================
71 // DEFINE MEMBER METHODS
72 //=============================================================================================================
73 
74 qint32 IOUtils::fread3(QDataStream &p_qStream)
75 {
76  char* bytes = new char[3];
77  p_qStream.readRawData(bytes, 3);
78  qint32 int3 = (((unsigned char) bytes[0]) << 16) + (((unsigned char) bytes[1]) << 8) + ((unsigned char) bytes[2]);
79  delete[] bytes;
80  return int3;
81 }
82 
83 
84 //*************************************************************************************************************
85 
86 VectorXi IOUtils::fread3_many(QDataStream &p_qStream, qint32 count)
87 {
88  VectorXi res(count);
89 
90  for(qint32 i = 0; i < count; ++i)
91  res[i] = IOUtils::fread3(p_qStream);
92 
93  return res;
94 }
95 
96 
97 //*************************************************************************************************************
98 //fiff_combat
99 qint16 IOUtils::swap_short(qint16 source)
100 {
101  unsigned char *csource = (unsigned char *)(&source);
102  qint16 result;
103  unsigned char *cresult = (unsigned char *)(&result);
104 
105  cresult[0] = csource[1];
106  cresult[1] = csource[0];
107  return (result);
108 }
109 
110 
111 //*************************************************************************************************************
112 
113 qint32 IOUtils::swap_int(qint32 source)
114 {
115  unsigned char *csource = (unsigned char *)(&source);
116  qint32 result;
117  unsigned char *cresult = (unsigned char *)(&result);
118 
119  cresult[0] = csource[3];
120  cresult[1] = csource[2];
121  cresult[2] = csource[1];
122  cresult[3] = csource[0];
123  return (result);
124 }
125 
126 
127 //*************************************************************************************************************
128 
129 void IOUtils::swap_intp(qint32 *source)
130 
131 {
132  unsigned char *csource = (unsigned char *)(source);
133 
134  unsigned char c;
135 
136  c = csource[3];
137  csource[3] = csource[0];
138  csource[0] = c;
139  c = csource[2];
140  csource[2] = csource[1];
141  csource[1] = c;
142 
143  return;
144 }
145 
146 
147 //*************************************************************************************************************
148 
149 qint64 IOUtils::swap_long(qint64 source)
150 {
151  unsigned char *csource = (unsigned char *)(&source);
152  qint64 result;
153  unsigned char *cresult = (unsigned char *)(&result);
154 
155  cresult[0] = csource[7];
156  cresult[1] = csource[6];
157  cresult[2] = csource[5];
158  cresult[3] = csource[4];
159  cresult[4] = csource[3];
160  cresult[5] = csource[2];
161  cresult[6] = csource[1];
162  cresult[7] = csource[0];
163  return (result);
164 }
165 
166 
167 //*************************************************************************************************************
168 
169 void IOUtils::swap_longp(qint64 *source)
170 {
171  unsigned char *csource = (unsigned char *)(source);
172  unsigned char c;
173 
174  c = csource[0];
175  csource[0] = csource[7];
176  csource[7] = c;
177 
178  c = csource[1];
179  csource[1] = csource[6];
180  csource[6] = c;
181 
182  c = csource[2];
183  csource[2] = csource[5];
184  csource[5] = c;
185 
186  c = csource[3];
187  csource[3] = csource[4];
188  csource[4] = c;
189 
190  return;
191 }
192 
193 
194 //*************************************************************************************************************
195 
196 void IOUtils::swap_floatp(float *source)
197 
198 {
199  unsigned char *csource = (unsigned char *)(source);
200  unsigned char c;
201 
202  c = csource[3];
203  csource[3] = csource[0];
204  csource[0] = c;
205  c = csource[2];
206  csource[2] = csource[1];
207  csource[1] = c;
208 
209  return;
210 }
211 
212 
213 //*************************************************************************************************************
214 
215 void IOUtils::swap_doublep(double *source)
216 
217 {
218  unsigned char *csource = (unsigned char *)(source);
219  unsigned char c;
220 
221  c = csource[7];
222  csource[7] = csource[0];
223  csource[0] = c;
224 
225  c = csource[6];
226  csource[6] = csource[1];
227  csource[1] = c;
228 
229  c = csource[5];
230  csource[5] = csource[2];
231  csource[2] = c;
232 
233  c = csource[4];
234  csource[4] = csource[3];
235  csource[3] = c;
236 
237  return;
238 }
IOUtils class declaration.