Next: Environments, Previous: Level 1 of the interface, Up: Level 1 of the interface
A variable is not necessarily a name, it can be a more complex structured datatype, depending on the application. That is the motivation to make it a parameter of the interface.
The abstract type ap_var_t
is equipped with a total ordering
function, a hashing function, a copy function, and a free function.
The parametrization of the interface is performed via a global
variable pointing to a ap_var_operations_t
structure,
containing the above-mentione doperations on ap_var_t
objects.
This means that this type should be fixed once, and that in a
multitreaded application all threads should share the same
ap_var_t
type.
By default, ap_var_t
is a C string (char*
), and the
global variable ap_var_operations
is properly initialized.
typedef void* ap_var_t;
Datatype for “variables”. It is assumed to be of size
sizeof(void*)
.
typedef struct ap_var_operations_t { int (*compare)(ap_var_t v1, ap_var_t v2); /* Total ordering function */ int (*hash)(ap_var_t v); /* Hash function */ ap_var_t (*copy)(ap_var_t var); /* Duplication function */ void (*free)(ap_var_t var); /* Deallocation function */ char* (*to_string)(ap_var_t var); /* Conversion to a dynamically allocated string, which should be deallocated with free after use */ } ap_var_operations_t;
Datatype for defining the operations on “variables”.
Default manager, where ap_var_t
is assumed to be char*
.
Global pointer to the manager in use, by default points to ap_var_operations_default
.
Next: Environments, Previous: Level 1 of the interface, Up: Level 1 of the interface