1(** GPX Eio I/O operations
2
3 This module provides GPX I/O operations using Eio's effects-based
4 concurrent I/O system. All operations are structured concurrency
5 compatible and work with Eio's resource management.
6*)
7
8(** {1 File Operations} *)
9
10(** Read GPX from file path.
11 @param path File path to read
12 @param ?validate Optional validation flag (default: false)
13 @return GPX document or error *)
14val read_file : ?validate:bool -> _ Eio.Path.t -> Gpx.t
15
16(** Write GPX to file path.
17 @param path File path to write
18 @param gpx GPX document to write
19 @param ?validate Optional validation flag (default: false)
20 @raises Gpx.Gpx_error on write failure *)
21val write_file : ?validate:bool -> _ Eio.Path.t -> Gpx.t -> unit
22
23(** {1 Stream Operations}
24
25 Read/write GPX from/to Eio flows. *)
26
27(** Read GPX from Eio source.
28 @param source Input flow to read from
29 @param ?validate Optional validation flag (default: false)
30 @return GPX document *)
31val read_source : ?validate:bool -> [> Eio.Flow.source_ty ] Eio.Resource.t -> Gpx.t
32
33(** Write GPX to Eio sink.
34 @param sink Output flow to write to
35 @param gpx GPX document to write
36 @param ?validate Optional validation flag (default: false) *)
37val write_sink : ?validate:bool -> [> Eio.Flow.sink_ty ] Eio.Resource.t -> Gpx.t -> unit
38
39(** {1 Utility Functions} *)
40
41(** Check if file exists.
42 @param path File path to check
43 @return [true] if file exists and is readable *)
44val file_exists : _ Eio.Path.t -> bool
45
46(** Get file size.
47 @param path File path
48 @return File size in bytes *)
49val file_size : _ Eio.Path.t -> int
50
51(** Create backup of existing file.
52 @param path Original file path
53 @return Backup file path *)
54val create_backup : 'a Eio.Path.t -> 'a Eio.Path.t option
55
56(** Write GPX to file with automatic backup.
57 Creates a backup of existing file before writing new content.
58 @param path File path to write
59 @param gpx GPX document to write
60 @param ?validate Optional validation flag (default: false)
61 @return Backup file path ([None] if no backup needed) *)
62val write_file_with_backup : ?validate:bool -> 'a Eio.Path.t -> Gpx.t -> 'a Eio.Path.t option