|
[NEXT] [PREV]
HANDBOOK
/ LIBRARY REFERENCE MANUAL
/Implementing Types and Predicates in C |
|
Gentle
Applications Concepts Examples Handbook Support Download
|
A type that is is defined without functors or a procedure that is defined without rules must be implemented in C. Abstract types may be implemented as values of type long or as pointers. For example, if a Gentle specification contains the declaration 'type' IDENTthis type may be implemented in a C module as typedef struct IDENTSTRUCT *IDENT;which defines values of type IDENT as references to structures. Abstract procedures are implemented by C routines that take long arguments as input parameters and use (long *) arguments to realize output parameters. For example, if a Gentle specifications defines a procedure as 'action' Max (INT, INT -> INT)it may be implemented in C as
void Max (x, y, ref_result)
long x;
long y;
long *ref_result;
{
*ref_result = (x > y ? x : y);
}
The Gentle type INT corresponds to the C type long.
Gentle terms and the type POS
may also be treated as long. The Gentle
type STRING corresponds to (char *).
A 'condition' must be implemented as a function returning int that yields 1 if the call succeeds and 0 if it fails. For example, a procedure introduced by 'condition' HasMeaning (IDENT -> MEANING)may be implemented by
int HasMeaning (id, ref_meaning)
IDENT id;
long *ref_meaning;
{
if (id->meaning == 0)
return 0;
*ref_meaning = id->meaning;
return 1;
}
[NEXT] [PREV] |