previous next top contents index framed top this page unframed
Figure 40–13. The Load PROCEDUREs
| $BUILTIN BOOLEAN PROCEDURE boLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN INTEGER PROCEDURE iLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN LONG INTEGER PROCEDURE liLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN REAL PROCEDURE rLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN LONG REAL PROCEDURE lrLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN BITS PROCEDURE bLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN LONG BITS PROCEDURE lbLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN STRING PROCEDURE sLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN POINTER PROCEDURE pLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN ADDRESS PROCEDURE aLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN CHARADR PROCEDURE cLoad (ADDRESS a; OPTIONAL INTEGER dspl); $BUILTIN $PROCVAR PROCEDURE $pvLoad (ADDRESS a; OPTIONAL INTEGER dspl); |
load is used to load a value from a memory ADDRESS.
v := xLoad(a,d) loads a value of type x from the memory location given by displace(a,d), where d is a displacement in storage units. If a is NULLADDRESS or unaligned (see Section 3.9), if d is not a multiple of the size of the smallest MAINSAIL data type, or if displace(a,d) is undefined, then xLoad(a,d) is also undefined. The STRING form loads only a STRING descriptor; the characters of the STRING are not referenced.
Another form of cLoad, which loads a character from a CHARADR, is described in Section 32.28.
Example 40–14. Use of the Load PROCEDUREs
| REAL y; CLASS c (REAL x; POINTER(c) link); POINTER(c) p,q; p := new(c); ... y := rLoad(cva(p)); # same as y := p.x q := pLoad(cva(p),DSP(c.link)) # same as q := p.link |
40.16.1. Sized Load PROCEDUREs
Figure 40–15. Sized Load PROCEDUREs
| $ALWAYSINLINE BOOLEAN PROCEDURE $boLoadSized (ADDRESS a; OPTIONAL INTEGER dspl,type); $ALWAYSINLINE INTEGER PROCEDURE $iLoadSized (ADDRESS a; OPTIONAL INTEGER dspl,type); $ALWAYSINLINE LONG INTEGER PROCEDURE $liLoadSized (ADDRESS a; OPTIONAL INTEGER dspl,type); $ALWAYSINLINE BITS PROCEDURE $bLoadSized (ADDRESS a; OPTIONAL INTEGER dspl,type); $ALWAYSINLINE LONG BITS PROCEDURE $lbLoadSized (ADDRESS a; OPTIONAL INTEGER dspl,type); |
The sized load PROCEDURE $xxxLoadSized, where xxx is the base data type abbreviation, loads a value of the sized data type whose type is given by the extended type code type from displace(a,dspl). For example:
$iLoadSized(a,0,$integerSigned1Code)
loads 1 byte from a and sign-extends it to form an INTEGER result.
$lbLoadSized(a,0,$longBits2Code)
loads a 2-byte quantity from a and zero-extends it to form a LONG BITS result.
If the extended type code is not a sized type code corresponding to the base type, a value of the base type's size is loaded. For example, either of:
$boLoadSized(a,0,pointerCode)
$boLoadSized(a)
is equivalent to:
boLoad(a)
MAINSAIL Language Manual, Section 40.16