GPS Exchange Format library/CLI in OCaml
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 fs Filesystem capability
12 @param path File path to read
13 @param ?validate Optional validation flag (default: false)
14 @return GPX document or error *)
15val read_file : ?validate:bool -> fs:[> Eio.Fs.dir_ty ] Eio.Path.t -> string -> Gpx.t
16
17(** Write GPX to file path.
18 @param fs Filesystem capability
19 @param path File path to write
20 @param gpx GPX document to write
21 @param ?validate Optional validation flag (default: false)
22 @raises Gpx.Gpx_error on write failure *)
23val write_file : ?validate:bool -> fs:[> Eio.Fs.dir_ty ] Eio.Path.t -> string -> Gpx.t -> unit
24
25(** {1 Stream Operations}
26
27 Read/write GPX from/to Eio flows. *)
28
29(** Read GPX from Eio source.
30 @param source Input flow to read from
31 @param ?validate Optional validation flag (default: false)
32 @return GPX document *)
33val read_source : ?validate:bool -> [> Eio.Flow.source_ty ] Eio.Resource.t -> Gpx.t
34
35(** Write GPX to Eio sink.
36 @param sink Output flow to write to
37 @param gpx GPX document to write
38 @param ?validate Optional validation flag (default: false) *)
39val write_sink : ?validate:bool -> [> Eio.Flow.sink_ty ] Eio.Resource.t -> Gpx.t -> unit
40
41(** {1 Utility Functions} *)
42
43(** Check if file exists.
44 @param fs Filesystem capability
45 @param path File path to check
46 @return [true] if file exists and is readable *)
47val file_exists : fs:[> Eio.Fs.dir_ty ] Eio.Path.t -> string -> bool
48
49(** Get file size.
50 @param fs Filesystem capability
51 @param path File path
52 @return File size in bytes *)
53val file_size : fs:[> Eio.Fs.dir_ty ] Eio.Path.t -> string -> int
54
55(** Create backup of existing file.
56 @param fs Filesystem capability
57 @param path Original file path
58 @return Backup file path *)
59val create_backup : fs:[> Eio.Fs.dir_ty ] Eio.Path.t -> string -> string
60
61(** Write GPX to file with automatic backup.
62 Creates a backup of existing file before writing new content.
63 @param fs Filesystem capability
64 @param path File path to write
65 @param gpx GPX document to write
66 @param ?validate Optional validation flag (default: false)
67 @return Backup file path (empty string if no backup needed) *)
68val write_file_with_backup : ?validate:bool -> fs:[> Eio.Fs.dir_ty ] Eio.Path.t -> string -> Gpx.t -> string