Type and structure of the returned dictionary entry, or
0 if the identifier is not registered.
This function returns the dictionary entry of a given identifier for a given
model, together with the type and structure
of the entry.
Type and structure
are bit encoded and can be extracted using the
macros
XPRM_TYP(t) and
XPRM_STR(t).
The possible structures are:
|
XPRM_STR_CONST
|
|
|
XPRM_STR_REF
|
the object is a reference to a scalar
|
|
XPRM_STR_LIST
|
|
|
XPRM_STR_SET
|
|
|
XPRM_STR_ARR
|
|
|
XPRM_STR_PROC
|
the object is a procedure or function
|
|
XPRM_STR_MEM
|
the object is a memory block
|
|
XPRM_STR_UTYP
|
the object is a user defined type
|
Depending on the structure, the possible types are:
|
XPRM_TYP_NOT
|
|
|
XPRM_TYP_INT
|
integer (constant, reference, list, set, array, function)
|
|
XPRM_TYP_REAL
|
real (constant, reference, list, set, array, function)
|
|
XPRM_TYP_STRING
|
text string (constant, reference, list, set, array, function)
|
|
XPRM_TYP_BOOL
|
Boolean (constant, reference, list, set, array, function)
|
|
XPRM_TYP_MPVAR
|
decision variable (reference, list, set, array)
|
|
XPRM_TYP_LINCTR
|
linear constraint (reference, list, set, array)
|
Any other value designates an external type (type provided by a module).
The union
XPRMalltypes groups
all possible types and the result of a
call to
findident is decoded as follows depending on the structure:
|
value.integer
|
for constant or reference
|
|
value.real
|
for constant or reference
|
|
value.string
|
for constant or reference
|
|
value.boolean
|
for constant or reference
|
|
value.mpvar
|
for reference
|
|
value.linctr
|
for reference
|
|
value.list
|
for list (to be used as input for list functions)
|
|
value.set
|
for set (to be used as input for set functions)
|
|
value.array
|
for array (to be used as input for array functions)
|
|
value.ref
|
for a reference to an external type (available operations depend on the actual type)
|
|
value.proc
|
for procedure and function
|
|
value.memblk
|
for memory block
|
Memory blocks are generated by the
mem IO driver when used
with a label. Blocks created this way can be found using the label: the
name is linked to the following structure describing the block:
typedef struct
{
void *ref; /* Base address of the block */
unsigned long size; /* Size of the block */
} XPRMmemblk;
Note that memory blocks allocated by Mosel are managed by the memory manager
of the IO driver and must not be explicitly released.