#include #include #include #include #include #include #include #include std::vector readDeviceFile(const std::string& filename) { std::vector deviceStrings; std::cerr <<"Here in readDeviceFile" << std::endl; std::ifstream file(filename); std::cerr <<"Here in readDeviceFile after opening ifstream" << std::endl; if (!file.is_open()) { throw std::runtime_error("Could not open device file: " + filename); } std::string line; while (std::getline(file, line)) { if (!line.empty()) { deviceStrings.push_back(line); } } return deviceStrings; } std::vector> parseDeviceSpecifiers( const std::vector& deviceStrings) { std::vector> deviceSpecifiers; for (const auto& deviceString : deviceStrings) { auto pos = deviceString.find(':'); if (pos != std::string::npos) { std::string deviceName = deviceString.substr(0, pos); std::string deviceSpec = deviceString.substr(pos + 1); deviceSpecifiers.emplace_back(deviceName, deviceSpec); } else { throw std::invalid_argument("Invalid device specifier: " + deviceString); } } return deviceSpecifiers; }