![]() |
GeneralBrokenLines
V01-11-00
|
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
1.7.6.1