Search Top Index
HELP CLASSES Updated A. Sloman Aug 1986 POP-11 has a number of built in data classes including integers, decimals, words, strings, booleans, procedures, closures, vectors, arrays, processes, references, pairs (used for lists), nil (the empty list), and termin. See REF * DATA for a complete list. Each data type has a "KEY" associated with it. The key is a record that contains information about the class, including procedures associated with the class. "Vector" type data-structures have components that are accessed or updated by numerical subscripts, whereas "record" type data-structures have field selector/updater procedures. There are several types of vector classes (e.g. ordinary vectors and strings) and several types of record classes, e.g. pairs and references. The procedure * CONSKEY enables a new class of vectors or a new class of records to be created by the user, but normally it is more convenient to use syntax constructs that invoke CONSKEY. REF * DEFSTRUCT explains how to create new classes of records and vectors easily. For full details of what classes are see REF *KEYS. ----------------------------------------------------- The following procedures access or update components of the key associated with a class. class_=(key) -> procedure procedure -> class_=(key) Returns the equality testing procedure for objects of the class. This is user-assignable, the default being sys_= class_access(n, key) -> procedure Given a record class key, returns the n'th accessing procedure. class_apply(key) -> procedure procedure -> class_apply(key) Returns/updates a procedure that specifies how to "apply" objects of the given class, i.e. what to do if the object is applied. For vector type keys, this defaults to the subscriptor procedure, hence VEC(5) is equivalent to SUBSCRV(5, VEC). Because it is user-assignable, users can create new types of procedure objects. class_cons(key) -> procedure Returns a procedure for constructing items of the given class. class_datasize(key)-> n Given a record type key, returns the length in longwords of records of that class. class_dataword(key) -> word Given a key returns the associated dataword class_dest(key) -> procedure Returns the 'destructor', or 'exploder' for that class. class_hash(key) -> procedure procedure -> class_hash(key) Returns/updates the hash function for the class, invoked by SYSHASH. See HELP * SYSHASH class_init(key) -> procedure Given a vector type class key, returns the initialiser procedure. class_print(key) -> procedure procedure -> class_print(key) Returns/updates the procedure used by *SYSPR to print items from the class. The default is *SYS_SYSPR, but can be changed. class_recognise(key) -> procedure Returns a procedure that recognises members of the class class_spec(key) -> specification For a vector key returns the field size. For a record type key returns the list of field specifiers. For any other time returns false. class_subscr(key) -> procedure For a vector-type key returns the subscripting procedure. class_fast_subscr(key) -> procedure Like class_subscr, but returns a non-checking subscriptor procedure, to be used with caution. (See REF * FASTPROCS) --------------------------------------------------------- The following procedures also operate on or are associated with keys: conskey(word,specification) -> key Creates a key, and hence a new class. For a vector class the specification should be either the word "full" or a positive or negative integer. For a record class the specification is a list of field sizes. datakey(item) -> key Given any item returns the key for the class containing the item iskey(item) -> boolean Recogniser for keys key_of_dataword(word) -> key Given a word which is a dataword return the corresponding KEY. This is a property, initialised for built in keys, and updated by *RECORDCLASS and *VECTORCLASS. See also HELP * KEYS and the following documentation for procedures that operate on data-structures: *APPDATA - apply a procedure to every element of a structure *COPY - copy a data-structure *COPYDATA - a recursive data-structure copier *DATALENGTH *DATAFILE - store data-structures in a disk file. *DATALIST - form a list of components of a structure *DATAWORD *EXPLODE - put all the elements of a structure on the stack *FILL - copy the top elements of the stack into a structure *ISRECORDCLASS *ISVECTORCLASS *ISEXTERNALCLASS *MAPDATA - transform elements of a structure via a proceure *RECORDS *RECORDCLASS - create new record classes *VECTORS *VECTORCLASS - create new vector classes --- C.all/help/classes ------------------------------------------------- --- Copyright University of Sussex 1988. All rights reserved. ----------