#pragma once #include #include namespace mbgl { namespace gfx { class DrawScopeResource { protected: DrawScopeResource() = default; public: virtual ~DrawScopeResource() = default; }; class DrawScope { public: explicit DrawScope(std::unique_ptr resource_) : resource(std::move(resource_)) { } template T& getResource() const { assert(resource); return static_cast(*resource); } protected: std::unique_ptr resource; }; } // namespace gfx } // namespace mbgl