XPRMfindident
XPRMfindident |
Purpose
Synopsis
int XPRMfindident(XPRMmodel model, const char *name, XPRMalltypes *value);
Arguments
model
|
Reference to a model
|
name
|
Identifier
|
value
|
Pointer to an area where the dictionary entry is returned
|
Return value
Aggregated type information of the returned dictionary entry, or 0 if the identifier is not registered.
Further information
This function returns the dictionary entry of a given identifier for a given model together with its type. The returned type information is bit encoded and associates a
type code and a
structure
that can be extracted using the macros
XPRM_TYP(t) and
XPRM_STR(t). The possible structures are:
Depending on the structure, the possible type codes are:
Any other value designates an external type (type provided by a module or defined in the model). Moreover, if the structure is
XPRM_STR_UTYP, the identifier is the name of a user type and the value (an integer) corresponds to the expanded form of this type (see
XPRMgettypeprop). Otherwise, the function
XPRMgettypeprop can be used to get the name and the properties of this type.
The union XPRMalltypes groups all possible types and the result of a call to XPRMfindident is decoded as follows depending on the structure:
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:
XPRM_STR_CONST
|
|
XPRM_STR_REF
|
|
XPRM_STR_LIST
|
|
XPRM_STR_SET
|
|
XPRM_STR_ARR
|
|
XPRM_STR_PROC
|
|
XPRM_STR_MEM
|
|
XPRM_STR_UTYP
|
XPRM_TYP_NOT
|
|
XPRM_TYP_INT
|
|
XPRM_TYP_REAL
|
|
XPRM_TYP_STRING
|
|
XPRM_TYP_BOOL
|
|
XPRM_TYP_MPVAR
|
|
XPRM_TYP_LINCTR
|
The union XPRMalltypes groups all possible types and the result of a call to XPRMfindident is decoded as follows depending on the structure:
value.integer
|
for constant, reference or user type
|
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
|
typedef struct { void *ref; /* Base address of the block */ size_t 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.
Related topics