123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566(************************************************************************)(* The λΠ-modulo Interactive Proof Assistant *)(************************************************************************)(************************************************************************)(* λΠ-modulo serialization Toplevel *)(* Copyright Inria -- Dual License LGPL 2.1 / GPL3+ *)(* Written by: F. Blanqui, E. J. Gallego Arias, F. Lefoulon *)(************************************************************************)(* Status: Experimental *)(************************************************************************)(** Module for points and intervals. Used to determine if a cursor is in the
range of a specific token, which is an interval of points (cursor
positions). The presence of t and compare make [RangeType] an [OrderedType]
(in the sense of [Map]). For now, the useful modules out of this library
are [Range] and [RangeMap]. *)moduletypeS=sigtypepointtypet(** [make_point ln col] creates a point with line [ln] and column [col]. *)valmake_point:int->int->point(** [make_interval s e] creates an interval with start [s] and end [e].
Requires the interval to be well defined (e.g with start < finish) or it
will assert *)valmake_interval:point->point->tvalline:point->intvalcolumn:point->intvalinterval_start:t->pointvalinterval_end:t->point(** Type for the position of a cursor relative to an interval. *)typecmp=|Before|In|After(** [in_range pt i] returns [Before], [In] or [After] depending on the
position of the point [pt] relative to the interval [i].*)valin_range:point->t->cmp(** Comparison over intervals.
An interval is considered "smaller" than another if its ending point is
before the starting point of the other.
Intervals need to be well defined (i.e returned by make_interval). Two
intervals are considered equal if one is included in the other. In any
other case, overlapping intervals can't be compared and will throw an
error. *)valcompare:t->t->intvalpoint_to_string:point->stringvalinterval_to_string:t->string(** [translate i ds df] returns the interval [i] with its starting point
translated by [ds] and finishing point translated by [df].
Will throw an error if the resulting interval is not well-defined (see
make_interval). Only translates column-wise, does not modify the line
coordinates of the extremity points. *)valtranslate:t->int->int->tend