Newer
Older
/*
* PacketStructure.cpp
*
* Created on: Dec 7, 2022
* Author: valerio
*/
#include <PacketStructureTxt.h>
using namespace inaf::oasbo::Packets;
std::vector<std::tuple<uint, std::string, uint>> PacketStructureTxt::readStructureFromSource(
this->structure = convertToTupleVector(start, count);
file.close();
std::vector<std::string> PacketStructureTxt::toStringArray(
std::ifstream &file) {
std::vector<std::string> out;
std::string line;
while (std::getline(file, line)) {
out.push_back(line);
}
return out;
}
std::vector<std::tuple<uint, std::string, uint>> PacketStructureTxt::convertToTupleVector(
uint &start, uint &count) {
std::vector<std::tuple<uint, std::string, uint>> out;
for (;
start < stringArrayFile.size()
&& stringArrayFile.at(start).find("}") == std::string::npos;
start++) {
std::string line = stringArrayFile.at(start);
if (line.find("#") != std::string::npos) {
continue;
}
if (line.find("array") != std::string::npos) {
std::vector<std::tuple<uint, std::string, uint>> array;
uint newStart = start + 1;
for (uint i = 0; i < arraySize; i++) {
newStart = start + 1;
array = convertToTupleVector(newStart, count);
std::for_each(array.begin(), array.end(),
std::get<1>(line).append("_#").append(
std::to_string(i));
});
out.insert(out.end(), array.begin(), array.end());
}
start = newStart;
} else {
std::string fieldName = line.substr(0, line.find(" "));
fieldName.erase(
std::remove_if(fieldName.begin(), fieldName.end(),
::isspace), fieldName.end());
std::transform(fieldName.begin(), fieldName.end(),
fieldName.begin(), ::tolower);