summaryrefslogtreecommitdiff
path: root/platform/android/src/geojson
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/geojson')
-rw-r--r--platform/android/src/geojson/feature.cpp26
-rw-r--r--platform/android/src/geojson/feature.hpp6
-rw-r--r--platform/android/src/geojson/feature_collection.cpp14
-rw-r--r--platform/android/src/geojson/feature_collection.hpp7
-rw-r--r--platform/android/src/geojson/geometry.cpp38
-rw-r--r--platform/android/src/geojson/geometry.hpp6
-rw-r--r--platform/android/src/geojson/geometry_collection.cpp22
-rw-r--r--platform/android/src/geojson/geometry_collection.hpp8
-rw-r--r--platform/android/src/geojson/line_string.cpp23
-rw-r--r--platform/android/src/geojson/line_string.hpp12
-rw-r--r--platform/android/src/geojson/multi_line_string.cpp24
-rw-r--r--platform/android/src/geojson/multi_line_string.hpp12
-rw-r--r--platform/android/src/geojson/multi_point.cpp14
-rw-r--r--platform/android/src/geojson/multi_point.hpp10
-rw-r--r--platform/android/src/geojson/multi_polygon.cpp26
-rw-r--r--platform/android/src/geojson/multi_polygon.hpp10
-rw-r--r--platform/android/src/geojson/point.cpp8
-rw-r--r--platform/android/src/geojson/point.hpp7
-rw-r--r--platform/android/src/geojson/polygon.cpp16
-rw-r--r--platform/android/src/geojson/polygon.hpp12
-rw-r--r--platform/android/src/geojson/util.hpp16
21 files changed, 155 insertions, 162 deletions
diff --git a/platform/android/src/geojson/feature.cpp b/platform/android/src/geojson/feature.cpp
index 809ac42ef7..e79c238864 100644
--- a/platform/android/src/geojson/feature.cpp
+++ b/platform/android/src/geojson/feature.cpp
@@ -8,18 +8,18 @@ namespace geojson {
using namespace gson;
-mbgl::Feature Feature::convert(jni::JNIEnv& env, jni::Object<Feature> jFeature) {
- static auto javaClass = jni::Class<Feature>::Singleton(env);
+mbgl::Feature Feature::convert(jni::JNIEnv& env, const jni::Object<Feature>& jFeature) {
+ static auto& javaClass = jni::Class<Feature>::Singleton(env);
static auto id = javaClass.GetMethod<jni::String ()>(env, "id");
static auto geometry = javaClass.GetMethod<jni::Object<Geometry> ()>(env, "geometry");
static auto properties = javaClass.GetMethod<jni::Object<gson::JsonObject> ()>(env, "properties");
- auto jId = jni::SeizeLocal(env, jFeature.Call(env, id));
+ auto jId = jFeature.Call(env, id);
return mbgl::Feature {
- Geometry::convert(env, *jni::SeizeLocal(env, jFeature.Call(env, geometry))),
- JsonObject::convert(env, *jni::SeizeLocal(env, jFeature.Call(env, properties))),
- jId ? std::experimental::optional<mapbox::geometry::identifier>(jni::Make<std::string>(env, *jId))
+ Geometry::convert(env, jFeature.Call(env, geometry)),
+ JsonObject::convert(env, jFeature.Call(env, properties)),
+ jId ? std::experimental::optional<mapbox::geometry::identifier>(jni::Make<std::string>(env, jId))
: std::experimental::nullopt
};
}
@@ -43,21 +43,21 @@ public:
}
};
-jni::Object<Feature> convertFeature(jni::JNIEnv& env, const mbgl::Feature& value) {
- static auto javaClass = jni::Class<Feature>::Singleton(env);
+jni::Local<jni::Object<Feature>> convertFeature(jni::JNIEnv& env, const mbgl::Feature& value) {
+ static auto& javaClass = jni::Class<Feature>::Singleton(env);
static auto method = javaClass.GetStaticMethod<jni::Object<Feature> (jni::Object<Geometry>, jni::Object<JsonObject>, jni::String)>(env, "fromGeometry");
return javaClass.Call(env, method,
- *jni::SeizeLocal(env, Geometry::New(env, value.geometry)),
- *jni::SeizeLocal(env, JsonObject::New(env, value.properties)),
- *jni::SeizeLocal(env, jni::Make<jni::String>(env, value.id ? value.id.value().match(FeatureIdVisitor()) : "")));
+ Geometry::New(env, value.geometry),
+ JsonObject::New(env, value.properties),
+ jni::Make<jni::String>(env, value.id ? value.id.value().match(FeatureIdVisitor()) : ""));
}
-jni::Array<jni::Object<Feature>> Feature::convert(jni::JNIEnv& env, const std::vector<mbgl::Feature>& value) {
+jni::Local<jni::Array<jni::Object<Feature>>> Feature::convert(jni::JNIEnv& env, const std::vector<mbgl::Feature>& value) {
auto features = jni::Array<jni::Object<Feature>>::New(env, value.size());
for (size_t i = 0; i < value.size(); i = i + 1) {
- features.Set(env, i, *jni::SeizeLocal(env, convertFeature(env, value.at(i))));
+ features.Set(env, i, convertFeature(env, value.at(i)));
}
return features;
diff --git a/platform/android/src/geojson/feature.hpp b/platform/android/src/geojson/feature.hpp
index fba4815e0c..fdf5d977ba 100644
--- a/platform/android/src/geojson/feature.hpp
+++ b/platform/android/src/geojson/feature.hpp
@@ -8,12 +8,12 @@ namespace mbgl {
namespace android {
namespace geojson {
-class Feature : public jni::ObjectTag {
+class Feature {
public:
static constexpr auto Name() { return "com/mapbox/geojson/Feature"; };
- static mbgl::Feature convert(jni::JNIEnv&, jni::Object<Feature>);
- static jni::Array<jni::Object<Feature>> convert(jni::JNIEnv&, const std::vector<mbgl::Feature>&);
+ static mbgl::Feature convert(jni::JNIEnv&, const jni::Object<Feature>&);
+ static jni::Local<jni::Array<jni::Object<Feature>>> convert(jni::JNIEnv&, const std::vector<mbgl::Feature>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/feature_collection.cpp b/platform/android/src/geojson/feature_collection.cpp
index c2825e037b..f90d5226b7 100644
--- a/platform/android/src/geojson/feature_collection.cpp
+++ b/platform/android/src/geojson/feature_collection.cpp
@@ -6,24 +6,24 @@ namespace mbgl {
namespace android {
namespace geojson {
-mbgl::FeatureCollection FeatureCollection::convert(jni::JNIEnv& env, jni::Object<FeatureCollection> jCollection) {
+mbgl::FeatureCollection FeatureCollection::convert(jni::JNIEnv& env, const jni::Object<FeatureCollection>& jCollection) {
auto collection = mbgl::FeatureCollection();
if (jCollection) {
- auto jFeatureList = jni::SeizeLocal(env, FeatureCollection::features(env, jCollection));
- auto jFeatures = jni::SeizeLocal(env, java::util::List::toArray<Feature>(env, *jFeatureList));
- auto size = size_t(jFeatures->Length(env));
+ auto jFeatureList = FeatureCollection::features(env, jCollection);
+ auto jFeatures = java::util::List::toArray<Feature>(env, jFeatureList);
+ auto size = size_t(jFeatures.Length(env));
collection.reserve(size);
for (size_t i = 0; i < size; i++) {
- collection.push_back(Feature::convert(env, *jni::SeizeLocal(env, jFeatures->Get(env, i))));
+ collection.push_back(Feature::convert(env, jFeatures.Get(env, i)));
}
}
return collection;
}
-jni::Object<java::util::List> FeatureCollection::features(jni::JNIEnv& env, jni::Object<FeatureCollection> jCollection) {
- static auto javaClass = jni::Class<FeatureCollection>::Singleton(env);
+jni::Local<jni::Object<java::util::List>> FeatureCollection::features(jni::JNIEnv& env, const jni::Object<FeatureCollection>& jCollection) {
+ static auto& javaClass = jni::Class<FeatureCollection>::Singleton(env);
static auto method = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "features");
return jCollection.Call(env, method);
}
diff --git a/platform/android/src/geojson/feature_collection.hpp b/platform/android/src/geojson/feature_collection.hpp
index 1b45cca5de..66e92eacad 100644
--- a/platform/android/src/geojson/feature_collection.hpp
+++ b/platform/android/src/geojson/feature_collection.hpp
@@ -3,7 +3,6 @@
#include "../java/util.hpp"
#include <mbgl/util/geojson.hpp>
-#include <mbgl/util/noncopyable.hpp>
#include <jni/jni.hpp>
@@ -11,13 +10,13 @@ namespace mbgl {
namespace android {
namespace geojson {
-class FeatureCollection : private mbgl::util::noncopyable {
+class FeatureCollection {
public:
static constexpr auto Name() { return "com/mapbox/geojson/FeatureCollection"; };
- static mbgl::FeatureCollection convert(jni::JNIEnv&, jni::Object<FeatureCollection>);
+ static mbgl::FeatureCollection convert(jni::JNIEnv&, const jni::Object<FeatureCollection>&);
- static jni::Object<java::util::List> features(jni::JNIEnv&, jni::Object<FeatureCollection>);
+ static jni::Local<jni::Object<java::util::List>> features(jni::JNIEnv&, const jni::Object<FeatureCollection>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/geometry.cpp b/platform/android/src/geojson/geometry.cpp
index 4262b4ee69..2356af780a 100644
--- a/platform/android/src/geojson/geometry.cpp
+++ b/platform/android/src/geojson/geometry.cpp
@@ -22,65 +22,65 @@ public:
jni::JNIEnv& env;
- jni::Object<Geometry> operator()(const mbgl::Point<double> &geometry) const {
+ jni::Local<jni::Object<Geometry>> operator()(const mbgl::Point<double> &geometry) const {
return Point::New(env, geometry);
}
- jni::Object<Geometry> operator()(const mbgl::LineString<double> &geometry) const {
+ jni::Local<jni::Object<Geometry>> operator()(const mbgl::LineString<double> &geometry) const {
return LineString::New(env, geometry);
}
- jni::Object<Geometry> operator()(const mbgl::MultiLineString<double> &geometry) const {
+ jni::Local<jni::Object<Geometry>> operator()(const mbgl::MultiLineString<double> &geometry) const {
return MultiLineString::New(env, geometry);
}
- jni::Object<Geometry> operator()(const mbgl::MultiPoint<double> &geometry) const {
+ jni::Local<jni::Object<Geometry>> operator()(const mbgl::MultiPoint<double> &geometry) const {
return MultiPoint::New(env, geometry);
}
- jni::Object<Geometry> operator()(const mbgl::Polygon<double> &geometry) const {
+ jni::Local<jni::Object<Geometry>> operator()(const mbgl::Polygon<double> &geometry) const {
return Polygon::New(env, geometry);
}
- jni::Object<Geometry> operator()(const mbgl::MultiPolygon<double> &geometry) const {
+ jni::Local<jni::Object<Geometry>> operator()(const mbgl::MultiPolygon<double> &geometry) const {
return MultiPolygon::New(env, geometry);
}
- jni::Object<Geometry> operator()(const mapbox::geometry::geometry_collection<double> &geometry) const {
+ jni::Local<jni::Object<Geometry>> operator()(const mapbox::geometry::geometry_collection<double> &geometry) const {
return GeometryCollection::New(env, geometry);
}
};
-jni::Object<Geometry> Geometry::New(jni::JNIEnv& env, mbgl::Geometry<double> geometry) {
+jni::Local<jni::Object<Geometry>> Geometry::New(jni::JNIEnv& env, mbgl::Geometry<double> geometry) {
GeometryEvaluator evaluator { env } ;
return mbgl::Geometry<double>::visit(geometry, evaluator);
}
-mbgl::Geometry<double> Geometry::convert(jni::JNIEnv &env, jni::Object<Geometry> jGeometry) {
+mbgl::Geometry<double> Geometry::convert(jni::JNIEnv &env, const jni::Object<Geometry>& jGeometry) {
auto type = Geometry::getType(env, jGeometry);
if (type == Point::Type()) {
- return { Point::convert(env, jni::Object<Point>(jGeometry.Get())) };
+ return { Point::convert(env, jni::Cast(env, jni::Class<Point>::Singleton(env), jGeometry)) };
} else if (type == MultiPoint::Type()) {
- return { MultiPoint::convert(env, jni::Object<MultiPoint>(jGeometry.Get())) };
+ return { MultiPoint::convert(env, jni::Cast(env, jni::Class<MultiPoint>::Singleton(env), jGeometry)) };
} else if (type == LineString::Type()) {
- return { LineString::convert(env, jni::Object<LineString>(jGeometry.Get())) };
+ return { LineString::convert(env, jni::Cast(env, jni::Class<LineString>::Singleton(env), jGeometry)) };
} else if (type == MultiLineString::Type()) {
- return { MultiLineString::convert(env, jni::Object<MultiLineString>(jGeometry.Get())) };
+ return { MultiLineString::convert(env, jni::Cast(env, jni::Class<MultiLineString>::Singleton(env), jGeometry)) };
} else if (type == Polygon::Type()) {
- return { Polygon::convert(env, jni::Object<Polygon>(jGeometry.Get())) };
+ return { Polygon::convert(env, jni::Cast(env, jni::Class<Polygon>::Singleton(env), jGeometry)) };
} else if (type == MultiPolygon::Type()) {
- return { MultiPolygon::convert(env, jni::Object<MultiPolygon>(jGeometry.Get())) };
+ return { MultiPolygon::convert(env, jni::Cast(env, jni::Class<MultiPolygon>::Singleton(env), jGeometry)) };
} else if (type == GeometryCollection::Type()) {
- return { GeometryCollection::convert(env, jni::Object<GeometryCollection>(jGeometry.Get())) };
+ return { GeometryCollection::convert(env, jni::Cast(env, jni::Class<GeometryCollection>::Singleton(env), jGeometry)) };
}
throw std::runtime_error(std::string {"Unsupported GeoJSON type: " } + type);
}
-std::string Geometry::getType(jni::JNIEnv &env, jni::Object<Geometry> jGeometry) {
- static auto javaClass = jni::Class<Geometry>::Singleton(env);
+std::string Geometry::getType(jni::JNIEnv &env, const jni::Object<Geometry>& jGeometry) {
+ static auto& javaClass = jni::Class<Geometry>::Singleton(env);
static auto method = javaClass.GetMethod<jni::String ()>(env, "type");
- return jni::Make<std::string>(env, *jni::SeizeLocal(env, jGeometry.Call(env, method)));
+ return jni::Make<std::string>(env, jGeometry.Call(env, method));
}
void Geometry::registerNative(jni::JNIEnv &env) {
diff --git a/platform/android/src/geojson/geometry.hpp b/platform/android/src/geojson/geometry.hpp
index 836c3bd5a0..4bf55c858b 100644
--- a/platform/android/src/geojson/geometry.hpp
+++ b/platform/android/src/geojson/geometry.hpp
@@ -14,11 +14,11 @@ class Geometry {
public:
static constexpr auto Name() { return "com/mapbox/geojson/Geometry"; };
- static jni::Object<Geometry> New(jni::JNIEnv&, mbgl::Geometry<double>);
+ static jni::Local<jni::Object<Geometry>> New(jni::JNIEnv&, mbgl::Geometry<double>);
- static mbgl::Geometry<double> convert(jni::JNIEnv&, jni::Object<Geometry>);
+ static mbgl::Geometry<double> convert(jni::JNIEnv&, const jni::Object<Geometry>&);
- static std::string getType(jni::JNIEnv&, jni::Object<Geometry>);
+ static std::string getType(jni::JNIEnv&, const jni::Object<Geometry>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/geometry_collection.cpp b/platform/android/src/geojson/geometry_collection.cpp
index ad0af71214..cca909126d 100644
--- a/platform/android/src/geojson/geometry_collection.cpp
+++ b/platform/android/src/geojson/geometry_collection.cpp
@@ -5,36 +5,34 @@ namespace mbgl {
namespace android {
namespace geojson {
-jni::Object<GeometryCollection> GeometryCollection::New(jni::JNIEnv& env, const mapbox::geometry::geometry_collection<double>& collection) {
+jni::Local<jni::Object<GeometryCollection>> GeometryCollection::New(jni::JNIEnv& env, const mapbox::geometry::geometry_collection<double>& collection) {
// Create an array of geometries
- auto jarray = jni::SeizeLocal(env, jni::Array<jni::Object<Geometry>>::New(env, collection.size()));
+ auto jarray = jni::Array<jni::Object<Geometry>>::New(env, collection.size());
for (size_t i = 0; i < collection.size(); i++) {
- jarray->Set(env, i, *jni::SeizeLocal(env, Geometry::New(env, collection.at(i))));
+ jarray.Set(env, i, Geometry::New(env, collection.at(i)));
}
// create the GeometryCollection
- static auto javaClass = jni::Class<GeometryCollection>::Singleton(env);
+ static auto& javaClass = jni::Class<GeometryCollection>::Singleton(env);
static auto method = javaClass.GetStaticMethod<jni::Object<GeometryCollection> (jni::Object<java::util::List>)>(env, "fromGeometries");
- return javaClass.Call(env, method, *jni::SeizeLocal(env, java::util::Arrays::asList(env, *jarray)));
+ return javaClass.Call(env, method, java::util::Arrays::asList(env, jarray));
}
-mapbox::geometry::geometry_collection<double> GeometryCollection::convert(jni::JNIEnv &env, jni::Object<GeometryCollection> jCollection) {
+mapbox::geometry::geometry_collection<double> GeometryCollection::convert(jni::JNIEnv &env, const jni::Object<GeometryCollection>& jCollection) {
// Get geometries
- static auto javaClass = jni::Class<GeometryCollection>::Singleton(env);
+ static auto& javaClass = jni::Class<GeometryCollection>::Singleton(env);
static auto getGeometries = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "geometries");
// Turn into array
- auto jarray = jni::SeizeLocal(env,
- java::util::List::toArray<Geometry>(env,
- *jni::SeizeLocal(env, jCollection.Call(env, getGeometries))));
+ auto jarray = java::util::List::toArray<Geometry>(env, jCollection.Call(env, getGeometries));
// Convert each geometry
mapbox::geometry::geometry_collection<double> collection{};
- auto size = jarray->Length(env);
+ auto size = jarray.Length(env);
for (jni::jsize i = 0; i < size; i++) {
- collection.push_back(Geometry::convert(env, *jni::SeizeLocal(env, jarray->Get(env, i))));
+ collection.push_back(Geometry::convert(env, jarray.Get(env, i)));
}
return collection;
diff --git a/platform/android/src/geojson/geometry_collection.hpp b/platform/android/src/geojson/geometry_collection.hpp
index a301d86933..9f02ac848d 100644
--- a/platform/android/src/geojson/geometry_collection.hpp
+++ b/platform/android/src/geojson/geometry_collection.hpp
@@ -8,15 +8,15 @@ namespace mbgl {
namespace android {
namespace geojson {
-class GeometryCollection : public Geometry {
+class GeometryCollection {
public:
+ using SuperTag = Geometry;
static constexpr auto Name() { return "com/mapbox/geojson/GeometryCollection"; };
-
static constexpr auto Type() { return "GeometryCollection"; };
- static jni::Object<GeometryCollection> New(jni::JNIEnv&, const mapbox::geometry::geometry_collection<double>&);
+ static jni::Local<jni::Object<GeometryCollection>> New(jni::JNIEnv&, const mapbox::geometry::geometry_collection<double>&);
- static mapbox::geometry::geometry_collection<double> convert(jni::JNIEnv&, jni::Object<GeometryCollection>);
+ static mapbox::geometry::geometry_collection<double> convert(jni::JNIEnv&, const jni::Object<GeometryCollection>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/line_string.cpp b/platform/android/src/geojson/line_string.cpp
index 5a18a02bb7..ae1345c958 100644
--- a/platform/android/src/geojson/line_string.cpp
+++ b/platform/android/src/geojson/line_string.cpp
@@ -7,42 +7,41 @@ namespace mbgl {
namespace android {
namespace geojson {
-jni::Object<LineString> LineString::New(jni::JNIEnv& env, const mbgl::LineString<double>& lineString) {
- static auto javaClass = jni::Class<LineString>::Singleton(env);
+jni::Local<jni::Object<LineString>> LineString::New(jni::JNIEnv& env, const mbgl::LineString<double>& lineString) {
+ static auto& javaClass = jni::Class<LineString>::Singleton(env);
static auto method = javaClass.GetStaticMethod<jni::Object<LineString>(jni::Object<java::util::List>)>(env, "fromLngLats");
- return javaClass.Call(env, method,
- *jni::SeizeLocal(env, asPointsList(env, lineString)));
+ return javaClass.Call(env, method, asPointsList(env, lineString));
}
-mapbox::geojson::line_string LineString::convert(jni::JNIEnv &env, jni::Object<LineString> jLineString) {
+mapbox::geojson::line_string LineString::convert(jni::JNIEnv &env, const jni::Object<LineString>& jLineString) {
mapbox::geojson::line_string lineString;
if (jLineString) {
- lineString = LineString::convert(env, *jni::SeizeLocal(env, LineString::coordinates(env, jLineString)));
+ lineString = LineString::convert(env, LineString::coordinates(env, jLineString));
}
return lineString;
}
-mapbox::geojson::line_string LineString::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<Point>*/> jPointList) {
+mapbox::geojson::line_string LineString::convert(jni::JNIEnv &env, const jni::Object<java::util::List/*<Point>*/>& jPointList) {
mapbox::geojson::line_string lineString;
if (jPointList) {
- auto jPointArray = jni::SeizeLocal(env, java::util::List::toArray<Point>(env, jPointList));
- auto size = jPointArray->Length(env);
+ auto jPointArray = java::util::List::toArray<Point>(env, jPointList);
+ auto size = jPointArray.Length(env);
lineString.reserve(size);
for (std::size_t i = 0; i < size; i++) {
- lineString.push_back(Point::convert(env, *jni::SeizeLocal(env, jPointArray->Get(env, i))));
+ lineString.push_back(Point::convert(env, jPointArray.Get(env, i)));
}
}
return lineString;
}
-jni::Object<java::util::List> LineString::coordinates(jni::JNIEnv &env, jni::Object<LineString> jLineString) {
- static auto javaClass = jni::Class<LineString>::Singleton(env);
+jni::Local<jni::Object<java::util::List>> LineString::coordinates(jni::JNIEnv &env, const jni::Object<LineString>& jLineString) {
+ static auto& javaClass = jni::Class<LineString>::Singleton(env);
static auto method = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates");
return jLineString.Call(env, method);
}
diff --git a/platform/android/src/geojson/line_string.hpp b/platform/android/src/geojson/line_string.hpp
index 4df9349185..906d809fa8 100644
--- a/platform/android/src/geojson/line_string.hpp
+++ b/platform/android/src/geojson/line_string.hpp
@@ -14,19 +14,19 @@ namespace android {
namespace geojson {
-class LineString : public Geometry {
+class LineString {
public:
+ using SuperTag = Geometry;
static constexpr auto Name() { return "com/mapbox/geojson/LineString"; };
-
static constexpr auto Type() { return "LineString"; };
- static jni::Object<LineString> New(jni::JNIEnv&, const mbgl::LineString<double>&);
+ static jni::Local<jni::Object<LineString>> New(jni::JNIEnv&, const mbgl::LineString<double>&);
- static mapbox::geojson::line_string convert(jni::JNIEnv&, jni::Object<LineString>);
+ static mapbox::geojson::line_string convert(jni::JNIEnv&, const jni::Object<LineString>&);
- static mapbox::geojson::line_string convert(jni::JNIEnv&, jni::Object<java::util::List/*<Point>*/>);
+ static mapbox::geojson::line_string convert(jni::JNIEnv&, const jni::Object<java::util::List/*<Point>*/>&);
- static jni::Object<java::util::List> coordinates(jni::JNIEnv&, jni::Object<LineString>);
+ static jni::Local<jni::Object<java::util::List>> coordinates(jni::JNIEnv&, const jni::Object<LineString>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/multi_line_string.cpp b/platform/android/src/geojson/multi_line_string.cpp
index 0a0974062c..1aaf53c01f 100644
--- a/platform/android/src/geojson/multi_line_string.cpp
+++ b/platform/android/src/geojson/multi_line_string.cpp
@@ -7,44 +7,42 @@ namespace mbgl {
namespace android {
namespace geojson {
-jni::Object<MultiLineString> MultiLineString::New(jni::JNIEnv& env, const mbgl::MultiLineString<double>& multiLineString) {
- static auto javaClass = jni::Class<MultiLineString>::Singleton(env);
+jni::Local<jni::Object<MultiLineString>> MultiLineString::New(jni::JNIEnv& env, const mbgl::MultiLineString<double>& multiLineString) {
+ static auto& javaClass = jni::Class<MultiLineString>::Singleton(env);
static auto method = javaClass.GetStaticMethod<jni::Object<MultiLineString> (jni::Object<java::util::List>)>(env, "fromLngLats");
- return javaClass.Call(env, method,
- *jni::SeizeLocal(env, asPointsListsList(env, multiLineString)));
+ return javaClass.Call(env, method, asPointsListsList(env, multiLineString));
}
-mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, jni::Object<MultiLineString> jMultiLineString) {
+mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, const jni::Object<MultiLineString>& jMultiLineString) {
mapbox::geojson::multi_line_string multiLineString;
if (jMultiLineString) {
- multiLineString = MultiLineString::convert(env,
- *jni::SeizeLocal(env, MultiLineString::coordinates(env, jMultiLineString)));
+ multiLineString = MultiLineString::convert(env, MultiLineString::coordinates(env, jMultiLineString));
}
return multiLineString;
}
-mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<java::util::List<Point>>*/> jPointListsList) {
+mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, const jni::Object<java::util::List/*<java::util::List<Point>>*/>& jPointListsList) {
mapbox::geojson::multi_line_string multiLineString;
if (jPointListsList) {
- auto jPositionListsArray = jni::SeizeLocal(env, java::util::List::toArray<java::util::List>(env, jPointListsList));
+ auto jPositionListsArray = java::util::List::toArray<java::util::List>(env, jPointListsList);
- auto size = jPositionListsArray->Length(env);
+ auto size = jPositionListsArray.Length(env);
multiLineString.reserve(size);
for (std::size_t i = 0; i < size; i++) {
- multiLineString.push_back(LineString::convert(env, *jni::SeizeLocal(env, jPositionListsArray->Get(env, i))));
+ multiLineString.push_back(LineString::convert(env, jPositionListsArray.Get(env, i)));
}
}
return multiLineString;
}
-jni::Object<java::util::List> MultiLineString::coordinates(jni::JNIEnv &env, jni::Object<MultiLineString> jLineString) {
- static auto javaClass = jni::Class<MultiLineString>::Singleton(env);
+jni::Local<jni::Object<java::util::List>> MultiLineString::coordinates(jni::JNIEnv &env, const jni::Object<MultiLineString>& jLineString) {
+ static auto& javaClass = jni::Class<MultiLineString>::Singleton(env);
static auto method = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates");
return jLineString.Call(env, method);
}
diff --git a/platform/android/src/geojson/multi_line_string.hpp b/platform/android/src/geojson/multi_line_string.hpp
index c66aadaf03..65ce43bd1f 100644
--- a/platform/android/src/geojson/multi_line_string.hpp
+++ b/platform/android/src/geojson/multi_line_string.hpp
@@ -12,19 +12,19 @@ namespace mbgl {
namespace android {
namespace geojson {
-class MultiLineString : public Geometry {
+class MultiLineString {
public:
+ using SuperTag = Geometry;
static constexpr auto Name() { return "com/mapbox/geojson/MultiLineString"; };
-
static constexpr auto Type() { return "MultiLineString"; };
- static jni::Object<MultiLineString> New(jni::JNIEnv&, const mbgl::MultiLineString<double>&);
+ static jni::Local<jni::Object<MultiLineString>> New(jni::JNIEnv&, const mbgl::MultiLineString<double>&);
- static mapbox::geojson::multi_line_string convert(jni::JNIEnv&, jni::Object<MultiLineString>);
+ static mapbox::geojson::multi_line_string convert(jni::JNIEnv&, const jni::Object<MultiLineString>&);
- static mapbox::geojson::multi_line_string convert(jni::JNIEnv&, jni::Object<java::util::List/*<java::util::List<Point>>*/>);
+ static mapbox::geojson::multi_line_string convert(jni::JNIEnv&, const jni::Object<java::util::List/*<java::util::List<Point>>*/>&);
- static jni::Object<java::util::List> coordinates(jni::JNIEnv&, jni::Object<MultiLineString>);
+ static jni::Local<jni::Object<java::util::List>> coordinates(jni::JNIEnv&, const jni::Object<MultiLineString>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/multi_point.cpp b/platform/android/src/geojson/multi_point.cpp
index 5f51058f38..d530ef721f 100644
--- a/platform/android/src/geojson/multi_point.cpp
+++ b/platform/android/src/geojson/multi_point.cpp
@@ -8,26 +8,26 @@ namespace mbgl {
namespace android {
namespace geojson {
-jni::Object<MultiPoint> MultiPoint::New(JNIEnv& env, const mbgl::MultiPoint<double>& multiPoint) {
- static auto javaClass = jni::Class<MultiPoint>::Singleton(env);
+jni::Local<jni::Object<MultiPoint>> MultiPoint::New(JNIEnv& env, const mbgl::MultiPoint<double>& multiPoint) {
+ static auto& javaClass = jni::Class<MultiPoint>::Singleton(env);
static auto method = javaClass.GetStaticMethod<jni::Object<MultiPoint>(jni::Object<java::util::List>)>(env, "fromLngLats");
- return javaClass.Call(env, method, *jni::SeizeLocal(env, asPointsList(env, multiPoint)));
+ return javaClass.Call(env, method, asPointsList(env, multiPoint));
}
-mapbox::geojson::multi_point MultiPoint::convert(jni::JNIEnv &env, jni::Object<MultiPoint> jMultiPoint) {
+mapbox::geojson::multi_point MultiPoint::convert(jni::JNIEnv& env, const jni::Object<MultiPoint>& jMultiPoint) {
mapbox::geojson::multi_point multiPoint;
if (jMultiPoint) {
multiPoint = convertExplicit<mapbox::geojson::multi_point>(
- LineString::convert(env, *jni::SeizeLocal(env, MultiPoint::coordinates(env, jMultiPoint))));
+ LineString::convert(env, MultiPoint::coordinates(env, jMultiPoint)));
}
return multiPoint;
}
-jni::Object<java::util::List> MultiPoint::coordinates(jni::JNIEnv &env, jni::Object<MultiPoint> jMultiPoint) {
- static auto javaClass = jni::Class<MultiPoint>::Singleton(env);
+jni::Local<jni::Object<java::util::List>> MultiPoint::coordinates(jni::JNIEnv& env, const jni::Object<MultiPoint>& jMultiPoint) {
+ static auto& javaClass = jni::Class<MultiPoint>::Singleton(env);
static auto method = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates");
return jMultiPoint.Call(env, method);
}
diff --git a/platform/android/src/geojson/multi_point.hpp b/platform/android/src/geojson/multi_point.hpp
index 0df16bfd6a..a3ca49b731 100644
--- a/platform/android/src/geojson/multi_point.hpp
+++ b/platform/android/src/geojson/multi_point.hpp
@@ -13,17 +13,17 @@ namespace mbgl {
namespace android {
namespace geojson {
-class MultiPoint : public Geometry {
+class MultiPoint {
public:
+ using SuperTag = Geometry;
static constexpr auto Name() { return "com/mapbox/geojson/MultiPoint"; };
-
static constexpr auto Type() { return "MultiPoint"; };
- static jni::Object<MultiPoint> New(jni::JNIEnv&, const mbgl::MultiPoint<double>&);
+ static jni::Local<jni::Object<MultiPoint>> New(jni::JNIEnv&, const mbgl::MultiPoint<double>&);
- static mapbox::geojson::multi_point convert(jni::JNIEnv&, jni::Object<MultiPoint>);
+ static mapbox::geojson::multi_point convert(jni::JNIEnv&, const jni::Object<MultiPoint>&);
- static jni::Object<java::util::List> coordinates(jni::JNIEnv&, jni::Object<MultiPoint>);
+ static jni::Local<jni::Object<java::util::List>> coordinates(jni::JNIEnv&, const jni::Object<MultiPoint>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/multi_polygon.cpp b/platform/android/src/geojson/multi_polygon.cpp
index 109ac714c3..3c5c3ec338 100644
--- a/platform/android/src/geojson/multi_polygon.cpp
+++ b/platform/android/src/geojson/multi_polygon.cpp
@@ -7,41 +7,39 @@ namespace mbgl {
namespace android {
namespace geojson {
-jni::Object<MultiPolygon> MultiPolygon::New(JNIEnv& env, const mbgl::MultiPolygon<double>& multiPolygon) {
- static auto javaClass = jni::Class<MultiPolygon>::Singleton(env);
+jni::Local<jni::Object<MultiPolygon>> MultiPolygon::New(JNIEnv& env, const mbgl::MultiPolygon<double>& multiPolygon) {
+ static auto& javaClass = jni::Class<MultiPolygon>::Singleton(env);
static auto method = javaClass.GetStaticMethod<jni::Object<MultiPolygon> (jni::Object<java::util::List>)>(env, "fromLngLats");
- auto jarray = jni::SeizeLocal(env,
- jni::Array<jni::Object<java::util::List>>::New(env, multiPolygon.size()));
+ auto jarray = jni::Array<jni::Object<java::util::List>>::New(env, multiPolygon.size());
for (size_t i = 0; i < multiPolygon.size(); i++) {
- jarray->Set(env, i, *jni::SeizeLocal(env, asPointsListsList(env, multiPolygon.at(i))));
+ jarray.Set(env, i, asPointsListsList(env, multiPolygon.at(i)));
}
- return javaClass.Call(env, method,
- *jni::SeizeLocal(env, java::util::Arrays::asList(env, *jarray)));
+ return javaClass.Call(env, method, java::util::Arrays::asList(env, jarray));
}
-mapbox::geojson::multi_polygon MultiPolygon::convert(jni::JNIEnv &env, jni::Object<MultiPolygon> jMultiPolygon) {
+mapbox::geojson::multi_polygon MultiPolygon::convert(jni::JNIEnv& env, const jni::Object<MultiPolygon>& jMultiPolygon) {
mapbox::geojson::multi_polygon multiPolygon;
if (jMultiPolygon) {
- auto jPointListsListList = jni::SeizeLocal(env, MultiPolygon::coordinates(env, jMultiPolygon));
- auto jPointListsListArray = jni::SeizeLocal(env, java::util::List::toArray<java::util::List>(env, *jPointListsListList));
+ auto jPointListsListList = MultiPolygon::coordinates(env, jMultiPolygon);
+ auto jPointListsListArray = java::util::List::toArray<java::util::List>(env, jPointListsListList);
- auto size = jPointListsListArray->Length(env);
+ auto size = jPointListsListArray.Length(env);
multiPolygon.reserve(size);
for (size_t i = 0; i < size; i++) {
- multiPolygon.push_back(Polygon::convert(env, *jni::SeizeLocal(env, jPointListsListArray->Get(env, i))));
+ multiPolygon.push_back(Polygon::convert(env, jPointListsListArray.Get(env, i)));
}
}
return multiPolygon;
}
-jni::Object<java::util::List> MultiPolygon::coordinates(jni::JNIEnv &env, jni::Object<MultiPolygon> jPolygon) {
- static auto javaClass = jni::Class<MultiPolygon>::Singleton(env);
+jni::Local<jni::Object<java::util::List>> MultiPolygon::coordinates(jni::JNIEnv& env, const jni::Object<MultiPolygon>& jPolygon) {
+ static auto& javaClass = jni::Class<MultiPolygon>::Singleton(env);
static auto method = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates");
return jPolygon.Call(env, method);
}
diff --git a/platform/android/src/geojson/multi_polygon.hpp b/platform/android/src/geojson/multi_polygon.hpp
index 3477e989ea..fd7b08016d 100644
--- a/platform/android/src/geojson/multi_polygon.hpp
+++ b/platform/android/src/geojson/multi_polygon.hpp
@@ -12,17 +12,17 @@ namespace mbgl {
namespace android {
namespace geojson {
-class MultiPolygon : public Geometry {
+class MultiPolygon {
public:
+ using SuperTag = Geometry;
static constexpr auto Name() { return "com/mapbox/geojson/MultiPolygon"; };
-
static constexpr auto Type() { return "MultiPolygon"; };
- static jni::Object<MultiPolygon> New(jni::JNIEnv&, const mbgl::MultiPolygon<double>&);
+ static jni::Local<jni::Object<MultiPolygon>> New(jni::JNIEnv&, const mbgl::MultiPolygon<double>&);
- static mapbox::geojson::multi_polygon convert(jni::JNIEnv&, jni::Object<MultiPolygon>);
+ static mapbox::geojson::multi_polygon convert(jni::JNIEnv&, const jni::Object<MultiPolygon>&);
- static jni::Object<java::util::List> coordinates(jni::JNIEnv&, jni::Object<MultiPolygon>);
+ static jni::Local<jni::Object<java::util::List>> coordinates(jni::JNIEnv&, const jni::Object<MultiPolygon>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/point.cpp b/platform/android/src/geojson/point.cpp
index 7fcc183dc1..2000447c0f 100644
--- a/platform/android/src/geojson/point.cpp
+++ b/platform/android/src/geojson/point.cpp
@@ -4,14 +4,14 @@ namespace mbgl {
namespace android {
namespace geojson {
-jni::Object<Point> Point::New(jni::JNIEnv& env, const mbgl::Point<double>& point) {
- static auto javaClass = jni::Class<Point>::Singleton(env);
+jni::Local<jni::Object<Point>> Point::New(jni::JNIEnv& env, const mbgl::Point<double>& point) {
+ static auto& javaClass = jni::Class<Point>::Singleton(env);
static auto method = javaClass.GetStaticMethod<jni::Object<Point> (jni::jdouble, jni::jdouble)>(env, "fromLngLat");
return javaClass.Call(env, method, point.x, point.y);
}
-mbgl::Point<double> Point::convert(jni::JNIEnv &env, jni::Object<Point> jPoint) {
- static auto javaClass = jni::Class<Point>::Singleton(env);
+mbgl::Point<double> Point::convert(jni::JNIEnv &env, const jni::Object<Point>& jPoint) {
+ static auto& javaClass = jni::Class<Point>::Singleton(env);
static auto longitude = javaClass.GetMethod<jni::jdouble ()>(env, "longitude");
static auto latitude = javaClass.GetMethod<jni::jdouble ()>(env, "latitude");
diff --git a/platform/android/src/geojson/point.hpp b/platform/android/src/geojson/point.hpp
index d5cc7780f3..b5d71ecae1 100644
--- a/platform/android/src/geojson/point.hpp
+++ b/platform/android/src/geojson/point.hpp
@@ -10,13 +10,14 @@ namespace mbgl {
namespace android {
namespace geojson {
-class Point : public Geometry {
+class Point {
public:
+ using SuperTag = Geometry;
static constexpr auto Name() { return "com/mapbox/geojson/Point"; };
static constexpr auto Type() { return "Point"; };
- static jni::Object<Point> New(jni::JNIEnv&, const mbgl::Point<double>&);
- static mbgl::Point<double> convert(jni::JNIEnv&, jni::Object<Point>);
+ static jni::Local<jni::Object<Point>> New(jni::JNIEnv&, const mbgl::Point<double>&);
+ static mbgl::Point<double> convert(jni::JNIEnv&, const jni::Object<Point>&);
static void registerNative(jni::JNIEnv&);
};
diff --git a/platform/android/src/geojson/polygon.cpp b/platform/android/src/geojson/polygon.cpp
index add843e294..4437d134a8 100644
--- a/platform/android/src/geojson/polygon.cpp
+++ b/platform/android/src/geojson/polygon.cpp
@@ -8,24 +8,24 @@ namespace mbgl {
namespace android {
namespace geojson {
-jni::Object<Polygon> Polygon::New(jni::JNIEnv& env, const mbgl::Polygon<double>& polygon) {
- static auto javaClass = jni::Class<Polygon>::Singleton(env);
+jni::Local<jni::Object<Polygon>> Polygon::New(jni::JNIEnv& env, const mbgl::Polygon<double>& polygon) {
+ static auto& javaClass = jni::Class<Polygon>::Singleton(env);
static auto method = javaClass.GetStaticMethod<jni::Object<Polygon> (jni::Object<java::util::List>)>(env, "fromLngLats");
- return javaClass.Call(env, method, *jni::SeizeLocal(env, asPointsListsList(env, polygon)));
+ return javaClass.Call(env, method, asPointsListsList(env, polygon));
}
-mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, jni::Object<Polygon> jPolygon) {
+mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, const jni::Object<Polygon>& jPolygon) {
mapbox::geojson::polygon polygon;
if (jPolygon) {
- polygon = Polygon::convert(env, *jni::SeizeLocal(env, Polygon::coordinates(env, jPolygon)));
+ polygon = Polygon::convert(env, Polygon::coordinates(env, jPolygon));
}
return polygon;
}
-mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<java::util::List<Point>>*/> jPointListsList) {
+mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, const jni::Object<java::util::List/*<java::util::List<Point>>*/>& jPointListsList) {
mapbox::geojson::polygon polygon;
if (jPointListsList) {
@@ -40,8 +40,8 @@ mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, jni::Object<java::ut
}
-jni::Object<java::util::List> Polygon::coordinates(jni::JNIEnv &env, jni::Object<Polygon> jPolygon) {
- static auto javaClass = jni::Class<Polygon>::Singleton(env);
+jni::Local<jni::Object<java::util::List>> Polygon::coordinates(jni::JNIEnv &env, const jni::Object<Polygon>& jPolygon) {
+ static auto& javaClass = jni::Class<Polygon>::Singleton(env);
static auto method = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates");
return jPolygon.Call(env, method);
}
diff --git a/platform/android/src/geojson/polygon.hpp b/platform/android/src/geojson/polygon.hpp
index adfa60df4d..8e1761feda 100644
--- a/platform/android/src/geojson/polygon.hpp
+++ b/platform/android/src/geojson/polygon.hpp
@@ -13,19 +13,19 @@ namespace mbgl {
namespace android {
namespace geojson {
-class Polygon : public Geometry {
+class Polygon {
public:
+ using SuperTag = Geometry;
static constexpr auto Name() { return "com/mapbox/geojson/Polygon"; };
-
static constexpr auto Type() { return "Polygon"; };
- static jni::Object<Polygon> New(jni::JNIEnv&, const mbgl::Polygon<double>&);
+ static jni::Local<jni::Object<Polygon>> New(jni::JNIEnv&, const mbgl::Polygon<double>&);
- static mapbox::geojson::polygon convert(jni::JNIEnv &, jni::Object<Polygon>);
+ static mapbox::geojson::polygon convert(jni::JNIEnv &, const jni::Object<Polygon>&);
- static mapbox::geojson::polygon convert(jni::JNIEnv&, jni::Object<java::util::List/*<java::util::List<Point>>*/>);
+ static mapbox::geojson::polygon convert(jni::JNIEnv&, const jni::Object<java::util::List/*<java::util::List<Point>>*/>&);
- static jni::Object<java::util::List> coordinates(jni::JNIEnv&, jni::Object<Polygon>);
+ static jni::Local<jni::Object<java::util::List>> coordinates(jni::JNIEnv&, const jni::Object<Polygon>&);
static void registerNative(jni::JNIEnv &);
};
diff --git a/platform/android/src/geojson/util.hpp b/platform/android/src/geojson/util.hpp
index e889931c56..59154516fa 100644
--- a/platform/android/src/geojson/util.hpp
+++ b/platform/android/src/geojson/util.hpp
@@ -23,28 +23,28 @@ To convertExplicit(From&& src) {
* Geometry -> List<Point>
*/
template <class T>
-static jni::Object<java::util::List> asPointsList(jni::JNIEnv& env, const T& pointsList) {
- auto jarray = jni::SeizeLocal(env, jni::Array<jni::Object<Point>>::New(env, pointsList.size()));
+static jni::Local<jni::Object<java::util::List>> asPointsList(jni::JNIEnv& env, const T& pointsList) {
+ auto jarray = jni::Array<jni::Object<Point>>::New(env, pointsList.size());
for (jni::jsize i = 0; i < pointsList.size(); i++) {
- jarray->Set(env, i, *jni::SeizeLocal(env, Point::New(env, pointsList.at(i))));
+ jarray.Set(env, i, Point::New(env, pointsList.at(i)));
}
- return java::util::Arrays::asList(env, *jarray);
+ return java::util::Arrays::asList(env, jarray);
}
/**
* Geometry -> List<List<Point>>
*/
template <class SHAPE>
-static jni::Object<java::util::List> asPointsListsList(JNIEnv& env, SHAPE value) {
- auto jarray = jni::SeizeLocal(env, jni::Array<jni::Object<java::util::List>>::New(env, value.size()));
+static jni::Local<jni::Object<java::util::List>> asPointsListsList(JNIEnv& env, const SHAPE& value) {
+ auto jarray = jni::Array<jni::Object<java::util::List>>::New(env, value.size());
for (size_t i = 0; i < value.size(); i++) {
- jarray->Set(env, i, *jni::SeizeLocal(env, asPointsList(env, value[i])));
+ jarray.Set(env, i, asPointsList(env, value[i]));
}
- return java::util::Arrays::asList(env, *jarray);
+ return java::util::Arrays::asList(env, jarray);
}
} // namespace geojson