// // Created by koncord on 04.03.17. // #include "Utils.hpp" using namespace std; const vector Utils::split(const string &str, int delimiter) { string buffer; vector result; for (auto symb:str) if (symb != delimiter) buffer += symb; else if (!buffer.empty()) { result.push_back(move(buffer)); } if (!buffer.empty()) result.push_back(move(buffer)); return result; } ESM::Cell Utils::getCellFromDescription(const std::string &cellDescription) { ESM::Cell cell; cell.blank(); static std::regex exteriorCellPattern("^(-?\\d+), (-?\\d+)$"); std::smatch baseMatch; if (std::regex_match(cellDescription, baseMatch, exteriorCellPattern)) { cell.mData.mFlags &= ~ESM::Cell::Interior; // The first sub match is the whole string, so check for a length of 3 if (baseMatch.size() == 3) { cell.mData.mX = stoi(baseMatch[1].str()); cell.mData.mY = stoi(baseMatch[2].str()); } } else { cell.mData.mFlags |= ESM::Cell::Interior; cell.mName = cellDescription; } return cell; }