| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #ifndef cmCTestResourceAllocator_h |
| #define cmCTestResourceAllocator_h |
| |
| #include <map> |
| #include <string> |
| |
| class cmCTestResourceSpec; |
| |
| class cmCTestResourceAllocator |
| { |
| public: |
| struct Resource |
| { |
| unsigned int Total; |
| unsigned int Locked; |
| |
| unsigned int Free() const { return this->Total - this->Locked; } |
| |
| bool operator==(const Resource& other) const; |
| bool operator!=(const Resource& other) const; |
| }; |
| |
| void InitializeFromResourceSpec(const cmCTestResourceSpec& spec); |
| |
| const std::map<std::string, std::map<std::string, Resource>>& GetResources() |
| const; |
| |
| bool AllocateResource(const std::string& name, const std::string& id, |
| unsigned int slots); |
| bool DeallocateResource(const std::string& name, const std::string& id, |
| unsigned int slots); |
| |
| private: |
| std::map<std::string, std::map<std::string, Resource>> Resources; |
| }; |
| |
| #endif |