module Makedisk (D : DISKDATA) : DISK = struct let block_size = D.block_size let block_nb = D.block_nb let blocks = D.blocks let read b buffer offset = assert ((Array.length buffer - offset) >= block_size); Array.blit blocks.(b) 0 buffer offset block_size let write b buffer offset = assert ((Array.length buffer - offset) >= block_size); Array.blit buffer offset blocks.(b) 0 block_size let dump filename = let chan = open_out filename in try_finalize begin fun () -> output_binary_int chan block_size; output_binary_int chan block_nb; Array.iter (Array.iter (output_binary_int chan)) blocks end () close_out chan end;; |