package hardcaml_waveterm
A terminal based digital waveform viewer for Hardcaml
Install
Dune Dependency
Authors
Maintainers
Sources
v0.17.0.tar.gz
sha256=a6780e4310f46cd71ff8a3cdf12bb51afdf0eaea5e84645a148a4ecd0f02920b
doc/src/hardcaml_waveterm.event_store/bits_store.ml.html
Source file bits_store.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
open Base module Data = struct type t = Hardcaml.Bits.t [@@deriving sexp_of] let none = Hardcaml.Bits.empty let merge _ x = x end module Time = struct type t = int [@@deriving compare, sexp_of] let zero = 0 end module Event_store = Event_store.Make (Time) (Data) type t = { t : Event_store.t ; width : int ; max_time : int ref } [@@deriving sexp_of] let create width max_time = { t = Event_store.create (); width; max_time } let length t = !(t.max_time) + 1 let get t = Event_store.get t.t let equal _ _ = false let width t = t.width let get_digestible_string t = let num_events = Event_store.length t.t in let data_words = (t.width + 63) / 64 in let total_length = ref (8 + 8 + (8 * num_events) + (8 * data_words * num_events)) in let bytes = Bytes.create !total_length in let pos = ref 0 in let set_int64 x = assert (!pos + 8 <= !total_length); Bytes.unsafe_set_int64 bytes !pos x; pos := !pos + 8 in let set_int x = set_int64 (Int64.of_int x) in let set_bits b = for i = 0 to data_words - 1 do set_int64 (Hardcaml.Bits.unsafe_get_int64 b i) done in set_int t.width; set_int !(t.max_time); for i = 0 to num_events - 1 do set_int (Event_store.get_time_at_index t.t i); set_bits (Event_store.get_data_at_index t.t i) done; assert (!pos = !total_length); bytes, !total_length ;; let event_store t = t.t
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>