Up

module Netshm_data

: sig

Data representation for shared memory

#
type 'a data_manager = {
# to_int32_array
: 'a -> Netshm.int32_array;(*Represent the value as an int32_array*)
# of_int32_array
: Netshm.int32_array list -> 'a;(*Read the value back from its int32_array representation. The array is given as list of array fragments in reverse order. The fragments must not be empty.*)
# of_int32_array_prefix
: (Netshm.int32_array list -> 'a option) option;(*Read the value back from its int32_array representation. Unlike of_int32_array, it is allowed to pass a prefix of the whole array to this function. As of_int32_array, this prefix is given as list of array fragments in reverse order. The function may return None if it is not yet possible to reconstruct the value. Otherwise the value is returned as Some v.*)
# hash_fn
: 'a -> int32;(*Hash function*)
}

The data manager consists of several manager functions. of_int32_array_prefix is optional.

#
val int32_manager : int32 data_manager

Represents an int32 as one-element int32_array

#
val int64_manager : int64 data_manager

Represents an int64 as two-element int32_array

#
val nativeint_manager : nativeint data_manager

Uses either int32_manager or int64_manager to represent nativeint, depending on the size of nativeint.

#
val int_manager : int data_manager

Uses either int32_manager or int64_manager to represent int, depending on the size of int.

#
val int32_array_manager : Netshm.int32_array data_manager

The identity representation manager

#
val string_manager : string data_manager

Represents a string in the following way. The first element is the size of the string. The following elements store the bytes. The last word is filled up with zero bytes if necessary.

#
val pair_manager : 'a data_manager -> 'b data_manager -> ('a * 'b) data_manager

Creates a compound manager for pairs from two input managers

#
val left_pair_manager : 'a data_manager -> 'a data_manager

Uses the same representation as pair_manager, but the resulting data manager only reads the left value of the pair.

This data manager does not support to_int32_array.

#
val option_manager : 'a data_manager -> 'a option data_manager

Creates a data manager from an input data manager for optional values

end