module Map = Common.Map
type ('k, 'v) map = ('k, 'v) Map.t
include Common.Misc
let max_depth = Runtime.Serialize.max_depth
let check_depth r = match max_depth with
| Some md when md < r.depth -> failwith (Format.sprintf "depth above %d" md)
| _ -> r
module Serialize = struct
include Runtime.Serialize
let apply f x = (f x).r
end
module Deserialize = struct
include Runtime.Deserialize
let check_length b =
if Bytes.length b.buffer <> b.offset then
failwith "buffer not empty"
let apply f buffer =
let b = {buffer; offset=0} in
let r = f b in
let () = check_length b in
r.r
end