[osmium-tool] 21/44: Use new min_op/max_op helper functions from libosmium.

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Tue Jul 21 20:15:55 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to tag v1.1.0
in repository osmium-tool.

commit a9fefb6b5c884c07bf0cc496177126bd25d9e46a
Author: Jochen Topf <jochen at topf.org>
Date:   Fri Jun 26 15:01:43 2015 +0200

    Use new min_op/max_op helper functions from libosmium.
---
 src/command_fileinfo.cpp | 83 +++++++++++++++++++++---------------------------
 1 file changed, 36 insertions(+), 47 deletions(-)

diff --git a/src/command_fileinfo.cpp b/src/command_fileinfo.cpp
index d0127fa..c7ca029 100644
--- a/src/command_fileinfo.cpp
+++ b/src/command_fileinfo.cpp
@@ -45,6 +45,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <osmium/io/any_input.hpp>
 #include <osmium/handler.hpp>
 #include <osmium/osm/entity_bits.hpp>
+#include <osmium/util/minmax.hpp>
 #include <osmium/visitor.hpp>
 
 #include "command_fileinfo.hpp"
@@ -61,13 +62,13 @@ struct InfoHandler : public osmium::handler::Handler {
     uint64_t ways       = 0;
     uint64_t relations  = 0;
 
-    osmium::object_id_type largest_changeset_id = 0;
-    osmium::object_id_type largest_node_id      = 0;
-    osmium::object_id_type largest_way_id       = 0;
-    osmium::object_id_type largest_relation_id  = 0;
+    osmium::max_op<osmium::object_id_type> largest_changeset_id { 0 };
+    osmium::max_op<osmium::object_id_type> largest_node_id { 0 };
+    osmium::max_op<osmium::object_id_type> largest_way_id { 0 };
+    osmium::max_op<osmium::object_id_type> largest_relation_id { 0 };
 
-    osmium::Timestamp first_timestamp = osmium::end_of_time();
-    osmium::Timestamp last_timestamp  = osmium::start_of_time();
+    osmium::min_op<osmium::Timestamp> first_timestamp;
+    osmium::max_op<osmium::Timestamp> last_timestamp;
 
     boost::crc_32_type crc32;
 
@@ -81,19 +82,13 @@ struct InfoHandler : public osmium::handler::Handler {
         crc32.process_bytes(changeset.data(), changeset.byte_size());
         ++changesets;
 
-        if (changeset.id() > largest_changeset_id) {
-            largest_changeset_id = changeset.id();
-        }
+        largest_changeset_id.update(changeset.id());
     }
 
     void osm_object(const osmium::OSMObject& object) {
         crc32.process_bytes(object.data(), object.byte_size());
-        if (object.timestamp() < first_timestamp) {
-            first_timestamp = object.timestamp();
-        }
-        if (object.timestamp() > last_timestamp) {
-            last_timestamp = object.timestamp();
-        }
+        first_timestamp.update(object.timestamp());
+        last_timestamp.update(object.timestamp());
 
         if (last_type == object.type()) {
             if (last_id == object.id()) {
@@ -114,28 +109,22 @@ struct InfoHandler : public osmium::handler::Handler {
         bounds.extend(node.location());
         ++nodes;
 
-        if (node.id() > largest_node_id) {
-            largest_node_id = node.id();
-        }
+        largest_node_id.update(node.id());
     }
 
     void way(const osmium::Way& way) {
         ++ways;
 
-        if (way.id() > largest_way_id) {
-            largest_way_id = way.id();
-        }
+        largest_way_id.update(way.id());
     }
 
     void relation(const osmium::Relation& relation) {
         ++relations;
 
-        if (relation.id() > largest_relation_id) {
-            largest_relation_id = relation.id();
-        }
+        largest_relation_id.update(relation.id());
     }
 
-}; // InfoHandler
+}; // struct InfoHandler
 
 /*************************************************************************/
 
@@ -203,10 +192,10 @@ public:
         std::cout << "Data: " << "\n";
         std::cout << "  Bounding box: " << info_handler.bounds << "\n";
 
-        if (info_handler.first_timestamp != osmium::end_of_time()) {
+        if (info_handler.first_timestamp() != osmium::end_of_time()) {
             std::cout << "  Timestamps:\n";
-            std::cout << "    First: " << info_handler.first_timestamp << "\n";
-            std::cout << "    Last: " << info_handler.last_timestamp << "\n";
+            std::cout << "    First: " << info_handler.first_timestamp() << "\n";
+            std::cout << "    Last: " << info_handler.last_timestamp() << "\n";
         }
 
         std::cout << "  Objects ordered (by type and id): " << (info_handler.ordered ? "yes\n" : "no\n");
@@ -228,10 +217,10 @@ public:
         std::cout << "  Number of ways: "       << info_handler.ways       << "\n";
         std::cout << "  Number of relations: "  << info_handler.relations  << "\n";
 
-        std::cout << "  Largest changeset ID: " << info_handler.largest_changeset_id << "\n";
-        std::cout << "  Largest node ID: "      << info_handler.largest_node_id      << "\n";
-        std::cout << "  Largest way ID: "       << info_handler.largest_way_id       << "\n";
-        std::cout << "  Largest relation ID: "  << info_handler.largest_relation_id  << "\n";
+        std::cout << "  Largest changeset ID: " << info_handler.largest_changeset_id() << "\n";
+        std::cout << "  Largest node ID: "      << info_handler.largest_node_id()      << "\n";
+        std::cout << "  Largest way ID: "       << info_handler.largest_way_id()       << "\n";
+        std::cout << "  Largest relation ID: "  << info_handler.largest_relation_id()  << "\n";
     }
 
 }; // class HumanReadableOutput
@@ -314,15 +303,15 @@ public:
         m_writer.String("bbox");
         add_bbox(info_handler.bounds);
 
-        if (info_handler.first_timestamp != osmium::end_of_time()) {
+        if (info_handler.first_timestamp() != osmium::end_of_time()) {
             m_writer.String("timestamp");
             m_writer.StartObject();
 
             m_writer.String("first");
-            std::string s = info_handler.first_timestamp.to_iso();
+            std::string s = info_handler.first_timestamp().to_iso();
             m_writer.String(s.c_str());
             m_writer.String("last");
-            s = info_handler.last_timestamp.to_iso();
+            s = info_handler.last_timestamp().to_iso();
             m_writer.String(s.c_str());
 
             m_writer.EndObject();
@@ -356,13 +345,13 @@ public:
         m_writer.String("maxid");
         m_writer.StartObject();
         m_writer.String("changesets");
-        m_writer.Int64(info_handler.largest_changeset_id);
+        m_writer.Int64(info_handler.largest_changeset_id());
         m_writer.String("nodes");
-        m_writer.Int64(info_handler.largest_node_id);
+        m_writer.Int64(info_handler.largest_node_id());
         m_writer.String("ways");
-        m_writer.Int64(info_handler.largest_way_id);
+        m_writer.Int64(info_handler.largest_way_id());
         m_writer.String("relations");
-        m_writer.Int64(info_handler.largest_relation_id);
+        m_writer.Int64(info_handler.largest_relation_id());
         m_writer.EndObject();
 
         m_writer.EndObject();
@@ -428,18 +417,18 @@ public:
         }
 
         if (m_get_value == "data.timestamp.first") {
-            if (info_handler.first_timestamp == osmium::end_of_time()) {
+            if (info_handler.first_timestamp() == osmium::end_of_time()) {
                 std::cout << "\n";
             } else {
-                std::cout << info_handler.first_timestamp << "\n";
+                std::cout << info_handler.first_timestamp() << "\n";
             }
         }
 
         if (m_get_value == "data.timestamp.last") {
-            if (info_handler.first_timestamp == osmium::end_of_time()) {
+            if (info_handler.first_timestamp() == osmium::end_of_time()) {
                 std::cout << "\n";
             } else {
-                std::cout << info_handler.last_timestamp << "\n";
+                std::cout << info_handler.last_timestamp() << "\n";
             }
         }
 
@@ -473,16 +462,16 @@ public:
         }
 
         if (m_get_value == "data.maxid.changesets") {
-            std::cout << info_handler.largest_changeset_id << "\n";
+            std::cout << info_handler.largest_changeset_id() << "\n";
         }
         if (m_get_value == "data.maxid.nodes") {
-            std::cout << info_handler.largest_node_id << "\n";
+            std::cout << info_handler.largest_node_id() << "\n";
         }
         if (m_get_value == "data.maxid.ways") {
-            std::cout << info_handler.largest_way_id << "\n";
+            std::cout << info_handler.largest_way_id() << "\n";
         }
         if (m_get_value == "data.maxid.relations") {
-            std::cout << info_handler.largest_relation_id << "\n";
+            std::cout << info_handler.largest_relation_id() << "\n";
         }
     }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/osmium-tool.git



More information about the Pkg-grass-devel mailing list