#pragma once
#include "rust/cxx.h"
#include <cstdint>
#include <memory>
#include <string>
namespace mbgl::style {
class Source;
class GeoJSONSource;
enum class SourceType : ::std::uint8_t;
}
namespace mln::bridge::geojson {
class GeoJson;
}
namespace mln::bridge::style::sources {
class GeoJSONSourceHandle;
class SourceHandle {
public:
explicit SourceHandle(mbgl::style::Source *source_) : source(source_) {}
rust::String sourceId() const;
mbgl::style::SourceType sourceType() const;
std::unique_ptr<GeoJSONSourceHandle> asGeoJson() const;
private:
mbgl::style::Source *source;
};
class GeoJSONSourceHandle {
public:
explicit GeoJSONSourceHandle(mbgl::style::GeoJSONSource *source_)
: source(source_) {}
rust::String sourceId() const;
void setGeoJson(const mln::bridge::geojson::GeoJson &geojson);
private:
mbgl::style::GeoJSONSource *source;
};
std::unique_ptr<mbgl::style::Source>
geojson_into_source(std::unique_ptr<mbgl::style::GeoJSONSource> source);
}
namespace mln::bridge::style::sources::geojson {
std::unique_ptr<mbgl::style::GeoJSONSource> create(rust::Str id);
void setGeoJson(mbgl::style::GeoJSONSource &source,
const mln::bridge::geojson::GeoJson &geojson);
}