diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-04-23 19:15:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-23 19:15:22 +0200 |
| commit | b0e5448982b4e12db9a664ac96089a14375cb55d (patch) | |
| tree | 7875e6eb0d25185d23f06b02c56b9e827d0a6825 /src/iso19111/common.cpp | |
| parent | f5f0efe5eb6b76cfe0498835da268c2492f3fe58 (diff) | |
| download | PROJ-b0e5448982b4e12db9a664ac96089a14375cb55d.tar.gz PROJ-b0e5448982b4e12db9a664ac96089a14375cb55d.zip | |
io.hpp: avoid dependency to proj_json_streaming_writer.hpp (fixes #2182) (#2183)
Diffstat (limited to 'src/iso19111/common.cpp')
| -rw-r--r-- | src/iso19111/common.cpp | 90 |
1 files changed, 46 insertions, 44 deletions
diff --git a/src/iso19111/common.cpp b/src/iso19111/common.cpp index e3c747b9..b5e393b3 100644 --- a/src/iso19111/common.cpp +++ b/src/iso19111/common.cpp @@ -41,6 +41,8 @@ #include "proj.h" #include "proj_internal.h" +#include "proj_json_streaming_writer.hpp" + #include <cmath> // M_PI #include <cstdlib> #include <memory> @@ -243,45 +245,45 @@ void UnitOfMeasure::_exportToWKT( void UnitOfMeasure::_exportToJSON( JSONFormatter *formatter) const // throw(FormattingException) { - auto &writer = formatter->writer(); + auto writer = formatter->writer(); const auto &l_codeSpace = codeSpace(); auto objContext( formatter->MakeObjectContext(nullptr, !l_codeSpace.empty())); - writer.AddObjKey("type"); + writer->AddObjKey("type"); const auto l_type = type(); if (l_type == Type::LINEAR) { - writer.Add("LinearUnit"); + writer->Add("LinearUnit"); } else if (l_type == Type::ANGULAR) { - writer.Add("AngularUnit"); + writer->Add("AngularUnit"); } else if (l_type == Type::SCALE) { - writer.Add("ScaleUnit"); + writer->Add("ScaleUnit"); } else if (l_type == Type::TIME) { - writer.Add("TimeUnit"); + writer->Add("TimeUnit"); } else if (l_type == Type::PARAMETRIC) { - writer.Add("ParametricUnit"); + writer->Add("ParametricUnit"); } else { - writer.Add("Unit"); + writer->Add("Unit"); } - writer.AddObjKey("name"); + writer->AddObjKey("name"); const auto &l_name = name(); - writer.Add(l_name); + writer->Add(l_name); const auto &factor = conversionToSI(); - writer.AddObjKey("conversion_factor"); - writer.Add(factor, 15); + writer->AddObjKey("conversion_factor"); + writer->Add(factor, 15); if (!l_codeSpace.empty() && formatter->outputId()) { - writer.AddObjKey("id"); + writer->AddObjKey("id"); auto idContext(formatter->MakeObjectContext(nullptr, false)); - writer.AddObjKey("authority"); - writer.Add(l_codeSpace); - writer.AddObjKey("code"); + writer->AddObjKey("authority"); + writer->Add(l_codeSpace); + writer->AddObjKey("code"); const auto &l_code = code(); try { - writer.Add(std::stoi(l_code)); + writer->Add(std::stoi(l_code)); } catch (const std::exception &) { - writer.Add(l_code); + writer->Add(l_code); } } } @@ -876,13 +878,13 @@ void IdentifiedObject::formatRemarks(WKTFormatter *formatter) const { void IdentifiedObject::formatID(JSONFormatter *formatter) const { const auto &ids(identifiers()); - auto &writer = formatter->writer(); + auto writer = formatter->writer(); if (ids.size() == 1) { - writer.AddObjKey("id"); + writer->AddObjKey("id"); ids.front()->_exportToJSON(formatter); } else if (!ids.empty()) { - writer.AddObjKey("ids"); - auto arrayContext(writer.MakeArrayContext()); + writer->AddObjKey("ids"); + auto arrayContext(writer->MakeArrayContext()); for (const auto &id : ids) { id->_exportToJSON(formatter); } @@ -893,9 +895,9 @@ void IdentifiedObject::formatID(JSONFormatter *formatter) const { void IdentifiedObject::formatRemarks(JSONFormatter *formatter) const { if (!remarks().empty()) { - auto &writer = formatter->writer(); - writer.AddObjKey("remarks"); - writer.Add(remarks()); + auto writer = formatter->writer(); + writer->AddObjKey("remarks"); + writer->Add(remarks()); } } @@ -1060,30 +1062,30 @@ void ObjectDomain::_exportToWKT(WKTFormatter *formatter) const { //! @cond Doxygen_Suppress void ObjectDomain::_exportToJSON(JSONFormatter *formatter) const { - auto &writer = formatter->writer(); + auto writer = formatter->writer(); if (d->scope_.has_value()) { - writer.AddObjKey("scope"); - writer.Add(*(d->scope_)); + writer->AddObjKey("scope"); + writer->Add(*(d->scope_)); } if (d->domainOfValidity_) { if (d->domainOfValidity_->description().has_value()) { - writer.AddObjKey("area"); - writer.Add(*(d->domainOfValidity_->description())); + writer->AddObjKey("area"); + writer->Add(*(d->domainOfValidity_->description())); } if (d->domainOfValidity_->geographicElements().size() == 1) { const auto bbox = dynamic_cast<const GeographicBoundingBox *>( d->domainOfValidity_->geographicElements()[0].get()); if (bbox) { - writer.AddObjKey("bbox"); - auto bboxContext(writer.MakeObjectContext()); - writer.AddObjKey("south_latitude"); - writer.Add(bbox->southBoundLatitude(), 15); - writer.AddObjKey("west_longitude"); - writer.Add(bbox->westBoundLongitude(), 15); - writer.AddObjKey("north_latitude"); - writer.Add(bbox->northBoundLatitude(), 15); - writer.AddObjKey("east_longitude"); - writer.Add(bbox->eastBoundLongitude(), 15); + writer->AddObjKey("bbox"); + auto bboxContext(writer->MakeObjectContext()); + writer->AddObjKey("south_latitude"); + writer->Add(bbox->southBoundLatitude(), 15); + writer->AddObjKey("west_longitude"); + writer->Add(bbox->westBoundLongitude(), 15); + writer->AddObjKey("north_latitude"); + writer->Add(bbox->northBoundLatitude(), 15); + writer->AddObjKey("east_longitude"); + writer->Add(bbox->eastBoundLongitude(), 15); } } if (d->domainOfValidity_->verticalElements().size() == 1) { @@ -1232,16 +1234,16 @@ void ObjectUsage::baseExportToWKT(WKTFormatter *formatter) const { void ObjectUsage::baseExportToJSON(JSONFormatter *formatter) const { - auto &writer = formatter->writer(); + auto writer = formatter->writer(); if (formatter->outputUsage()) { const auto &l_domains = domains(); if (l_domains.size() == 1) { l_domains[0]->_exportToJSON(formatter); } else if (!l_domains.empty()) { - writer.AddObjKey("usages"); - auto arrayContext(writer.MakeArrayContext(false)); + writer->AddObjKey("usages"); + auto arrayContext(writer->MakeArrayContext(false)); for (const auto &domain : l_domains) { - auto objContext(writer.MakeObjectContext()); + auto objContext(writer->MakeObjectContext()); domain->_exportToJSON(formatter); } } |
