blob: a67fde6d21df8fad5ad2375072e04bd8ff8e9466 [file] [log] [blame]
#pragma once
#include <array>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
namespace slp
{
struct ConfigData
{
std::string name;
std::string type;
std::string port;
friend std::istream& operator>>(std::istream& str, ConfigData& data)
{
std::string line;
constexpr auto DELIMITER = " ";
size_t delimtrPos = 0;
size_t delimtrPrevPos = 0;
std::array<std::string, 3> tokens;
std::getline(str, line);
size_t count = 0;
delimtrPos = line.find(DELIMITER, delimtrPrevPos);
while (delimtrPos != std::string::npos)
{
tokens[count] = line.substr(delimtrPrevPos,
(delimtrPos - delimtrPrevPos));
delimtrPrevPos = delimtrPos + 1;
delimtrPos = line.find(DELIMITER, delimtrPrevPos);
if (delimtrPos == std::string::npos &&
delimtrPrevPos < line.length())
{
delimtrPos = line.length();
}
count++;
}
if (count > 2)
{
data.name = tokens[0];
data.type = tokens[1];
data.port = tokens[2];
}
else
{
str.setstate(std::ios::failbit);
}
return str;
}
};
} // namespace slp