(library (mapping-tree) (export mapping-tree-open mapping-tree-lookup mapping-tree-each) (import (btree) (chezscheme) (binary-format) (srfi s8 receive)) (define-record-type mapping-tree (fields dev-tree)) (define (mapping-tree-open dev root) (make-mapping-tree (btree-open le64-type dev root))) (define (mapping-tree-lookup mtree dev-id vblock default) (let* ((unique (gensym)) (dev-tree (mapping-tree-dev-tree mtree)) (root2 (btree-lookup dev-tree dev-id unique))) (if (eq? unique root2) default (btree-lookup (btree-open le64-type (btree-dev dev-tree) root2) vblock default)))) ;; (values