From 2566cfae03199f8e90098c84b712d48182d9b806 Mon Sep 17 00:00:00 2001 From: Estevan Castilho Date: Thu, 9 Jul 2026 00:33:37 +0000 Subject: Interface for the storage layer --- lib/concepts/Configuration.ml | 1 + lib/concepts/Configuration.mli | 2 ++ lib/concepts/Hash.ml | 5 +++++ lib/concepts/Hash.mli | 8 ++++++++ lib/concepts/Representation.ml | 5 +++++ lib/concepts/Representation.mli | 7 +++++++ lib/concepts/Value.ml | 3 +++ lib/concepts/Value.mli | 4 ++++ 8 files changed, 35 insertions(+) create mode 100644 lib/concepts/Configuration.ml create mode 100644 lib/concepts/Configuration.mli create mode 100644 lib/concepts/Hash.ml create mode 100644 lib/concepts/Hash.mli create mode 100644 lib/concepts/Representation.ml create mode 100644 lib/concepts/Representation.mli create mode 100644 lib/concepts/Value.ml create mode 100644 lib/concepts/Value.mli (limited to 'lib/concepts') diff --git a/lib/concepts/Configuration.ml b/lib/concepts/Configuration.ml new file mode 100644 index 0000000..06434c2 --- /dev/null +++ b/lib/concepts/Configuration.ml @@ -0,0 +1 @@ +type configuration = unit diff --git a/lib/concepts/Configuration.mli b/lib/concepts/Configuration.mli new file mode 100644 index 0000000..5e16ff9 --- /dev/null +++ b/lib/concepts/Configuration.mli @@ -0,0 +1,2 @@ +(** an abstract representation for a system configuration *) +type configuration diff --git a/lib/concepts/Hash.ml b/lib/concepts/Hash.ml new file mode 100644 index 0000000..4c6cd8a --- /dev/null +++ b/lib/concepts/Hash.ml @@ -0,0 +1,5 @@ +type hash = () + +val hash_of_value (_: Value.value) = failwith "TODO" + +val hash_equals (_: hash) (_: hash) = failwith "TODO" diff --git a/lib/concepts/Hash.mli b/lib/concepts/Hash.mli new file mode 100644 index 0000000..dc25669 --- /dev/null +++ b/lib/concepts/Hash.mli @@ -0,0 +1,8 @@ +(** An abstract value representing a hash *) +type hash + +(** Given a value, compute it's hash *) +val hash_of_value: Value.value -> hash + +(** Given two hashes, are they the same? *) +val hash_equals: hash -> hash -> bool diff --git a/lib/concepts/Representation.ml b/lib/concepts/Representation.ml new file mode 100644 index 0000000..4df7812 --- /dev/null +++ b/lib/concepts/Representation.ml @@ -0,0 +1,5 @@ +type blob = unit + +let blob_of_value (_: Value.value) = failwith "TODO" + +let value_of_blob (_: blob) = failwith "TODO" diff --git a/lib/concepts/Representation.mli b/lib/concepts/Representation.mli new file mode 100644 index 0000000..9d0a8f5 --- /dev/null +++ b/lib/concepts/Representation.mli @@ -0,0 +1,7 @@ +(** an abstract representation of an encoded value *) +type blob + +(** encode a blob into a value *) +val blob_of_value: Value.value -> blob +(** decode a value from a blob *) +val value_of_blob: blob -> Value.value diff --git a/lib/concepts/Value.ml b/lib/concepts/Value.ml new file mode 100644 index 0000000..3e57717 --- /dev/null +++ b/lib/concepts/Value.ml @@ -0,0 +1,3 @@ +type value + = String of string + | Integer of int diff --git a/lib/concepts/Value.mli b/lib/concepts/Value.mli new file mode 100644 index 0000000..6cb09ad --- /dev/null +++ b/lib/concepts/Value.mli @@ -0,0 +1,4 @@ +(** A tagged concrete value *) +type value + = String of string + | Integer of int -- cgit v1.2.3