#pragma once #include #include namespace mbgl { class AsyncRequest; namespace style { class RasterArraySource final : public Source { public: RasterArraySource(std::string id, std::string fixtureID, std::string metadataURL, std::string fieldURL, std::string nextFixtureID = {}, std::string nextMetadataURL = {}, std::string nextFieldURL = {}); ~RasterArraySource() override; class Impl; const Impl& impl() const; void loadDescription(FileSource&) override; bool supportsLayerType(const LayerTypeInfo*) const override; mapbox::base::WeakPtr makeWeakPtr() override { return weakFactory.makeWeakPtr(); } protected: Mutable createMutable() const noexcept override; private: void tryLoad(); std::unique_ptr metadataRequest; std::unique_ptr fieldRequest; std::unique_ptr nextMetadataRequest; std::unique_ptr nextFieldRequest; std::optional metadata; std::optional> fieldBytes; std::optional nextMetadata; std::optional> nextFieldBytes; mapbox::base::WeakPtrFactory weakFactory{this}; }; template <> inline bool Source::is() const { return getType() == SourceType::RasterArray; } } // namespace style } // namespace mbgl