| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file LICENSE.rst or https://cmake.org/licensing for details. */ | |
| #pragma once | |
| #include "cmConfigure.h" // IWYU pragma: keep | |
| #include <map> | |
| #include <string> | |
| #include <vector> | |
| #include "cmJSONState.h" | |
| namespace Json { | |
| class Value; | |
| } | |
| class cmCTestResourceSpec | |
| { | |
| public: | |
| class Resource | |
| { | |
| public: | |
| std::string Id; | |
| unsigned int Capacity; | |
| bool operator==(Resource const& other) const; | |
| bool operator!=(Resource const& other) const; | |
| }; | |
| class Socket | |
| { | |
| public: | |
| std::map<std::string, std::vector<Resource>> Resources; | |
| bool operator==(Socket const& other) const; | |
| bool operator!=(Socket const& other) const; | |
| }; | |
| Socket LocalSocket; | |
| cmJSONState parseState; | |
| bool ReadFromJSONFile(std::string const& filename); | |
| bool operator==(cmCTestResourceSpec const& other) const; | |
| bool operator!=(cmCTestResourceSpec const& other) const; | |
| }; | |
| namespace cmCTestResourceSpecErrors { | |
| auto const FILE_NOT_FOUND = [](Json::Value const*, cmJSONState* state) { | |
| state->AddError("File not found"); | |
| }; | |
| auto const JSON_PARSE_ERROR = [](Json::Value const* value, | |
| cmJSONState* state) { | |
| state->AddErrorAtValue("JSON parse error", value); | |
| }; | |
| auto const INVALID_ROOT = [](Json::Value const* value, cmJSONState* state) { | |
| state->AddErrorAtValue("Invalid root object", value); | |
| }; | |
| auto const NO_VERSION = [](Json::Value const* value, cmJSONState* state) { | |
| state->AddErrorAtValue("No version specified", value); | |
| }; | |
| auto const INVALID_VERSION = [](Json::Value const* value, cmJSONState* state) { | |
| state->AddErrorAtValue("Invalid version object", value); | |
| }; | |
| auto const UNSUPPORTED_VERSION = [](Json::Value const* value, | |
| cmJSONState* state) { | |
| state->AddErrorAtValue("Unsupported version", value); | |
| }; | |
| auto const INVALID_SOCKET_SPEC = [](Json::Value const* value, | |
| cmJSONState* state) { | |
| state->AddErrorAtValue("Invalid socket object", value); | |
| }; | |
| auto const INVALID_RESOURCE_TYPE = [](Json::Value const* value, | |
| cmJSONState* state) { | |
| state->AddErrorAtValue("Invalid resource type object", value); | |
| }; | |
| auto const INVALID_RESOURCE = [](Json::Value const* value, | |
| cmJSONState* state) { | |
| state->AddErrorAtValue("Invalid resource object", value); | |
| }; | |
| } |