ootAI/mem/decode.ml

41 lines
958 B
OCaml

open import "prelude.ml"
open import "./int.ml"
open import "../reader.ml"
type decoding_context = DecodingContext of {
read_u8 : int -> u8,
read_s8 : int -> s8,
read_u16 : int -> u16,
read_s16 : int -> s16,
read_u32 : int -> u32,
read_s32 : int -> s32
}
class decode 'a begin
val decode : int -> reader decoding_context 'a
end
instance decode u8 begin
let decode addr = Reader (fun (DecodingContext c) -> c.read_u8 addr)
end
instance decode s8 begin
let decode addr = Reader (fun (DecodingContext c) -> c.read_s8 addr)
end
instance decode u16 begin
let decode addr = Reader (fun (DecodingContext c) -> c.read_u16 addr)
end
instance decode s16 begin
let decode addr = Reader (fun (DecodingContext c) -> c.read_s16 addr)
end
instance decode u32 begin
let decode addr = Reader (fun (DecodingContext c) -> c.read_u32 addr)
end
instance decode s32 begin
let decode addr = Reader (fun (DecodingContext c) -> c.read_s32 addr)
end