/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include #include 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>& 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> Resources; };