Module Incr_map_collate.Collate_params

module Rank : sig ... end
module Which_range : sig ... end
type ('k, 'filter, 'order) t = {
  1. filter : 'filter;
    (*

    User-defined type, usually algebraic data type, describing how the table can be filtered. You'll need to provide equal and to_predicate of type 'filter -> ('k -> 'v -> bool) for collate.

    *)
  2. order : 'order;
    (*

    User-defined type, usually algebraic data type, describing how the table can be sorted. You'll need to provide equal and to_compare of type functionally equivalent to 'order -> ('v -> 'v -> int) for collate.

    *)
  3. key_range : 'k Which_range.t;
    (*

    Select only rows between these keys (in the configured ordering)

    *)
  4. rank_range : Rank.t Which_range.t;
    (*

    After selecting rows according to key_range, select rows between these positions.

    For example, if your (sorted & filtered) data is (A, 1); (B, 2); (C, 3), then both for {key_range = All_rows; rank_range = (From (From_start 1))} and {key_range = From B; rank_range = All_rows} the result would be (B, 2); (C, 3)

    *)
  5. widen_range_by : int * int;
    (*

    An amount to grow the resulting dataset beyond the start and end. Intended for use in combination with key_range, widen_range_by makes it possible to include data _around_ a range. Negative values are clamped to 0.

    *)
}
include Ppx_compare_lib.Equal.S3 with type ('k, 'filter, 'order) t := ('k, 'filter, 'order) t
val equal : ('a -> 'a -> bool) -> ('b -> 'b -> bool) -> ('c -> 'c -> bool) -> ('a, 'b, 'c) t -> ('a, 'b, 'c) t -> bool
val sexp_of_t : ('k -> Sexplib0.Sexp.t) -> ('filter -> Sexplib0.Sexp.t) -> ('order -> Sexplib0.Sexp.t) -> ('k, 'filter, 'order) t -> Sexplib0.Sexp.t
val default : filter:'filter -> order:'order -> (_, 'filter, 'order) t @@ portable
module Stable : sig ... end
val of_stable_v1 : ('k, 'filter, 'order) Stable.V1.t -> ('k, 'filter, 'order) t @@ portable
val of_stable_v2 : ('k, 'filter, 'order) Stable.V2.t -> ('k, 'filter, 'order) t @@ portable