aboutsummaryrefslogtreecommitdiffstats
path: root/lib/concepts/Hash.mli
diff options
context:
space:
mode:
Diffstat (limited to 'lib/concepts/Hash.mli')
-rw-r--r--lib/concepts/Hash.mli21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/concepts/Hash.mli b/lib/concepts/Hash.mli
index b100cd7..44fb3d0 100644
--- a/lib/concepts/Hash.mli
+++ b/lib/concepts/Hash.mli
@@ -1,11 +1,32 @@
(** an abstract value representing a hash *)
type hash
+(** the size of a hash, in bytes *)
+val size : int
+
(** given a value, compute it's hash *)
val hash_of_value : Value.value -> hash
+(** given a bag of bytes, compute it's hash *)
+val hash_of_bytes : bytes -> hash
+
+(** given a blob, compute it's hash *)
+val hash_of_blob : Representation.blob -> hash
+
+(** given a hash, return a representation of it as a string (/not/ the usual hex representation!) *)
+val to_raw_string : hash -> string
+
+(** given a string containing a representation of a hash (as per `to_raw_string`), return the corresponding hash *)
+val of_raw_string : string -> hash
+
+(** compare two hashes lexicographically *)
+val compare : hash -> hash -> Ordering.ordering
+
(** given two hashes, are they the same? *)
val hash_equals : hash -> hash -> bool
(** given a hash, return a `bytes` representation of it *)
val bytes_of_hash : hash -> bytes
+
+(** pick one every 1/2^n hashes *)
+val pick : int -> hash -> bool