| 
 | 
 | 
 | 
 | 
| (Assignments (Var.)..) | Contents | Index | (RDL: ..) | 
The compounded structure of 
cell objects leaves us an odd little
programming element: the word VOID (not to be confused with the string
"VOID"), which can be used as contents of 
registers of all
types, but only there.
But, although we do not restrict its appearance to special objects of cell
type, it will only be discovered in constants
and symbolic constants;
it will not show up in variables or even cells 
within the retina or on its border. The explanation for this behaviour is very simple:
whenever two cell expressions are put in some 
relation to each other by an operator, all couples of corresponding 
registers where VOID can be
found as a contents of at least one of them, are excluded from the action.
(Note that 
= is an operator, too.) More concretely:
RETINA;
RANGE [0]..[10];
REGISTER INT r1;
         STRING r2;
CONST cellconst_1 = {VOID, "ready"};
      cellconst_2 = {0, VOID};
VAR STRING stringvar;
    CELL cellvar;
    BOOL boolvar;
    INT intvar;
START
   cellvar = {0, ""};
   boolvar = cellvar == cellconst_2;     /* TRUE */
   boolvar = cellconst_1 != {25, VOID};  /* FALSE */
   cellvar.r1 ++ ;
   cellvar = cellconst_1;
   boolvar = cellvar == {0, "ready"};    /* FALSE */
   cellvar = cellconst_2;
   boolvar = cellvar == {0, "ready"};    /* TRUE */
Note that VOID is neither of type 
INT nor of type 
STRING.
So when the contents of a register 
should be interpreted as a string or an
integer for further progression, it must be guaranteed first that
it is not VOID.
(But actually this is easy to control,
for VOID can only be found
written down explicitely within the source code or in 
symbolic constants.
And, because it makes no sense to extract single values out of values which are
explicitely given,
we just have to make sure that there is no illegal access to symbolic
constants.)
stringvar = cellconst_2.r2;  /* =VOID */
intvar = abs(cellconst_1.r1) + 42; 
              /* = VOID */
| 
 | 
 | 
 | 
 | 
| (Assignments (Var.)..) | Contents | Index | (RDL: ..) |