GeneralBrokenLines  V01-11-00
MilleBinary.cpp
Go to the documentation of this file.
00001 /*
00002  * MilleBinary.cpp
00003  *
00004  *  Created on: Aug 31, 2011
00005  *      Author: kleinwrt
00006  */
00007 
00008 #include "MilleBinary.h"
00009 
00011 
00015 MilleBinary::MilleBinary(std::string fileName, unsigned int aSize) :
00016                 binaryFile(fileName.c_str(), std::ios::binary | std::ios::out), intBuffer(), floatBuffer() {
00017         intBuffer.reserve(aSize);
00018         floatBuffer.reserve(aSize);
00019         intBuffer.push_back(0); // first word is error counter
00020         floatBuffer.push_back(0.);
00021         // TODO Auto-generated constructor stub
00022 }
00023 
00024 MilleBinary::~MilleBinary() {
00025         binaryFile.close();
00026         // TODO Auto-generated destructor stub
00027 }
00028 
00030 
00038 void MilleBinary::addData(float aMeas, float aErr,
00039                 const std::vector<unsigned int> &indLocal,
00040                 const std::vector<double> &derLocal, const std::vector<int> &labGlobal,
00041                 const std::vector<double> &derGlobal) {
00042 
00043         intBuffer.push_back(0);
00044         floatBuffer.push_back(aMeas);
00045         for (unsigned int i = 0; i < indLocal.size(); i++) {
00046                 intBuffer.push_back(indLocal[i]);
00047                 floatBuffer.push_back(derLocal[i]);
00048         }
00049         intBuffer.push_back(0);
00050         floatBuffer.push_back(aErr);
00051         for (unsigned int i = 0; i < labGlobal.size(); i++) {
00052                 intBuffer.push_back(labGlobal[i]);
00053                 floatBuffer.push_back(derGlobal[i]);
00054         }
00055 }
00056 
00058 void MilleBinary::writeRecord() {
00059 
00060         const int recordLength = intBuffer.size() * 2;
00061         binaryFile.write(reinterpret_cast<const char*>(&recordLength),
00062                         sizeof(recordLength));
00063         binaryFile.write(reinterpret_cast<char*>(&floatBuffer[0]),
00064                         floatBuffer.size() * sizeof(floatBuffer[0]));
00065         binaryFile.write(reinterpret_cast<char*>(&intBuffer[0]),
00066                         intBuffer.size() * sizeof(intBuffer[0]));
00067         // start with new record
00068         intBuffer.resize(1);
00069         floatBuffer.resize(1);
00070 }
00071 
 All Classes Files Functions Variables Typedefs