@startuml !theme toy title RNT Architecture hide empty members skinparam classAttributeIconSize 0 skinparam linetype ortho skinparam nodesep 30 skinparam ranksep 50 skinparam defaultFontSize 15 left to right direction class Condition <> { .. types .. +condition +ps .. values .. +"|=|" +"&" +empty() : ps +condition() : condition +complement() : condition +to_string_hum() : string } class Configuration <> { .. types .. +term +dictionary .. values .. +term_of_sexp() : term +tag_of() : string, Condition.condition result +value_for() : term, Condition.condition result +as_dictionary() : dictionary, Condition.condition result +as_int() : int, Condition.condition result +as_string() : string, Condition.condition result } class Cursor <> { .. types .. +descriptor +cursor .. values .. +open_() : cursor, Concepts.Condition.condition result +next() : Concepts.Tuple.t option, Concepts.Condition.condition result +close() : unit } class FOL <> { .. types .. +path_arg +t +stream +right .. values .. +singleton() +resolve() } class Handle <> { .. types .. +t +handle +cursor .. values .. +open_() : handle, Concepts.Condition.condition result +open_cursor() : cursor, Concepts.Condition.condition result +next() : Concepts.Tuple.t option, Concepts.Condition.condition result +close() : unit +create() : t +object_() : Object.registry } class Hash <> { .. types .. +hash .. values .. +hash_of_value() : hash +hash_equals() : bool +bytes_of_hash() : bytes } class Identity <> { .. values .. +permits() : bool +can_open() : bool +can_close() : bool } class LMDB <> { } class Lifecycle <> { .. types .. +tree +disposal .. values .. +monitor() : tree +pin() : tree +unpin() : tree +is_eligible_for_gc() : bool +contention() : bool +unmonitor() : tree * disposal BatFingerTree.t, Concepts.Condition.condi... +collect() : tree * disposal BatFingerTree.t, Concepts.Condition.condi... } class Namespace <> { .. types .. +tree .. values .. +resolve() : Concepts.Path.t, Concepts.Condition.condition result } class Object <> { .. types .. +multigroup +relation +ephemeral_relation +transaction +session +branch +branch_tree +rnt_object_kind +namespace +rnt_method +rnt_object +registry +rnt_object_tree .. values .. +make_object() +root() +find() +update() +reference_edges() +adjust_references() +is_gc_exempt() +is_runtime() +has_children() +register() +with_namespace() +construct_multigroup() +construct_relation() +unregister() } class Path <> { .. types .. +t .. values .. +empty() : t +of_list() : t +to_list() : string list +snoc() : t +to_string() : string +is_prefix() : bool } class Representation <> { .. types .. +blob .. values .. +blob_of_value() : blob +value_of_blob() : Value.value +blob_of_bytes() : blob +bytes_of_blob() : bytes } class Storage <> { .. types .. +connection +transaction } class Tuple <> { .. types .. +t .. values .. +empty() : t +access() : Value.value option +merge() : t +project() : t +rename() : t } class Utilities <> { .. values .. +"let*" +fmap() : 'b, 'e result } class Value <> { .. types .. +value .. values .. +to_string() : string +equal() : bool } Condition --> Value Configuration --> Condition Cursor ..> Condition Cursor ..> Path Cursor *-- Storage Cursor ..> Tuple Cursor ..> Value FOL ..> Condition FOL ..> Path FOL --> Tuple FOL ..> Value Handle --> Condition Handle *-- Cursor Handle --> Object Handle ..> Path Handle *-- Storage Handle ..> Tuple Handle ..> Value Hash ..> Value Identity ..> Object LMDB ..> Condition LMDB --> Configuration LMDB --> Hash LMDB --> Representation LMDB ..> Storage LMDB ..> Value Lifecycle ..> Condition Lifecycle --> Object Lifecycle ..> Path Namespace ..> Condition Namespace ..> Object Namespace ..> Path Namespace *-- Storage Object --> Condition Object --> Path Object ..> Value Representation ..> Value Storage ..> Condition Storage ..> Configuration Storage ..> Hash Storage ..> Representation Tuple ..> Value legend right diamond A *-- B : functor composition (@composes) solid A --> B : declared call (@uses) dashed A ..> B : type-only coupling (@needs) endlegend @enduml