.. index:: single: gpx_protocol .. _gpx_protocol/0: .. rst-class:: right **protocol** ``gpx_protocol`` ================ GPX 1.1 parser, generator, and validator protocol. | **Availability:** | ``logtalk_load(gpx(loader))`` | **Author:** Paulo Moura | **Version:** 1:0:0 | **Date:** 2026-08-02 | **Compilation flags:** | ``static`` | **Dependencies:** | (none) | **Remarks:** | (none) | **Inherited public predicates:** | (none) .. contents:: :local: :backlinks: top Public predicates ----------------- .. index:: parse/2 .. _gpx_protocol/0::parse/2: ``parse/2`` ^^^^^^^^^^^ Parses a GPX 1.1 document from the given source (``file(Path)``, ``stream(Stream)``, ``codes(List)``, ``chars(List)``, or ``atom(Atom)``) into a native GPX term. | **Compilation flags:** | ``static`` | **Template:** | ``parse(Source,GPX)`` | **Mode and number of proofs:** | ``parse(++compound,--compound)`` - ``one_or_error`` | **Exceptions:** | ``Source`` is not a ground term: | ``instantiation_error`` | ``Source`` is a ground term but not a valid source: | ``domain_error(gpx_source,Source)`` | The source does not contain a valid GPX 1.1 document: | ``domain_error(gpx,Source)`` ------------ .. index:: generate/2 .. _gpx_protocol/0::generate/2: ``generate/2`` ^^^^^^^^^^^^^^ Generates a GPX 1.1 document to the given sink (``file(Path)``, ``stream(Stream)``, ``codes(List)``, ``chars(List)``, or ``atom(Atom)``) from a native GPX term. | **Compilation flags:** | ``static`` | **Template:** | ``generate(Sink,GPX)`` | **Mode and number of proofs:** | ``generate(+compound,++compound)`` - ``one_or_error`` | **Exceptions:** | ``Sink`` is a variable: | ``instantiation_error`` | ``Sink`` is neither a variable nor a valid sink: | ``domain_error(gpx_sink,Sink)`` | ``GPX`` is not ground: | ``instantiation_error`` | ``GPX`` is ground but not a valid native GPX term: | ``domain_error(gpx,GPX)`` ------------ .. index:: validate/1 .. _gpx_protocol/0::validate/1: ``validate/1`` ^^^^^^^^^^^^^^ True iff the argument is a valid native GPX 1.1 term. | **Compilation flags:** | ``static`` | **Template:** | ``validate(GPX)`` | **Mode and number of proofs:** | ``validate(@term)`` - ``zero_or_one_or_error`` | **Exceptions:** | ``GPX`` is a variable: | ``instantiation_error`` ------------ .. index:: validate/2 .. _gpx_protocol/0::validate/2: ``validate/2`` ^^^^^^^^^^^^^^ Validates a native GPX 1.1 term, returning all detected errors as reason terms whose final argument is the failing path. List indexes in paths are zero-based. | **Compilation flags:** | ``static`` | **Template:** | ``validate(GPX,Errors)`` | **Mode and number of proofs:** | ``validate(@term,-list(compound))`` - ``one_or_error`` | **Exceptions:** | ``GPX`` is a variable: | ``instantiation_error`` | **Remarks:** - invalid_gpx_term(Path): The term is not a supported native GPX term. - invalid_creator(Path): The required creator is not an atom. - invalid_properties(Path): A properties argument is not a list. - invalid_list(Path): A repeated GPX value is not represented by a list. - invalid_value(Value, Path): A value does not satisfy the required GPX type or range. - invalid_date_time(Value, Path): A value is not an atom in the XML Schema 1.0 ``dateTime`` lexical space. - invalid_year(Value, Path): A value is not an atom in the XML Schema 1.0 ``gYear`` lexical space. - invalid_bounds(Path): The minimum latitude is greater than the maximum latitude. - invalid_extensions(Path): The extension nodes are not valid non-GPX namespaced XML elements. - duplicate_property(Name, Path): A property occurs more than once in the enclosing GPX term. - unknown_property(Property, Path): The property is not supported by the enclosing GPX term. ------------ .. index:: xml_to_gpx/2 .. _gpx_protocol/0::xml_to_gpx/2: ``xml_to_gpx/2`` ^^^^^^^^^^^^^^^^ Converts an XML parser document term into a native GPX 1.1 term. | **Compilation flags:** | ``static`` | **Template:** | ``xml_to_gpx(XML,GPX)`` | **Mode and number of proofs:** | ``xml_to_gpx(+compound,-compound)`` - ``one_or_error`` | **Exceptions:** | ``XML`` is not a ground term: | ``instantiation_error`` | ``XML`` is a ground term but not a valid GPX 1.1 XML document term: | ``domain_error(gpx,XML)`` ------------ .. index:: gpx_to_xml/2 .. _gpx_protocol/0::gpx_to_xml/2: ``gpx_to_xml/2`` ^^^^^^^^^^^^^^^^ Converts a native GPX 1.1 term into an XML parser document term. | **Compilation flags:** | ``static`` | **Template:** | ``gpx_to_xml(GPX,XML)`` | **Mode and number of proofs:** | ``gpx_to_xml(+compound,-compound)`` - ``one_or_error`` | **Exceptions:** | ``GPX`` is not a ground term: | ``instantiation_error`` | ``GPX`` is a ground term but not a valid native GPX term: | ``domain_error(gpx,GPX)`` ------------ Protected predicates -------------------- (none) Private predicates ------------------ (none) Operators --------- (none)