Module Incubator


module Incubator: sig  end
Implementation of the Incubator design pattern, which coordinates the interactions of ligands and processing units. The Incubator implementation relies heavily on the Swarm implementation - it's the next level up in the Design Stack of Monod - and any performance gain made to the Swarm will carry through to the Incubator directly. Currently, the Incubator uses the (very inefficient) SerializedSwarm implementation.

Processing units have two kinds of projections: ligand binding projections, which bind to ligands, and structural binding projections, which bind to other processing units.
See also testing/test_incubator.ml for simple examples of how to use this module.

In the Monod project, this module is used to define elements of the next layer in the Design Stack, the Cytoplasm - see the FIXME: Cytoplasm module (which doesn't exist yet.)



type splitstays =
| LeftStays
| RightStays
Used when sending a split order to identify which part of the split ligand - the left or the right part - stays attached to the originating projection.


type splitorder = splitstays * int
The first part is described above. The integer part is used to identify the index within the submarker of the ligand at which the split is to be done: the split is done just to the left of the referenced base.


type joinorder =
| FirstLeft
| FirstRight
FIXME: ...

exception Not_a_ligand
Raised by the method extract_ligand below.
module Procunit: sig  end
Contains the definitions for the processing units appearing an an Incubator.

type resident
The opaque type of a resident of an Incubator object, which refers to either a ligand or a processing unit. Must be used as parameter of certain methods.

class t : object  end
The signature of Incubator objects.