diff options
Diffstat (limited to 'lib/kernel/BranchIndex.ml')
| -rw-r--r-- | lib/kernel/BranchIndex.ml | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/kernel/BranchIndex.ml b/lib/kernel/BranchIndex.ml new file mode 100644 index 0000000..d1efa9a --- /dev/null +++ b/lib/kernel/BranchIndex.ml @@ -0,0 +1,29 @@ +type address = Concepts.Hash.hash +type root = address +type branch_name = string +type branch_state_root = address + +let default_branch_name = "master" + +module Branch_name = struct + type t = branch_name + + let encode name = Concepts.Codec.Bencode.(String name |> to_blob) + let compare left right = Concepts.Ordering.of_int (String.compare left right) + + let decode blob = + Concepts.Codec.Bencode.of_blob blob |> Utilities.Result.fmap Concepts.Codec.Bencode.as_string +end + +module Make (Store : Abstract.Storage.STORAGE) = struct + module Tree = Merkle.Make (Store) (Branch_name) + + type tree = Tree.node + + let empty = Tree.empty + let hash_of = Tree.hash_of + let persist = Tree.persist + let find = Tree.find + let find_branch = Tree.lookup + let put_branch = Tree.insert +end |
