|[ < ]||[ > ]||[ << ]||[ Up ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]|
Not all functions of type C library are interfaced; for instance, you can't manipulate saturation matrices in OCAML (buf of course, if someone asks me this feature, I can add it). The three datatypes that are interfaced are vectors, matrices, and polyhedra, and there is a corresponding module for each of these datatypes. All objects are properly finalized, thanks to the use of "custom" blocks.
The interface was developped with the CAMLIDL tool. Each `.idl' file produces a `_caml.c', a `.mli' and a `.ml' file. Each file is represents a module.
The interface is decomposed as follows:
When invalid arguments are given to some function (incompatible
dimensions, out-of-bound access, ...), an
exception is usually thrown.
We provide a unified type for coefficients, which is the OCAML
native integers. Converting to OCAML native integers coefficients
as used in the C library, which can be
long int or
mpz_t, may produce overflow. In this case, an
Polka.Overflow(str) is raised, carrying the string
representation of the coefficient in base 10. This concerns only the