package checkseum
Adler-32, CRC32 and CRC32-C implementation in C and OCaml
Install
Dune Dependency
Authors
Maintainers
Sources
checkseum-v0.0.3.tbz
sha256=d5057adeda7eb8e1cd29d0b8e37ec8883185616bcba11e3ab73ed0b8f52f448a
md5=ae5c301cd3d514ed44e13796015bfc1c
doc/src/checkseum.ocaml/gin_adler32.ml.html
Source file gin_adler32.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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
type t = Optint.t let equal = Optint.equal let pp = Optint.pp let default = Optint.one let _base = 65521 let _nmax = 5552 let digest : type a. get:(a -> int -> char) -> a -> int -> int -> t -> t = fun ~get buf off len adler32 -> let a = ref Optint.(to_int Infix.(adler32 >> 16 && of_int 0xFFFF)) in let b = ref Optint.(to_int Infix.(adler32 && of_int 0xFFFF)) in let l = ref len in let o = ref off in if len = 0 then adler32 else if len = 1 then ( b := !b + (Char.code @@ get buf !o) ; if !b >= _base then b := !b - _base ; a := !a + !b ; if !a >= _base then a := !a - _base ; Optint.Infix.(Optint.of_int !b || Optint.of_int !a << 16) ) else if len < 16 then ( while !l <> 0 do b := !b + (Char.code @@ get buf !o) ; a := !a + !b ; incr o ; decr l done ; if !b >= _base then b := !b - _base ; a := !a mod _base ; Optint.Infix.(Optint.of_int !b || Optint.of_int !a << 16) ) else ( while !l >= _nmax do l := !l - _nmax ; for _ = _nmax / 16 downto 1 do b := !b + (Char.code @@ get buf !o) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 1)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 2)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 3)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 4)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 5)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 6)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 7)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 8)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 9)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 10)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 11)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 12)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 13)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 14)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 15)) ; a := !a + !b ; o := !o + 16 done ; b := !b mod _base ; a := !a mod _base done ; if !l > 0 then ( while !l >= 16 do l := !l - 16 ; b := !b + (Char.code @@ get buf !o) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 1)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 2)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 3)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 4)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 5)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 6)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 7)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 8)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 9)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 10)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 11)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 12)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 13)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 14)) ; a := !a + !b ; b := !b + (Char.code @@ get buf (!o + 15)) ; a := !a + !b ; o := !o + 16 done ; while !l > 0 do b := !b + (Char.code @@ get buf !o) ; a := !a + !b ; decr l ; incr o done ; b := !b mod _base ; a := !a mod _base ) ; Optint.Infix.(Optint.of_int !b || Optint.of_int !a << 16) ) let digest_bytes = let get = Bytes.get in digest ~get let digest_string = let get = String.get in digest ~get type bigstring = (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t let digest_bigstring = let get : bigstring -> int -> char = Bigarray.Array1.get in digest ~get
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>