// Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors. // All rights reserved. // Code licensed under the BSD License. // http://www.anki3d.org/LICENSE #pragma once #include namespace anki { /// @addtogroup vulkan /// @{ /// Halper class that extends the XXXImpl objects. template class VulkanObject { public: VkDevice getDevice() const; GrManagerImpl& getGrManagerImpl(); const GrManagerImpl& getGrManagerImpl() const; }; // Do this trick to avoid including heavy headers #define ANKI_INSTANTIATE_GR_OBJECT(type_) \ template<> \ VkDevice VulkanObject::getDevice() const; \ template<> \ GrManagerImpl& VulkanObject::getGrManagerImpl(); \ template<> \ const GrManagerImpl& VulkanObject::getGrManagerImpl() const; #define ANKI_INSTANTIATE_GR_OBJECT_DELIMITER() #include #undef ANKI_INSTANTIATE_GR_OBJECT_DELIMITER #undef ANKI_INSTANTIATE_GR_OBJECT /// @} } // end namespace anki