Skip to content

Commit

Permalink
Move readStruct(...) into blackrock.h so it can be used by NSXTracesP…
Browse files Browse the repository at this point in the history
…rovider
  • Loading branch information
FlorianFranzen committed Dec 12, 2015
1 parent 284c422 commit f90132a
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 19 deletions.
11 changes: 11 additions & 0 deletions src/blackrock.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@
// include c/c++ headers
#include <stdint.h>

// incluse qt headers
#include <QFile>

/** Little helper function to read structs from QFiles in binary mode. */
template <typename T>
inline bool readStruct(QFile& file, T& s) {
qint64 bytesToRead = sizeof(T);
qint64 bytesRead = file.read(reinterpret_cast<char*>(&s), bytesToRead);
return (bytesToRead == bytesRead);
}

#pragma pack(push, 1)

// Shared data structures
Expand Down
7 changes: 0 additions & 7 deletions src/neveventsprovider.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,6 @@ class NEVEventsProvider : public EventsProvider {
private:
NEVBasicHeader mBasicHeader;
NEVExtensionHeader* mExtensionHeaders;

template <typename T>
inline bool readStruct(QFile& file, T& s) {
qint64 bytesToRead = sizeof(T);
qint64 bytesRead = file.read(reinterpret_cast<char*>(&s), bytesToRead);
return (bytesToRead == bytesRead);
}
};

#endif
15 changes: 3 additions & 12 deletions src/nsxtracesprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,7 @@ bool NSXTracesProvider::init() {
}

// Read basic header
qint64 bytesToRead = sizeof(NSXBasicHeader);
qint64 bytesRead = dataFile.read(reinterpret_cast<char*>(&(mBasicHeader)), bytesToRead);

if(bytesToRead != bytesRead) {
if(!readStruct<NSXBasicHeader>(dataFile, mBasicHeader)) {
dataFile.close();
return false;
}
Expand All @@ -58,22 +55,16 @@ bool NSXTracesProvider::init() {
// Read extension headers
mExtensionHeaders = new NSXExtensionHeader[this->nbChannels];

bytesToRead = sizeof(NSXExtensionHeader);
for(int channel = 0; channel < this->nbChannels; channel++) {
bytesRead = dataFile.read(reinterpret_cast<char*>(mExtensionHeaders + channel), bytesToRead);

if(bytesToRead != bytesRead) {
if(!readStruct<NSXExtensionHeader>(dataFile, mExtensionHeaders[channel])) {
delete[] mExtensionHeaders;
dataFile.close();
return false;
}
}

// Read data header
bytesToRead = sizeof(NSXDataHeader);
bytesRead = dataFile.read(reinterpret_cast<char *>(&mDataHeader), bytesToRead);

if(bytesToRead != bytesRead) {
if(!readStruct<NSXDataHeader>(dataFile, mDataHeader)) {
delete[] mExtensionHeaders;
dataFile.close();
return false;
Expand Down

0 comments on commit f90132a

Please sign in to comment.