HELP CONSPROCS Andrew Law Jun 1987
Updated: Adrian Howard May 1992
These are the procedures concerned with building "standard" POP-11
data-structures. Other libraries may provide additional data-structures
for internal use (for example, many of the X libraries.) These will be
detailed in the documentation for the individual libraries.
Also see REF *DEFSTRUCT for creating new POP-11 record and vector
classes.
CONTENTS - (Use <ENTER> g to access required sections)
-- CONSTRUCTION PROCEDURES
-- RELATED PROCEDURES
-- ASSOCIATED DOCUMENTATION
-- CONSTRUCTION PROCEDURES --------------------------------------------
class_cons(KEY) -> PROCEDURE
Returns the constructor procedure for the class KEY.
-- *CLASS_CONS, REF *KEYS
conskey(WORD, SPEC) -> KEY
conskey(WORD, SPEC, ATTRIBUTE_VEC) -> KEY
Creates a key for a new record or vector class according to the
field specification SPEC. ATTRIBUTE_VEC can be used to supply
any additional attributes of the new data-class.
-- *CONSKEY, HELP *KEYS, REF *KEYS
cons_with PROCEDURE { ITEM_1 ITEM_2 ... ITEM_N } -> STRUCTURE
Applies PROCEDURE to the specified ITEMs as follows:
PROCEDURE(ITEM_1, ITEM2, ..., ITEM_N, N)
PROCEDURE should be a vector class constructor procedure such as
-consstring-
-- *CONS_WITH, REF *SYNTAX, REF *POPSYNTAX
conslist(N) -> LIST
Returns a LIST constructed from the top N items on the stack
-- *CONSLIST, HELP *LISTS, REF *LISTS
cons(ITEM, LIST_1) -> LIST_2
ITEM :: LIST_1 -> LIST_2
Constructs and returns a list whose head is ITEM and whose tail is
the list LIST_1
-- *CONS, HELP *LISTS, REF *LISTS
conspair(ITEM_1, ITEM_2) -> PAIR
Creates a PAIR whose -front- is ITEM_1 and whose -back- is ITEM_2.
-- *CONSPAIR, TEACH *PAIRS, REF *LISTS
consvector(N) -> VECTOR
Returns a VECTOR created from the top N items on the stack
-- *CONSVECTOR, HELP *VECTORS, REF *VECTORS
consintvec(N) -> INTVEC
consshortvec(N) -> SHORTVEC
Constructs and returns an integer/short vector with its elements
taken from the next N items on the user stack, where the first item
on the stack will be at the highest subscript value.
-- *CONSINTVEC, *CONSSHORTVEC, REF *INTVEC
consword(STRING|INTEGER:N) -> WORD
Returns a WORD with the same characters as STRING, or created from
the top N characters on the stack.
-- *CONSWORD, HELP *WORDS, REF *WORDS
consstring(N) -> STRING
Returns a STRING created from the top N characters on the stack
-- *CONSSTRING, HELP *STRINGS, REF *STRINGS
consdstring(N) -> DSTRING
consdstring(N, SOPT) -> DSTRING
consdstring(STRING) -> DSTRING
Construct a "display" string DSTRING. The first two forms construct
the display string from the top N characters on the stack. If SOPT
is present and not -false- then the display string is optimised to
an ordinary string if possible. The third form of -consdstring-
constructs a display string from an ordinary string.
--- *CONSDSTRING, HELP *STRINGS, REF *STRINGS
consref(ITEM) -> REFERENCE
Returns a REFERENCE containing ITEM
-- *CONSREF, HELP *REFERENCES, REF *RECORDS
consundef(WORD) -> UNDEF
Creates a new undef record with -undefword- WORD.
--- *CONSUNDEF, HELP *UNDEF, REF *IDENT
consclosure(P, ITEM_1, ITEM_2, ..., ITEM_N, N) -> CLOS
Construct a closure based on procedure P with the N frozen arguments
ITEM_1 to ITEM_N.
--- *CONSCLOSURE, HELP *CLOSURES, REF *PROCEDURE
newarray(BOUNDS_LIST, ELEMENT_INIT) -> ARRAY
newanyarray(BOUNDS_LIST, ELEMENT_INIT, ARRAYVEC_SPEC, SUBSCR_P,
ARRAYVEC_OFFSET, BY_COLUMN) -> ARRAY
Generic array construction procedures
--- *NEWARRAY, *NEWANYARRAY, HELP *ARRAYS, REF *ARRAYS
newsarray(BOUNDS_LIST, ELEMENT_INIT) -> CHAR_ARRAY
Construct an array of strings
--- *NEWSARRAY, HELP *ARRAYS, REF *ARRAYS
newsparse(DIMENSIONS) -> SPARSE_ARRAY
newanysparse(DIMENSIONS, DEFAULT_ITEM) -> SPARSE_ARRAY
newanysparse(DIMENSIONS, DEFAULT_P, APPLY) -> SPARSE_ARRAY
Construct a "sparse" arrays.
--- *NEWSPARSE, HELP *ARRAYS, REF *ARRAYS
newassoc(ASSOC_LIST) -> PROP
newmapping(ASSOC_LIST, TAB_SIZE, DEFAULT, EXPAND) -> PROP
newproperty(ASSOC_LIST, TAB_SIZE, DEFAULT, GC_TYPE) -> PROP
newanyproperty(ASSOC_LIST, TAB_SIZE, EXPAND_POW, THRESH, HASH_P,
EQUAL_P, GC_TYPE, DEFAULT, ACTIVE_DEFAULT) -> PROP
Construct properties.
--- *NEWASSOC, *NEWMAPPING, *NEWPROPERTY, *NEWANYPROPERTY,
HELP *PROPERTIES, REF *PROPS
consproc(ITEM_1, ..., ITEM_N, N, INIT_P) -> PROC
consproc(ITEM_1, ..., ITEM_N, N, INIT_P, VOLATILE) -> PROC
Creates a process PROC from the procedure INIT_P transferring N
items from the stack to PROC. VOLATILE is a boolean which specifies
whether the process is "volatile" or not (the default is -true-.)
-- *CONSPROC, HELP *PROCESS, REF *PROCESS
consproc_to(ITEM_1, ..., ITEM_N, N, TARGET_P) -> PROC [procedure]
consproc_to(ITEM_1, ..., ITEM_N, N, TARGET_P, VOLATILE) -> PROC
Creates a process record PROC of the current state of computation
-- *CONSPROC_TO, HELP *PROCESS, REF *PROCESS
consident(IDPROPS, CONST_MODE, KIND) -> IDENT
Construct an identifier record without the associated declaration of
a word. IDENTPROPS specified the identprops. CONST_MODE specifies
whether the ident refers to a constant or a variable, it also
specifies whether the declaration is "weak" or not. KIND specifies
the type of the identifier.
-- *CONSIDENT, HELP *IDENTIFIERS, REF *IDENT
consdescriptor(STRING) -> DESC
Construct a VMS simple string descriptor.
--- *CONSDESCRIPTOR, REF *EXTERNAL
consprologterm(WORD, N) -> PROLOGTERM
Construct a Prolog term with arity N and functor WORD.
--- *CONSPROLOGTERM, REF *PROLOG
prolog_newvar() -> PROLOGVAR
Constructs an uninstantiated Prolog variable.
--- *PROLOG_NEWVAR, REF *PROLOG
prolog_maketerm(ITEM_1, N) -> ITEM_2
Constructs a Prolog term with arity N and functor ITEM, with the
arguments taken from the next N elements on the stack.
--- *PROLOG_MAKETERM, REF *PROLOG
consdevice(PEN_NAME, FULL_NAME, USER_DATA, FLAGS,METHODS_VEC) -> UDEV
Construct a user device.
--- *CONSDEVICE, HELP *DEVICE, REF *SYSIO
consveddevice(FILENAME, ACCESS_MODE, INSERT_AT_EOF) -> DEV
Constructs a VED-buffer device DEV for a file named FILENAME.
--- *CONSVEDDEVICE, REF *VEDPROCS
consexternal_ptr() -> EXPTR
Construct an external pointer.
--- *CONSEXTERNAL_PTR, REF *EXTERNAL_DATA
consexptrvec(EXPTRCLASS_1, ..., EXPTRCLASS_N, N) -> EXPTRVEC
Construct an external pointer vector from the top N external
pointers on the stack.
--- *CONSEXPTRVEC, REF *EXTERNAL_DATA
cons_fixed(KEY) -> FIXED_STRUCT
cons_fixed(KEY, HOLD) -> FIXED_STRUCT
Creating "fixed" structures not moved by garbage collection by
calling the -class_cons- of KEY on any items on the stack. If HOLD
is present and true, the returned structure is held on the fixed
hold list to prevent it being garbage collected.
--- *CONS_FIXED, REF *EXTERNAL_DATA
exptr_cons_fixed(KEY, HOLD) -> EXPTR
exptr_cons_fixed(KEY) -> EXPT
Create an external pointer to a fixed POP-11 structure gained from
applying the -class_cons- of KEY to any items on the stack. If HOLD
is present and true, the returned structure is held on the fixed
hold list to prevent it being garbage collected.
--- *EXPTR_CONS_FIXED, REF *EXTERNAL_DATA
cons_access(WANT, SPEC, CHECK, MODE) -> P or P_VEC
Constructs external access and application procedures for external
data-structures and functions. WANT specifies what procedures are
wanted. SPEC specifies the structure of the external object. CHECK
specifies whether the returned procedure(s) do type checking of
their arguments. MODE specifies the type of access.
-- *CONS_ACCESS, REF *KEYS
make_exfunc_closure(F_EXPTRCLASS, ARG_ITEM, HOLD) -> EFC
exfunc_export(PROC, FLAGS, HOLD) -> EFC
Create external function closures.
--- *MAKE_EXFUNC_CLOSURE, *EXFUNC_EXPORT, REF *EXTERNAL_DATA
consshadowkey(NAME, SPEC, PROPS) -> SHKEY
Construct a shadowkey. NAME is the name of the new data-class. SPEC
is a description of its structure. PROPS specifies additional
attributes.
--- *CONSSHADOWKEY, REF *SHADOWCLASS
shadowclass_cons(SHKEY,FLAGS) -> PROC
Returns the constructor procedure for the shadowclass with the
shadow key SKKEY.
--- *SHADOWCLASS_CONS, REF *SHADOWCLASS
sysvecons(N) -> FVEC
Constructs a vector FVEC from items on the stack, leaving the stack
N items deep.
--- *SYSVECONS, REF *VECTORS
sysanyvecons(N, P) -> VEC
Calculates the difference between the current stacklength and some
previous stacklength N, which is given as an argument to P which
should be some vector-type constructor procedure.
--- *SYSANYVECONS, REF *DATA
sysconslist() -> LIST
Constructs a list from the items on the stack up to -popstackmark-
--- *SYSCONSLIST, REF *LISTS
sysconslist_onto(LIST_1) -> LIST_2
Constructs a list from the items on the stack up to -popstackmark-
followed by LIST_1.
--- *SYSCONSLIST_ONTO, REF *LISTS
-- RELATED PROCEDURES -------------------------------------------------
class_init(KEY) -> PROCEDURE
Returns the PROCEDURE which creates and initialises a structure of
class KEY.
--- *CLASS_INIT, REF *KEYS
initl(N) -> LIST
Construct a list consisting of N copies of -nil-.
--- *INITL, REF *LISTS
initv(INTEGER) -> VECTOR
This procedure takes as argument an INTEGER and returns a data
structure, of type VECTOR, with INTEGER components. Initially all
components hold "undef", though they can be set to any value using
the procedure -subscrv-.
--- *INITV, REF *VECTORS
initintvec(INTEGER) -> VECTOR
initshortvec(INTEGER) -> VECTOR
Constructs and returns an integer/short VECTOR of length INTEGER
whose elements are all initialised to the value 0 (zero).
--- *INITINTVEC, *INITSHORTVEC, REF *INTVEC
inits(INTEGER) -> STRING
Given an INTEGER, this procedure produces a STRING of the given
size. The components of a STRING must be integers in the range 0 to
255. The initial value of all components is 0.
--- *INITS, REF *STRINGS
initdstring(INTEGER) -> STRING
As for -inits-, but produces a display string rather than a normal
string.
--- *INITDSTRING, REF *STRINGS
initvectorclass(INTEGER, ITEM, KEY) -> VECTORCLASS
This procedure is used to build instances of vector-type structures.
Its arguments are an INTEGER specifying the size of vector-type
object to construct, an ITEM to fill the new vector with, and a
vector-type KEY which specifies what kind of vector to build.
--- *INITVECTORCLASS, REF *DATA
initprologterm(N) -> PROLOGTERM
Create a Prolog term with arity N and functor -undef-. All arguments
are initialised to 0.
--- *INITPROLOGTERM, REF *PROLOG
shadowclass_init(SHKEY) -> PROC
Return the procedure PROC which creates and initialises a
shadowclass structure with shadow key SHKEY.
--- *SHADOWCLASS_INIT, REF *SHADOWCLASS
init_fixed(N, VEC_KEY) -> FIXED_VEC
init_fixed(N, VEC_KEY, HOLD) -> FIXED_VEC
Created a fixed vector of length N using the -class_init- of the key
VEC_KEY. If HOLD is present and non-false the vector is added to the
fixed hold list to prevent it being garbage collected.
--- *INIT_FIXED, REF *EXTERNAL_DATA
exptr_init_fixed(N, VEC_KEY, HOLD) -> EXPTR
exptr_init_fixed(N, VEC_KEY) -> EXPTR
Return an external pointer to an N element fixed vector created by
using the -class_init- of the key VEC_KEY. If HOLD is present and
non-false the vector is added to the fixed hold list to prevent it
being garbage collected.
--- *EXPTR_INIT_FIXED, REF *EXTERNAL_DATA
-- ASSOCIATED DOCUMENTATION -------------------------------------------
*FILL - Filling in vectors from items on stack
*STACK - Procedures dealing with the stack
*CLASSES - Info. on POP-11 data classes
*EXPLODE - Puts all the elements of a structure on the stack.
*DATA - Info. on POP-11 datatypes
*KEYS - Info. on POP-11 keys
*DESTPROCS - POP-11 destructor procedures
*DEFSTRUCT - Constructing new POP-11 record and vector classes
--- C.all/help/consprocs -----------------------------------------------
--- Copyright University of Sussex 1992. All rights reserved. ----------Author: Andrew Law Jun 1987