123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596(** OCaml library for reading and writing GPX (GPS Exchange Format) files *)(** {1 Core Modules} *)(** Geographic coordinate handling *)moduleCoordinate=Coordinate(** Links, persons, and copyright information *)moduleLink=Link(** Extension mechanism for custom GPX elements *)moduleExtension=Extension(** GPS waypoint data and fix types *)moduleWaypoint=Waypoint(** GPX metadata including bounds *)moduleMetadata=Metadata(** Route data and calculations *)moduleRoute=Route(** Track data with segments *)moduleTrack=Track(** Error handling *)moduleError=Error(** Main GPX document type *)moduleDoc=Doc(** {1 Main Document Type} *)(** Main GPX document type *)typet=Doc.t(** {1 Error Handling} *)(** Error types *)typeerror=Error.t(** GPX exception *)exceptionGpx_erroroferror(** {1 Parsing Functions} *)(** Parse GPX from XML input *)letparse?validateinput=Parser.parse?validateinput(** Parse GPX from string *)letparse_string?validates=Parser.parse_string?validates(** {1 Writing Functions} *)(** Write GPX to XML output *)letwrite?validateoutputgpx=Writer.write?validateoutputgpx(** Write GPX to string *)letwrite_string?validategpx=Writer.write_string?validategpx(** {1 Validation Functions} *)(** Validation issue with severity level *)typevalidation_issue=Validate.validation_issue={level:[`Error|`Warning];message:string;location:stringoption;}(** Result of validation containing all issues found *)typevalidation_result=Validate.validation_result={issues:validation_issuelist;is_valid:bool;}(** Validate complete GPX document *)letvalidate_gpx=Validate.validate_gpx(** Quick validation - returns true if document is valid *)letis_valid=Validate.is_valid(** Get only error messages *)leterrors=Validate.errors(** Get only warning messages *)letwarnings=Validate.warnings(** Format validation issue for display *)letformat_issue=Validate.format_issue(** {1 Constructors and Utilities} *)(** Create new GPX document *)letmake_gpx~creator=Doc.empty~creator(** Create empty GPX document *)letempty~creator=Doc.empty~creator