diff options
Diffstat (limited to 'Source/CTest/cmCTestResourceAllocator.h')
-rw-r--r-- | Source/CTest/cmCTestResourceAllocator.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestResourceAllocator.h b/Source/CTest/cmCTestResourceAllocator.h new file mode 100644 index 0000000..9f0b9c9 --- /dev/null +++ b/Source/CTest/cmCTestResourceAllocator.h @@ -0,0 +1,39 @@ +/* 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 |