package octez-internal-libs

  1. Overview
  2. Docs
A package that contains some libraries used by the Octez suite

Install

Dune Dependency

Authors

Maintainers

Sources

tezos-octez-v20.1.tag.bz2
sha256=ddfb5076eeb0b32ac21c1eed44e8fc86a6743ef18ab23fff02d36e365bb73d61
sha512=d22a827df5146e0aa274df48bc2150b098177ff7e5eab52c6109e867eb0a1f0ec63e6bfbb0e3645a6c2112de3877c91a17df32ccbff301891ce4ba630c997a65

doc/src/octez-internal-libs.irmin/metrics.ml.html

Source file metrics.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(*
* Copyright (c) 2022 - Étienne Marais <etienne@maiste.fr>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*)

let uid =
  let id = ref (-1) in
  fun () ->
    incr id;
    !id

type origin = ..

type 'a t = {
  uid : int;
  name : string;
  origin : origin option;
  repr : 'a Repr.ty;
  mutable state : 'a;
}

let state m = m.state
let set_state m v = m.state <- v

type 'a update_mode = Mutate of ('a -> unit) | Replace of ('a -> 'a)

let v :
    type a. ?origin:origin -> name:string -> initial_state:a -> a Repr.ty -> a t
    =
 fun ?origin ~name ~initial_state repr ->
  { uid = uid (); origin; name; repr; state = initial_state }

let update : type a. a t -> a update_mode -> unit =
 fun m kind ->
  match kind with Mutate f -> f m.state | Replace f -> m.state <- f m.state
OCaml

Innovation. Community. Security.