From 973aec43ea54bbf95b64fbcb636403401d1ca60e Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Fri, 28 Aug 2026 18:03:05 +0200 Subject: Import from e4b104792206ee7ea64bf39c6b7d2c0c230f9d14 --- server/src/gpx.cppm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 server/src/gpx.cppm (limited to 'server/src/gpx.cppm') diff --git a/server/src/gpx.cppm b/server/src/gpx.cppm new file mode 100644 index 0000000..20e6242 --- /dev/null +++ b/server/src/gpx.cppm @@ -0,0 +1,43 @@ +export module routemon:gpx; + +import std; +import :geo; +import :util; +import :xml; + +namespace routemon::gpx { + + struct metadata { + std::optional name; + std::optional desc; + }; + + struct track_segment { + geo::linestring waypoints; + }; + + struct track { + std::optional name; + std::optional desc; + std::vector segments; + }; + + struct file { + std::string creator; + metadata meta; + std::vector tracks; + }; + + class reader { + xml::executor e_; + xml::parser p_; + + public: + explicit reader(); + + auto init() -> void; + auto put(std::string_view buf) -> void; + [[nodiscard]] auto finish() -> gpx::file; + }; + +} // namespace routemon::gpx -- cgit v1.3