Node* popOpenList() { if (openList.isEmpty()) { throw MetronomeException("Open list was empty, goal not reachable."); } Node* node = openList.pop(); node->open = false; return node; }
static Domain getDomain(const Configuration& configuration, const std::string& resourcesDir) { if (configuration.hasMember(RAW_DOMAIN)) { std::string rawDomain{configuration.getString(RAW_DOMAIN)}; std::stringstream stringStream{rawDomain}; return Domain{configuration, stringStream}; } else if (configuration.hasMember(DOMAIN_PATH)) { std::string domainPath{resourcesDir + configuration.getString(DOMAIN_PATH)}; // Check if file exists if (!fileExists(domainPath)) { throw MetronomeException{"Invalid domain file path: " + domainPath}; } std::fstream fileInputStream; fileInputStream.open(domainPath, std::fstream::in); Domain domain{configuration, fileInputStream}; fileInputStream.close(); return domain; } else { throw MetronomeException("Domain not found."); } }