#pragma once #include #include #include namespace mbgl { class RenderSource; namespace style { class SourceObserver; class Source::Impl : public EnableImmutableFromThis { public: virtual ~Impl() = default; virtual optional getAttribution() const = 0; virtual std::unique_ptr createRenderSource() const = 0; const SourceType type; const std::string id; protected: Impl(SourceType, std::string); Impl(const Impl&) = default; Impl& operator=(const Impl&) = delete; }; } // namespace style } // namespace mbgl