/src/visualiser/msg.ml

http://github.com/hhughes/ocaml-frui · OCaml · 43 lines · 35 code · 8 blank · 0 comment · 2 complexity · ccf02477b3594876e96bd8229052ad43 MD5 · raw file

  1. open Javascript
  2. open Fvar
  3. class msg =
  4. object
  5. val mutable froc_loc = Froc.return ()
  6. method froc_loc = froc_loc
  7. method set_froc_loc f = froc_loc <- f
  8. end
  9. class fn =
  10. object
  11. inherit msg
  12. val mutable start = new fvar (-1.)
  13. val mutable finish = new fvar (-1.)
  14. val mutable name = ""
  15. method set_name n = name <- n
  16. method name = name
  17. method start = start
  18. method finish = finish
  19. end
  20. type event = E_msg of msg | E_fn of fn | Dummy
  21. module Msg =
  22. struct
  23. external threadId : msg -> int = ".tid"
  24. external ty : msg -> string = ".ty"
  25. external timestamp : msg -> float = ".ts"
  26. external name : msg -> string = ".name"
  27. external desc : msg -> string = ".desc"
  28. external misc : msg -> 'a = ".misc"
  29. end
  30. external new_Object : string -> msg js_array = "@eval"
  31. let unmarshall_json json = new_Object json
  32. let rec js_to_list msgs =
  33. if msgs#_get_length > 0 then
  34. msgs#pop :: (js_to_list msgs)
  35. else []