Select headings to return to index
--------------------------------------------------------
vectorclass <classname> <fieldspec> ; vectorclass [identspec] <classname> [[:] <fieldspec>] ;
VECTORCLASS is a macro that defines new vector classes using *CONSKEY. It automatically defines constructor, destructor, subscriptor, fast subscriptor, and recogniser procedures for the new class; and a variable containing its key.
The <classname> specifies the dataword of the class.
The optional <fieldspec> specifies the type of elements of this class of vectors. It should be either the word "full" or an integer for integer- only fields. If no <fieldspec> is specified, the default is "full". See REF *KEYS for more details.
The optional <identspec> specifies the status of the identifiers created by VECTORCLASS. One of "constant" and "vars" may be used, to indicate that the identifers should or should not be made constant, and one of "procedure" or 0 may be used, to indicate their *IDENTTYPE. If neither "constant" nor "vars" is specified, the identifier status is defaulted from the variable *POPDEFINECONSTANT; if neither "procedure" nor 0 is specified, the identifier type is defaulted from the variable *POPDEFINEPROCEDURE.
The statement
vectorclass short 16;
creates procedures
initshort, consshort, destshort, isshort subscrshort, fast_subscrshort,
and declares the variable
short_key
with the new key as its value.
Vectors of type "short" can only contain integers in the range 0 to (2 ** 16) - 1.
VECTORCLASS has been defined so that if you re-compile a file containing a call of VECTORCLASS it will not construct a new key. More precisely, when a VECTORCLASS declaration is executed the value of the word <name>_key is examined and if the value is a key and its specification is the same as the specification in the declaration then a new key will not be constructed, although the procedures associated with the key (subscriptors, constructers etc.) will be reassigned to the variables that should contain them.
This behaviour ensures that, if the declaration has not changed, then the old subscriptor, recogniser, etc. will continue to work on structures already created. If for any reason you wish the declaration to be re-executed, then you should assign soem non-key object (e.g. undef) to the key name. E.g. in the above example:
undef -> short_key;
This will force the construction of a new key. Any previously constructed vectors will not work with the new subscriptor and will not be recognised as instances of the new key.
HELP *ISVECTORCLASS HELP *VECTORS HELP *RECORDCLASS HELP *CLASSES REF *KEYS REF *INITV REF *SUBSCRV, REF *CONSVECTOR HELP *MOVE_SUBVECTOR REF *FILL
--- C.all/help/vectorclass --- Copyright University of Sussex 1988. All rights reserved. ----------