#pragma once #include namespace wfr { namespace resource { class ComputingResource; class ComputingResourceReservation { // Invariant properties that can be accessed directly. public: resource::ComputingResource* const resource = nullptr; const wfr_size_t slotCount = 0; // Mutable properties that need to be accessed via getter-/setter-functions. protected: bool isValidFlag = false; // Public Functions public: ComputingResourceReservation() noexcept {} ComputingResourceReservation(resource::ComputingResource* resource, const wfr_size_t& slotCount = 1) noexcept : resource(resource), slotCount(slotCount), isValidFlag(true) {} virtual ~ComputingResourceReservation() noexcept {} bool isValid() const noexcept { return isValidFlag; } void invalidateReservation() noexcept { isValidFlag = false; } }; } /* namespace resource */ } /* namespace wfr */