# Module Netshm_data

    module Netshm_data: sig .. end

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