Search                        Top                                  Index
REF VECTORS                                         John Gibson Aug 1989

        COPYRIGHT University of Sussex 1990. All Rights Reserved.

<<<<<<<<<<<<<<<<<<<<<                             >>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<   STANDARD FULL VECTORS     >>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<                             >>>>>>>>>>>>>>>>>>>>>>

A Standard Full (S.F.)  vector in Pop-11  is an indexable  1-dimensional
array where  each element  can be  any POP  item; subscript  values  for
vectors number from 1 upwards. The creation and manipulation  procedures
for standard full vectors are listed.
    A standard  full vector  is a  particular built-in  instance of  the
general class of vectors which can be constructed using * conskey or the
syntax construct * defclass. See REF * DATA for procedures applicable to
vectors in general

         CONTENTS - (Use <ENTER> g to access required sections)

  1   Predicates on S.F. Vectors

  2   Constructing New S.F. Vectors

  3   Accessing S.F. Vector Elements

  4   Generic Datastructure Procedures on S.F. Vectors

  5   Miscellaneous

  6   Related Documentation

1  Predicates on S.F. Vectors

isvector(item) -> bool                                       [procedure]
        Returns true if item is a standard full vector, false if not.

check_vector(item)                                           [procedure]
        Mishaps if item is not a standard full vector.

2  Constructing New S.F. Vectors

See HELP * TWIDDLYBRA  and HELP * PERCENT  for information  on  building
standard full vectors with syntactic brackets.

consvector(item1, item2, ..., itemN, N) -> fvec              [procedure]
        Constructs and  returns a  standard full  vector from  the  next
        (simple integer) N items on the  user stack, where the top  item
        on the  stack  will  be  at the  highest  subscript  value.  For

                consvector("a", "b", "c", 3) =>
                ** {a b c}

initv(N) -> fvec                                             [procedure]
        Constructs and returns a standard  full vector fvec of  length N
        whose  elements   are   all   the  word   "undef".   (See   also
        * initvectorclass.)

sysvecons(item1, item2, ..., itemN, M) -> fvec               [procedure]
        Constructs and returns  a standard full  vector fvec  containing
        all the items on the stack  EXCEPT the last M, i.e. it  performs
        consvector(N) where N is

            stacklength() - M

        (This is used by the Pop-11 vector constructor, which saves  the
        stacklength M before compiling a vector constructor  expression,
        and then calls sysvecons(M) after compiling it, thus producing a
        vector of all the items in the expression.)

3  Accessing S.F. Vector Elements

destvector(fvec) -> (item1, item2, ..., itemN, N)            [procedure]
        Destructs the  standard  full vector  fvec,  i.e. puts  all  its
        elements on the stack, together with its length (in other words,
        does the opposite of consvector). E.g.

                destvector({A B C D}) =>
                ** A B C D 4

subscrv(n, fvec) -> item                                     [procedure]
item -> subscrv(n, fvec)
        Returns or updates the n-th element of the standard full  vector
        fvec. Since subscrv is the class_apply of standard full  vectors
        (see REF * KEYS), this can also be called as

                fvec(n) -> item
                item -> fvec(n)

4  Generic Datastructure Procedures on S.F. Vectors

The  generic   data  structure   procedures  described   in   REF * DATA
(datalength, appdata, explode,  fill, copy, etc)  are all applicable  to
standard  full   vectors,  as   are   the  generic   vector   procedures
(initvectorclass, move_subvector, sysanyvecons,  etc) also described  in
that file.

5  Miscellaneous

nullvector -> vec                                             [constant]
        The value of this constant is a vector of length 0.

vector_key -> key                                             [constant]
        This constant holds the key structure for standard full  vectors
        (see REF * KEYS).

6  Related Documentation

    Describes intvecs (vectors  containing 32 bit  signed integers)  and
    shortvecs (vectors containing 16 bit signed integers).

    Describes byte vectors.

    Describes LIB * BITVECTORS, a  package for creating and  manipulating
    compact bitvectors.

    Describes syntax for creating new vector or record classes.

    Information on Poplog data types and how they are represented.

    Describes the information  associated with each  data type and  some
    general procedures for  manipulating data and  creating fast  access

    Describes  fast,  non-checking,  procedures  for  accessing   vector

--- C.all/ref/vectors
--- Copyright University of Sussex 1990. All rights reserved.