package lrgrep

  1. Overview
  2. Docs
Detailed error messages for Menhir-generated parsers

Install

dune-project
 Dependency

Authors

Maintainers

Sources

lrgrep-0.9.tbz
sha256=e53de12e4c5cbe6bca00643593266b4f9fa2e3f6a138195eeff7a4329f5c1c75
sha512=7fd7c4d11506fea7cc11c9bbf5aea9142d905643553c0c90e1bb16b794106b0c14a266acf89ae91b6929008dc0ba6515f788642873e2e4ba6c3d49bd45d25127

doc/src/utils/boolvector.ml.html

Source file boolvector.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
open Fix.Indexing

type 'n t = bytes

let make c default =
  let n = cardinal c in
  Bytes.make ((n + 7) lsr 3) (if default then '\xFF' else '\x00')

let test b n =
  let n = (n : _ index :> int) in
  let cell = n lsr 3 in
  let bit = n land 7 in
  Char.code (Bytes.unsafe_get b cell) land (1 lsl bit) <> 0

let set b n =
  let n = (n : _ index :> int) in
  let cell = n lsr 3 in
  let bit = n land 7 in
  Bytes.unsafe_set b cell
    (Char.unsafe_chr (Char.code (Bytes.unsafe_get b cell) lor (1 lsl bit)))

let clear b n =
  let n = (n : _ index :> int) in
  let cell = n lsr 3 in
  let bit = n land 7 in
  Bytes.unsafe_set b cell
    (Char.unsafe_chr (Char.code (Bytes.unsafe_get b cell) land lnot (1 lsl bit)))

let init c f =
  let result = make c false in
  Index.iter c (fun i -> if f i then set result i);
  result

let from_vector vec f =
  let n = Vector.length vec in
  let result = make n false in
  Vector.iteri (fun i x -> if f x then set result i) vec;
  result