/* * Copyright (C) 2018 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "helper.h" #include #include void addSlash(std::string &path) { if (!path.empty()) { auto lastChar = *path.rbegin(); if ((lastChar != '/') && (lastChar != '\\')) { path += '/'; } } } std::vector readBinaryFile(const std::string &fileName) { std::ifstream file(fileName, std::ios_base::binary); if (file.good()) { size_t length; file.seekg(0, file.end); length = static_cast(file.tellg()); file.seekg(0, file.beg); std::vector binary(length); file.read(binary.data(), length); return binary; } else { printf("Error! Couldn't open %s\n", fileName.c_str()); exit(1); } } void readFileToVectorOfStrings(std::vector &lines, const std::string &fileName, bool replaceTabs) { std::ifstream file(fileName); if (file.good()) { if (replaceTabs) { for (std::string line; std::getline(file, line);) { std::replace_if(line.begin(), line.end(), [](auto c) { return c == '\t'; }, ' '); lines.push_back(std::move(line)); } } else { for (std::string line; std::getline(file, line);) { lines.push_back(std::move(line)); } } } } size_t findPos(const std::vector &lines, const std::string &whatToFind) { for (size_t i = 0; i < lines.size(); ++i) { auto it = lines[i].find(whatToFind); if (it != std::string::npos) { if (it + whatToFind.size() == lines[i].size()) { return i; } char delimiter = lines[i][it + whatToFind.size()]; if ((delimiter == ' ') || (delimiter = '\t') || (delimiter = '\n') || (delimiter = '\r')) { return i; } } } return lines.size(); }