Classes (excluding class C):

ALLSETCOMMAND, ARRAY, ARRAY2, ARRAY3, ARRAY4, ARRAY_TEST, BASE_TEST,
BOOL, BREAKS, CHAR, CNAME_MAPPING, DBROWSER, DBROWSER_COMMAND,
DBTABLE_READ, DISAMBIG, DMIRROR, DOUBLE, DSYS, ERR, FEATTOKEN, FILE,
FOO, GLOBALS, IN, INT, MIRROR_TST, MYC, MYDOUBLE, MYINT, OUT,
PRINTCOMMAND, REAL, SATFILEENT, SATLINEENT, SDB, SOURCE, STR,
STRING_TO_, STRSETCOMMAND, STR_CURSOR, STR_TEST, TARRAY, TEST,
TESTPARENT, TWOINTS, VISCOMMAND.

Excluding matches to doc-tag-table-classes-exclude =
""

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ALLSETCOMMAND is                                               [class]

   set array el given by arg


Public definitions of class ALLSETCOMMAND: 

Inherits from: DBROWSER_COMMAND

func(i,j,k,l:INT;m:DMIRROR;arg:$OB):BOOL is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ARRAY{T} is                                                    [class]

   asize:INT: Implemented by the compiler.


Public definitions of class ARRAY: 

clear is
   Clear out the array. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ARRAY2{T} is                                                   [class]

   asize1:INT, asize2:INT: Implemented by the compiler.


Public definitions of class ARRAY2: 

asize:INT is
   Undocumented.

clear is
   Clear out the array. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ARRAY3{T} is                                                   [class]

   asize1:INT, asize2:INT, asize3:INT: Implemented by the compiler.


Public definitions of class ARRAY3: 

asize:INT is
   Undocumented.

clear is
   Clear out the array. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ARRAY4{T} is                                                   [class]

   asize1:INT,asize2:INT, asize3:INT, asize4:INT: Implemented
   by the compiler.


Public definitions of class ARRAY4: 

asize:INT is
   Undocumented.

clear is
   Clear out the array. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ARRAY_TEST is                                                  [class]

   A quick check that the array classes work.


Public definitions of class ARRAY_TEST: 

main is
   Undocumented.

array_test is
   Test of one-dimensional arrays.

array2_test is
   Test of two-dimensional arrays.

array3_test is
   Test of three-dimensional arrays.

array4_test is
   Test of four-dimensional arrays. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

BASE_TEST is                                                   [class]

   Test of the base classes.


Public definitions of class BASE_TEST: 

Inherits from: TEST

main is
   Test `BOOL', `CHAR', `INT', `REAL', and `DOUBLE'.

bool_test is
   Test `BOOL'.

char_test is
   Test `CHAR'.

int_test is
   Test `INT'.

real_test is
   Test `REAL'.

double_test is
   Test `DOUBLE'.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

BOOL is                                                        [class]

   `BOOL' defines the routines which are applicable to boolean expressions.
   In addition to `and', `or' and `not' which are built into the Sather
   language, it defines several additional standard binary operations.


Public definitions of class BOOL: 

xor(b:BOOL):BOOL is
   The truth value of `self' exclusive or `b'.

xnor(b:BOOL):BOOL is
   The truth value of `self' exclusive nor `b'.

nand(b:BOOL):BOOL is
   The truth value of `self' nand `b'.

nor(b:BOOL):BOOL is
   The truth value of `self' nor `b'.

implies(b:BOOL):BOOL is
   The truth value of `self' implies `b'.

to_s:STR is
   The string representation of `self'.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

BREAKS is                                                      [class]

   handle the callback to gdb to set up breakpoint commands


Public definitions of class BREAKS: 

satherFileLineBreakpointCommand(fileName:STR;lineNo:INT) is
   given a sather file name and line number, cause
   a break point to occur at the corresponding c file name and line
   number (there might be more than one).

fileNamePortion(path:STR):STR is
   Undocumented.

satherClassFuncBreakpointCommand(className,funcName:STR) is
   given a sather class name and routine name, cause a break point
   to occur at the corresponding c function.
   construct the c name of the function.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CHAR is                                                        [class]

   `CHAR' defines operations on characters. The operations with names of
   the form `is_foo' are predicates which return a boolean value
   depending on whether the character has the specified characteristic.
   This is a general naming convention throughout the Sather libraries.
   As in C, white space characters include space, tab, carriage return,
   newline, vertical tab, or form feed. Printing characters are all
   characters except control characters. Punctuation characters are those
   which are neither control characters nor alphanumeric characters. The
   function `to_i' returns the ASCII value corresponding the character.
   The case conversion routines `to_upper_case' and `to_lower_case' work
   on all characters unlike the versions in many C libraries.


Public definitions of class CHAR: 

is_alphabetic:BOOL is
   True if `self' is an alphabetic character.

is_upper_case:BOOL is
   True if `self' is uppercase.

is_lower_case:BOOL is
   True if `self' is lowercase.

is_digit:BOOL is
   True if `self' is a digit.

is_alphanumeric:BOOL is
   True if `self' is alphanumeric.

is_space:BOOL is
   True if `self' is whitespace.

is_print:BOOL is
   True if `self' is a printing character.

is_punctuation:BOOL is
   True if `self' is punctuation.

is_control:BOOL is
   True if `self' is a control character.

to_i:INT is
   Convert `self' to an integer.

to_s:STR is
   The string representation of `self'.

to_upper_case:CHAR is
   Convert `self' to upper case (always works, unlike the C library).

to_lower_case:CHAR is
   Convert `self' to lower case (always works, unlike the C library).

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CNAME_MAPPING is                                               [class]

   provides routines to get to/from C sather names (C function names
   that have been created foreach sather function) from/to C exported
   names (C function names that have been provided by the user in
   the .sather file in the form of (c_name))


Public definitions of class CNAME_MAPPING: 

cExpNameToIndex:STR_HASH_MAP{INT} := STR_HASH_MAP{INT}::create; [shared]
   Undocumented.

cOrigSatherNames:ARRAY{STR} := ARRAY{STR}::new(10);           [shared]
   Undocumented.

cSatNameToIndex:STR_HASH_MAP{INT} := STR_HASH_MAP{INT}::create; [shared]
   Undocumented.

cExpSatherNames:ARRAY{STR} := ARRAY{STR}::new(10);            [shared]
   Undocumented.

readCNameFile:INT is
   read the cname file into the mapping tables, and return
   1 if everything was successful.

cExpCache:STR := void;                                        [shared]
   Undocumented.

cSatCache:STR := void;                                        [shared]
   Undocumented.

cExp2cSat(cExp:STR):STR is
   return the c sather name corresponding to the c Exported name
   or return void if there is none.

cSat2cExp(cSat:STR):STR is
   return the c exported sather name corresponding to the c sather name
   or return void if there is none.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DBROWSER is                                                    [class]

   browser class


Public definitions of class DBROWSER: 

BROWSECONT:INT := 0;                                        [constant]
   Undocumented.

BROWSESTOP:INT := 1;                                        [constant]
   Undocumented.

NUMRANGES:INT :=  5;                                        [constant]
   Undocumented.

ARRBEGINNING:INT := 0;                                      [constant]
   if in first range pos, start at beginning

ARREND:INT := -1;                                           [constant]
   if in second range pos, start at end

DEFAULTLASTEL:INT := 1;                                     [constant]
   Undocumented.

NUMRANGES:INT := 40;                                        [constant]
   Undocumented.

arrayListRange:ARRAY3{INT} := ARRAY3{INT}::new(4,2,NUMRANGES); [shared]
   Undocumented.

numRanges:ARRAY{INT} := ARRAY{INT}::new(NUMRANGES);           [shared]
   Undocumented.

obMir:DMIRROR;                                                [shared]
   mirror on current object.

tmpObMir:DMIRROR;                                             [shared]
   mirror from arg passed to visit or show

lastFeatIndex:INT;                                            [shared]
   in dotted expr, feat num of last feat it is basic

mirStack:STACK{DMIRROR} := STACK{DMIRROR}::create;            [shared]
   Undocumented.

debVars:STRING_TO_{F_OB} := STRING_TO_{F_OB}::create;         [shared]
   Undocumented.

dbchar:CHAR := '@';                                         [constant]
   Undocumented.

charMatch:DISAMBIG := charMatch.create;                       [shared]
   Undocumented.

initArrSpec(arrBeg0,arrEnd0,arrBegRest,arrEndRest:INT) is
   initialize an array spec to given values.

insertIntoCharMatch is
   insert current object mirrored by obMir into charMatch.

invalidateObMirAndStack is
   invalidate obMir and the visit stack.

invalidateObMir is
   invalidate just obMir

checkObMir:BOOL is
   make sure obMir is good. Return true if it is.

obMirParse(str:STR;showFinal:BOOL):DMIRROR is
   this routine excepts a string and will try to create a mirror
   object (in tmpObMir) based on the contents. `str` can be either
           <CLASSNAME>::<sharedDottedFeature>
   or      dottedFeature of current ObMir
   or      dottedLocalVar
   or      dottedArgofCurrrentFunction

show(buff:STR;showFlag:INT) is
   list OB features of object given by obMir
   'showFlag' tells what else to show
    always show normal attributes and shares.
      showFlag = 0 -> don't show routines or constants
      showFlag = 1 -> show routines too
      showFlag = 2 -> show constants too
      showFlag = 3 -> show both routines and constants

visit(buff: STR): INT is
   visit object of attr given by args

browseVisitArrayEl(buffp: STR_CURSOR) is
   visit array element given by array spec in buffp

leave(buff: STR): INT is
   go up arg number of places visited by 'visit'

array(buff: STR): INT is
   list all of the array enties of reflectee

parseArraySpec(buffp: STR_CURSOR): BOOL is
   return information in a struct rangeStruct_ from a string
   assumed to be in following format for nD arrays.
   1D: [range]
   2D: [range,range]
   3D: [range,range,range]
   4D: [range,range,range,range]
   where range is defined by
     range ->         # default elements
     range -> *       # all elements
     range -> n       # element n
     range -> n -     # element n through the end
     range -> - m     # beginining element through m
     range -> n-m     # element n through m
     range -> range|range # element in both ranges.

doForRange(print: BOOL; com: $DBROWSER_COMMAND; arg: $OB): BOOL is
   do func with arg 'arg' for all elements given in the range spec
   return false if a problem occured.

assign(buff: STR): INT is
   set feat <featnum> of object given by *pp to <value>
   so far, can only set int,float,double values

browseSetDebVar(buffp: STR_CURSOR) is
   set a debugger variable.

browseSetArrayEl(buffp: STR_CURSOR) is
   parse range spec, and set all elements to value given */   

sdvars(buff: STR): INT is
   

location(buff: STR): INT is
   

descendent(arg: STR) is
   show class hierarchy starting at arg

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DBROWSER_COMMAND is                                            [class]

   abstract command class


Public definitions of class DBROWSER_COMMAND: 

func(i,j,k,l:INT;m:DMIRROR;arg:$OB):BOOL is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DBTABLE_READ is                                                [class]

   A class to support the reading of the table produced by class DBTABLE.
   This will not be used in the compiler, but will be by the debugger.


Public definitions of class DBTABLE_READ: 

satherFiles:ARRAY{STR};
   sather source file names and paths used by program.

numSatherFiles:INT;
   Undocumented.

cFiles:ARRAY{STR};
   array of C file names and paths used by program.

numCFiles:INT;
   Undocumented.

mapping:ARRAY{SATFILEENT};
   Undocumented.

lastSatherFileFromCAccess:STR;                                [shared]
   Undocumented.

lastSatherFileLineFromCAccess:INT;                            [shared]
   Undocumented.

create:SELF_TYPE is
   Undocumented.

find(s:STR):SATFILEENT is
   return the SATFILEENT corresponding to sather file `s`.
   if only use the file name portion of the filename in the mapping
   array, thus find("foo.sa") will match "/usr/local/bar/foo.sa"

cacheSize:INT := 8;                                         [constant]
   should be power of 2

c2SathercfCache:ARRAY{STR} := ARRAY{STR}::new(cacheSize);     [shared]
   Undocumented.

c2SatherlnCache:ARRAY{INT} := ARRAY{INT}::new(cacheSize);     [shared]
   Undocumented.

c2SathertiCache:ARRAY{TWOINTS} := ARRAY{TWOINTS}::new(cacheSize); [shared]
   Undocumented.

checkc2SatherCache(cf:STR;lineNo:INT):TWOINTS is
   check the object cache, return void if not there

addToc2SatherCache(cf:STR;lineNo:INT;ent:TWOINTS) is
   add to the object cache

cFileLine2SatherFileLine(cf:STR;lineNo:INT):TWOINTS is
   return a TWOINTS class with the it's fileName and linenumber
   attributes set to the Sather file and line number
   corresponding to the C file name and line number given as arguments
   to this function.

satherFileAndLine(cFileName:STR;cLineNo:INT):STR is
   given a C file name and line number, return the corresponding
   sather file name and line number in the format:
             (satFileName line lineNo)

read(fileName:STR):BOOL is
   

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DISAMBIG is                                                    [class]

   for a list of strings, return number of one that is not ambiguous.
   optional description for each.


Public definitions of class DISAMBIG: 

index:INT;
   Undocumented.

names:ARRAY{STR};
   Undocumented.

descr:ARRAY{STR};
   Undocumented.

tags:ARRAY{BOOL};
   Undocumented.

create:DISAMBIG is
   

insert(s,des:STR) is
   insert string

clear is
   clear this

strNum(s:STR):INT is
   return position given partially complete string s

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DMIRROR is                                                     [class]

   Mirror class for objects living in the inferior process.


Public definitions of class DMIRROR: 

inf_ob:F_OB;
   pointer to object in inferior process.

ob_type:INT;
   type of object being pointed to.

basicMirror:BOOL;
   true if this DMIRROR is mirroring a basic object

sysIsInit:BOOL := false;                                      [shared]
   true if the SYS class has been initialized

create(p:F_OB):DMIRROR is
   Create a mirror object instance on another object that is not basic.
   return non void if sucessful.

create_v(typ:INT):DMIRROR is
   create a MIRROR on a void object (not basic). Supply back a limited
   mirror that can only effect shared members.

create_b(obPtr:F_OB;typ:INT):DMIRROR is
   create a DMIRROR on a basic object. In this case, obPtr is
   the address in the inferior memory of the basic object (i.e.
   a pointer to an int, float, ...) and typ is the sather type
   of the basic object. Return void if error.

infObHeader(forceName:STR):STR is
   return a standard STR description of object being mirrored.
   use forceName as a name if non void.

infObFeatHeader(f:INT):STR is
   return a standard STR description of a feature of the object
   being mirrored.

reflectee:F_OB is
   Return the object that the mirror is reflecting.  

numFeats:INT is
   Return the number of features of the reflectee.

featIndex(fname:STR):INT is
   return index of featur 'fname' in object, -1 if not found

isFeatureBasic(f:INT):BOOL is
   return true if feature f of reflectee is a basic class, false if not.

isObjectFeature(f:INT):BOOL is
   return true if object being mirrored is an object feature
   (that is, not basic and not a routine)

featureAddr(f:INT):F_OB is
   return the CORE address of feture 'f', return void if feature
   is invalid (or a routine)

featureVal(f:INT):F_OB is
   return value of feature f of reflectee if it is non basic, void if it is

setFeatureVal(f:INT;val:F_OB):BOOL is
   set the feature (that must not be basic) to value.

newMirrorOf(f:INT):DMIRROR is
   Return a mirror on the contents of the specified feature of 
   the reflectee.   
   return void if error.

objectType:STR is
   Return string name of reflectee

featureStrName(i:INT):STR is
   Return string name of the feature i in the reflectee
   return void if bad feat

featureType(f:INT):INT is
   return the type of the feature, or -1 if error
   return 0 if it is a routine.

featureStrType(f:INT):STR is
   return string form of type of feature f in reflectee
   return void if bad feat num
   return "ROUTINE" if routine

strVal:STR is
   Return the string form of value of reflectee

featureStrVal(i:INT):STR is
   Return string form of value of feature i in reflectee.
   return "" if it is a routine.

setFeatureStrVal(val:STR;i:INT):BOOL is
   Write value of feature i given string form of value. If bad
   form, return false, otherwise return true.

assignable(f:INT):BOOL is
   Test if the specified feature of reflectee is assignable
   right now, only basic features are assignable

featureCategory(f:INT):INT is
   Return kind of feature i of reflectee (shared,const,attribute,routine).

isDecendantOf(arg:F_OB):BOOL is
   Return true if object in argument is a descendent of reflectee.

arrDimension:INT is
   Return dimension of array of reflectee (0 if not array object).

arrBasic:BOOL is
   return true if arr type is basic.

asize(d:INT):INT is
   return the array size for dimension 0 < d <= 4, or 0 if not defined
   on dimension d

arrType:INT is
   

arrTypeStr:STR is
   return the string form of the array type of this object, or
   return "" if no array type.

arrStrVal(i,j,k,l:INT):STR is
   Return string form of value of position (i,j,k,l) in array.
   if less d's than 4, use num needed. 

arrVal(i,j,k,l:INT):F_OB is
   return object in $ALL of array element for array
   or void if error

arrEntryAddr(i,j,k,l:INT):F_OB is
   return the address in the inferior process of the array entry
   or void if error

setArrVal(i,j,k,l:INT;val:F_OB):BOOL is
   set array el of value from a F_OB, array element type of object
   can't be basic

setArrStrVal(i,j,k,l: INT; val: STR): BOOL is
   Write value of position (i,j,k,l) given string form of value. If bad
   form, return false, othrwise return true.

arrMirror(i,j,k,l: INT): DMIRROR is
   Return mirror on array element (i,j,k,l), or void if basic
   or non array type type.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DOUBLE is                                                      [class]

   `DOUBLE' defines operations on double-precision real numbers.
   It has routines corresponding to those in `REAL' and they obey
   the same restrictions.
   More exotic special functions are defined in the `MATH' class.
   `REAL''s and `DOUBLE''s are generally interchangable and the compiler
   will properly convert between them. `pow(x)' computes `self' raised to
   the power of `x'. It requires that `x' be larger than `0' if `self' is
   equal to zero and that `self' be non-negative if `x' is not an
   integer. `sqrt' computes the square root and requires that `self'
   be non-negative. `to_i', `floor', `ceiling', and `round' compute
   the four natural ways to approximate a floating point value by an
   integer. `mod(x)' computes the floating point remainder of `self'
   divided by `x' and has the same sign as self.


Public definitions of class DOUBLE: 

to_r:REAL is
   Convert to a `REAL'.

to_i:INT is
   Nearest integer toward zero (sometimes called "truncate").

to_s:STR is
   The string representation of `self'.

max(r:DOUBLE):DOUBLE is
   The maximum of `self' and `r'.

min(r:DOUBLE):DOUBLE is
   The minimum of `self' and `r'.

pow(x:DOUBLE):DOUBLE is
    Returns `self' raised to the power of `x'. Error if
   `self=0' and `x<=0' or if `self<0' and `x' is not an `INT'.

sqrt:DOUBLE is
   The square root of `self', `self>=0'.

floor:INT is
   Largest integer not greater than `self'.

ceiling:INT is
   Smallest integer not less than `self'.

round:INT is
   Closest integer to `self'.

abs:DOUBLE is
   The absolute value of `self'.

mod(x:DOUBLE):DOUBLE is
   The floating point remainder of `self/x' with the same sign
   as `self'.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DSYS is                                                        [class]

   Interface to information of classes/runtime objects.
   Naming convention:
   "cl_" : Related to class information
   "f_" : Related to feature information


Public definitions of class DSYS: 

browser_mode:INT := 1;                                      [constant]
   Undocumented.

interpreter_mode:INT := 2;                                  [constant]
   Undocumented.

debugger_mode:INT := 4;                                     [constant]
   Undocumented.

Attribute:INT := 1;                                         [constant]
   Undocumented.

Routine:INT := 2;                                           [constant]
   Undocumented.

Shared:INT := 3;                                            [constant]
   Undocumented.

Constant:INT := 4;                                          [constant]
   Undocumented.

B_FILE_MISSING_ERR_:INT := 9;                               [constant]
   Undocumented.

cl_table:ARRAY{STR};                                          [shared]
   Undocumented.

cl_rev_table:STR_HASH_MAP{INT};                               [shared]
   Undocumented.

nm_table:ARRAY{STR};                                          [shared]
   Undocumented.

nm_rev_table:STR_HASH_MAP{INT};                               [shared]
   Undocumented.

initialized:BOOL := false;                                    [shared]
   Undocumented.

inf_prog_name:STR;                                            [shared]
   Name of directory where program is stored.

inf_prog_dir:STR;                                             [shared]
   Number of classes given in runtime initialization.

inf_num_classes:INT;                                          [shared]
   Largest name index generated within the program.

inf_max_name_index:INT;                                       [shared]
   dispatch table size

inf_dispatch_table_size:INT;                                  [shared]
   Undocumented.

inf_cl_feat_num(i:INT):INT is
   Undocumented.

inf_cl_ctype(i:INT):INT is
   Undocumented.

inf_cl_arr_satype(i:INT):INT is
   Undocumented.

inf_cl_fullname(i:INT):INT is
   Undocumented.

inf_cl_feat_name(i,j:INT):INT is
   Undocumented.

inf_cl_feat_cat(i,j:INT):INT is
   Undocumented.

inf_cl_feat_satype(i,j:INT):INT is
   Undocumented.

stripOffHeading(s:STR):STR is
   strip of heading "/tmp_mnt", this is *very* ICSI independant.
   It is necessary because of the way we at ICSI use the automounter
   and the way that the get current dir system call works.
   here is some mail describing the problem:
  
   [bilmes@icsib4 (automounter) Mar 25, 20:49]
  | Hi. I it possible to set up the automounter so that on "hostx", we
  | can access a directory /tmp_mnt/n/hostx as well as on "hosty". Or
  | will we need to put slinks in each /tmp_mnt/n/hostx to /n/hostx on
  | each machine? The problem I'm having is that when the Sather compiler
  | compiles a program on hostx in a directory on a local disk
  | on hosty, and when the debugger (running on hosty) looks at the directory,
  | it tries to access the directory /tmp_mnt/n/hosty/... instead of /n/hosty/...
  | This was a problem I had with some RAP software and I hacked it so
  | that if the directory started with /tmp_mnt, it would strip it
  | off. That's not a general (or good) solution though.
  
  [stolcke@ICSI.Berkeley.EDU (Re: automounter) Mar 25, 21:02]
  |
  | I don't think your problem has a good solution right now.  You cannot
  | put any extra links in /tmp_mnt because that directory is entirely
  | managed by automount to create temporary mount points.  Putting anything
  | in there will confuse automount.
  |
  | Stripping off /tmp_mnt is a less that optimal solution, but I think it's
  | the best one right now.  I use it in pmake, e.g., to determine the cwd.
  | The prefix to be stripped should probably be adjustable by an option
  | or similar.
  |
  | A more general, but far more involved solution would be a kernel hack.
  | The automounter would call the kernel to indicate that a certain directory
  | (e.g., /tmp_mnt) should be made transparent to getwd() calls.  chroot(2)
  | provides something along these lines, but is not quite what you want.
  
  Other future possibilities are:
  
  1. When the sun source arrives, hack getwd() in the C library to provide
     this service.
  2. Hack the automounter to invert it's logic.
  3. Adopt amd to replace the automounter and hack that to invert the logic.
  None of these are really doable just now, but it is a common problem that
  rears it's head often.
   Bryan Costales - Systems Manager - International Computer Science Institute
   Internet:(work) costales@icsi.berkeley.edu     (home) bcx@lady.berkeley.edu

init:BOOL is
   Read the class name/index mapping from generated info file.
   Return false if there is an error.
   Read the name/index mapping from generated info file.

cl_index(nm:STR):INT is
   Class index from name string, or return 0 if no class by this name.

cl_str_name(i:INT):STR is
   Class string name from index.

cl_base_size(i:INT):INT is
   Base size of class using class index.
   res := C::safe_ob_base_size_(i, 0);

cl_ctype(i:INT):INT is
   C type of basic/non-basic class.
   res := C::safe_cl_ctype_(i, 0);

cl_feat_num(i:INT):INT is
   Number of features in class.
   res := C::safe_cl_feat_num_(i,0);

cl_arr_dim(i:INT):INT is
   Array dimension of class.
   res := C::safe_ob_arr_dim_(i, 0);

cl_arr_ctype(i:INT):INT is
   C type of array elements.
   res := C::safe_ob_arr_ctype_(i, 0);

cl_attr_num(i:INT):INT is
   Number of attributes in class.
   res := C::safe_ob_attr_num_(i, 0);

cl_attr_ctype(ci,a:INT):INT is
   C type of attribute in class.
   res := C::safe_ob_attr_ctype_(ci, a, 0);

cl_arr_satype(i:INT):INT is
   Sather type (class index) of array element.
   res := C::safe_cl_arr_satype_(i, 0);

is_a_des_of(i,j:INT):BOOL is
   res := C::safe_is_a_des_of_(i,j,0);

f_str_name(ci,f:INT):STR is
   String name of feature.

f_category(ci,f:INT):INT is
   Kind of feature (ie shared/constant/attribute/routine).
   res := C::safe_cl_feat_cat_(ci,f,0);

f_index(ci:INT; f:STR):INT is
   Index of given feature within class if found, -1 otherwise.

f_satype(ci,f:INT):INT is
   Sather type (class index) of shared/constant/attribute, 
   or 0 if it is a routine.

f_ctype(ci,f:INT):INT is
   C type of shared/constant/attribute, or 0 if it is a routine.

f_location(ci,f:INT):INT is
   Returns the following:
   1) Shared/Constant -- Address of global variable
   2) Attribute -- Offset of attribute
   3) Routine -- Address of routine

get_dispatch(ci,name:INT):INT is
   Undocumented.

arr_type_is_basic(ici:INT):BOOL is
    return true if class given by ici is a basic type

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ERR is                                                         [class]

   Direct access to stderr.


Public definitions of class ERR: 

file:FILE := FILE::err;                                       [shared]
   A file object for stderr.

b(bo:BOOL):ERR is
   Undocumented.

c(ch:CHAR):ERR is
   Undocumented.

i(in:INT):ERR is
   Undocumented.

s(st:STR):ERR is
   Undocumented.

r(re:REAL):ERR is
   Undocumented.

d(do:DOUBLE):ERR is
   Undocumented.

nl:ERR is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

FEATTOKEN is                                                   [class]

   class that is used to parse features of objects.
   given a STR, will tokenize and return types of each correctly
   parsed token, or will have an error.


Public definitions of class FEATTOKEN: 

origParseStr:STR;
   the original parse string

curParseStr:STR;
   the current parse string

curParseStrLen:INT;
   the current parse string length

errorStr:STR;
   Undocumented.

ERROR:INT := -1;                                            [constant]
   initializer, and token type when error

DONE:INT := 0;                                              [constant]
   set when done

CREF:INT := 1;                                              [constant]
   class reference

SYM:INT := 2;                                               [constant]
   symbol

AREF:INT := 3;                                              [constant]
   array reference

RSUCCESS:INT := 0;                                          [constant]
   Undocumented.

RFAIL:INT := 1;                                             [constant]
   Undocumented.

RERROR:INT := 2;                                            [constant]
   Undocumented.

curToken:STR;
   the type of the current token

curTokenType:INT;
   Undocumented.

arrDim:INT;
   the values of the array spec

arrVals:ARRAY{INT};
   Undocumented.

crefSeen:BOOL;
   Undocumented.

create(str:STR):FEATTOKEN is
   return a new FEATTOKEN, or return void if str is void

nextToken is
   parse the next token

isThereANextToken:BOOL is
   returns true if there is a possibility of there being
   a next token.

checkCref:INT is
   check if the current token is a CREF, a "CLASSNAME::" token
   return true if 

checkAref:INT is
   check if the current token is an array reference, i.e.
   something like [4,5,3] or [3]

checkSymbol:INT is
   check if the current token is a symbol.

setNewCurParseStr(str:STR) is
   set the new current parse string

indexOfSpecial(str:STR):INT is
   return the first index in the string of any of the following chars
      [ ] , . :

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

FILE is                                                        [class]

   Sather representation of Unix file structure.


Public definitions of class FILE: 

fp:F_OB;
   A C pointer to the file

name:STR;
   The name of the file.

eof:INT:=-1;                                                [constant]
   C marker for end of file.

error_val:INT;                                                [shared]
   Error code for Sather read errors.

read_error:INT := 1;                                        [constant]
   Error while attempting to read.

eof_error:INT := 2;                                         [constant]
   Hit end of file while attempting to read.

open_error:INT := 3;                                        [constant]
   Error in opening file.

error:INT is
   0 if no error on last operation. Error code otherwise. Clears err.

create:SELF_TYPE is
   A new unitialized file object.

in:SELF_TYPE is
   A FILE object for stdin.

out:SELF_TYPE is
   A FILE object for stdout.

err:SELF_TYPE is
   A FILE object for stderr.

check_eof:BOOL is
   True if eof has been previously read. Clear the status.

get_c:CHAR is
   Read a character. No checking for eof. Must use check_eof.

get_ci:INT is
   Read a character as an integer. 

get_b:BOOL is
   Read "T" or "F". False and error if neither.

get_i:INT is
   Read an integer.

get_r:REAL is
   Read a real number.

get_d:DOUBLE is
   Read a double.

get_s:STR is
   Read a string up to the next \n.

get_s_up_to(c0:CHAR):STR is
   Read a string up to (but excluding) the next character given
   by c0.

unget_c(ch:CHAR) is
   Unget the last character.

b(bo:BOOL):SELF_TYPE is
   Output "T" or "F" and return the file.

c(ch:CHAR):SELF_TYPE is
   Output a character.

i(in:INT):SELF_TYPE is
   Output an int.

s(st:STR):SELF_TYPE is
   Output a string.

r(re:REAL):SELF_TYPE is
   Output a real.

d(do:DOUBLE):SELF_TYPE is
   Output a double.

nl:SELF_TYPE is
   Undocumented.

open_for_read(nm:STR) is
   Open the named file for reading.

open_for_write(nm:STR) is
   Open the named file for writing.

open_for_append(nm:STR) is
   Open the named file for appending.

close is
   Close the file.

get_s_of_len(n:INT):STR is
   Read at most n characters.

flush is
   Flush the buffer.

open_pipe_for_read(command:STR) is
   Open a pipe for reading with given sh shell command line.

open_pipe_for_write(command:STR) is
   Open a pipe for writing with given sh shell command line.

close_pipe is
   Close a pipe.

seek_relative(n:INT) is
   Move in the file relative to current location.

seek_from_front(n:INT) is
   Move relative to front of file.

seek_from_end(n:INT) is
   Move relative to end of file.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

FOO is                                                         [class]

   dummyclass


Public definitions of class FOO: 

i:INT;
   Undocumented.

d:DOUBLE;
   Undocumented.

c:CHAR;
   Undocumented.

print is
   

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GLOBALS is                                                     [class]

   Undocumented.


Public definitions of class GLOBALS: 

satherFunctionFromCFunction(cnosf: STR; obVal: F_OB): STR is
   Return the Sather function name given a C function (cnosf, C name
   of Sather function) name that
   has been translated from a sather function name. Assume the Sather C
   funtion is of the form:
   <1st 3 chars of class><satherClassNum><underscore><class routine name>
   if obVal /= -1, assume that is the object value, and use that
   in <> chars after the class name.

extractFileFromPath(path:STR):STR is
   given a path/file in the form /foo/bar/baz/spoons.sa
   return spoons.sa

int2hexSTR(i:INT):STR is
   convert an integer to a string of the form 0x...

printSatherTypeAndObject(object:F_OB) is
   print sather type and object in the form
   <Sather Class Name> = <hex value>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

IN is                                                          [class]

   Direct access to stdin.


Public definitions of class IN: 

file:FILE := FILE::in;                                        [shared]
   A file object for stdin.

get_c:CHAR is
   Undocumented.

get_b:BOOL is
   Undocumented.

get_i:INT is
   Undocumented.

get_r:REAL is
   Undocumented.

get_d:DOUBLE is
   Undocumented.

get_s:STR is
   Undocumented.

unget_c(ch:CHAR) is
   Undocumented.

check_eof:BOOL is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

INT is                                                         [class]

   `INT' defines operations on integers. The operations built
   into Sather include addition, subtraction, multiplication, and
   division. The syntax of a dotted routine call makes it natural for
   infix operations (eg. `15.mod(8)'). The `mod' routine produces the
   mathematical modulo operation on arbitrary integers. The `u_mod'
   operation agrees with it on positive integers and executes more
   quickly. The `to_s' routine produces a string representation of self,
   but it is more common to append an integer to an existing string as in
   `my_string.i(15)'. The routines with name of the form `bit_foo'
   perform boolean operations bitwise on the integer. `lshift' and
   `rshift' insert 0's into locations shifted from the edge of the
   integer. `arith_rshift' inserts 1's in case the integer is negative.
   The `sqrt' routine must be applied to a non-negative argument.
   Many of these operations are implemented as macros and do not have
   the overhead of a function call.


Public definitions of class INT: 

u_mod(i:INT):INT is
   Fast version of modulo `i'. Always ends up in range [0, i) but 
   on negatives the value is shifted by (2^32 mod i) from true modulo.

mod(i:INT):INT is
   Remainder when `self' is divided by `i' (works on negative `INT''s). 

to_r:REAL is
   Convert to `REAL'.

to_d:DOUBLE is
   Convert to `DOUBLE'.

to_c:CHAR is
   Convert to `CHAR'.

to_s:STR is
   The string representation of `self'.

bit_and(i:INT):INT is
   The bitwise "and" of `self' and `i'.

bit_or(i:INT):INT is
   The bitwise "or" of `self' and `i'.

bit_xor(i:INT):INT is
   The bitwise "exclusive or" of `self' and `i'.

bit_not:INT is
   Return `self' with its bits inverted.

lshift(i:INT):INT is
   The bits of `self' shifted left `i' places.

rshift(i:INT):INT is
   The bits of `self' shifted right `i' places.

arith_rshift(i:INT):INT is
   The bits of `self' arithmetically shifted right `i' places.
   If `i' is negative, inserts ones.

abs:INT is
   Absolute value.

nth_bit(n:INT):BOOL is
   True if the `n'th bit of `self' is 1.

set_nth_bit(n:INT):INT is
   Return `self' with the `n'th bit set.

unset_nth_bit(n:INT):INT is
   Return `self' with the `n'th bit unset.

max(i:INT):INT is
   The maximum of `self' and `i'.

min(i:INT):INT is
   The minimum of `self' and `i'.

pow(i:INT):INT is
   Integer approximation of `self' to the `i'th power.

sqrt:INT is
   Integer approximation of the square root of `self'.

to_octal:STR is
   The octal representation of `self' of the form `"015"'.
   `self' is interpreted as an unsigned integer.

to_binary:STR is
   The binary representation of `self' of the form `"100100"'.
   `self' is interpreted as an unsigned integer.

to_hex:STR is
   The hexadecimal representation of `self' of the form `"0x5A"'.
   `self' is interpreted as an unsigned integer.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MIRROR_TST is                                                  [class]

   Undocumented.


Public definitions of class MIRROR_TST: 

c:CHAR;
   Undocumented.

b:BOOL;
   Undocumented.

i:INT;
   Undocumented.

r:REAL;
   Undocumented.

d:DOUBLE;
   Undocumented.

str:STR;
   Undocumented.

ia:ARRAY{INT};
   Undocumented.

da2:ARRAY2{DOUBLE};
   Undocumented.

ci:INT := 5;                                                [constant]
   Undocumented.

sa:ARRAY{INT} := ARRAY{INT}::new(5);                          [shared]
   Undocumented.

create:SELF_TYPE is
   Undocumented.

test is
   test the MIRROR class

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MYC is                                                         [class]

   Undocumented.


Public definitions of class MYC: 

Inherits from: C

foo is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MYDOUBLE is                                                    [class]

   Undocumented.


Public definitions of class MYDOUBLE: 

Inherits from: DOUBLE

plus(mydoub:MYDOUBLE):MYDOUBLE is
   

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MYINT is                                                       [class]

   Undocumented.


Public definitions of class MYINT: 

Inherits from: INT

plus(myint:MYINT):MYINT is
   

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

OUT is                                                         [class]

   Direct access to stdout.


Public definitions of class OUT: 

file:FILE := FILE::out;                                       [shared]
   A file object for stdout.

b(bo:BOOL):OUT is
   Undocumented.

c(ch:CHAR):OUT is
   Undocumented.

i(in:INT):OUT is
   Undocumented.

s(st:STR):OUT is
   Undocumented.

r(re:REAL):OUT is
   Undocumented.

d(do:DOUBLE):OUT is
   Undocumented.

nl:OUT is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PRINTCOMMAND is                                                [class]

   print array el given by value


Public definitions of class PRINTCOMMAND: 

Inherits from: DBROWSER_COMMAND

func(i,j,k,l:INT;m:DMIRROR;arg_ob:$OB):BOOL is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

REAL is                                                        [class]

   `REAL' defines operations on single-precision real numbers.
   More exotic special functions are defined in the `MATH' class.
   `REAL''s and `DOUBLE''s are generally interchangable and the compiler
   will properly convert between them. `pow(x)' computes `self' raised to
   the power of `x'. It requires that `x' be larger than 0 if `self' is
   equal to zero and that `self' be non-negative if `x' is not an integer.
   `sqrt' computes the square root and requires that `self' be
   non-negative. `to_i', `floor', `ceiling', and `round' compute the four
   natural ways to approximate a floating point value by an integer.
   `mod(x)' computes the floating point remainder of `self' divided by
   `x' and has the same sign as `self'.


Public definitions of class REAL: 

to_d:DOUBLE is
   Convert to a `DOUBLE'.

to_i:INT is
   Nearest integer toward zero (sometimes called "truncate").

to_s:STR is
   The string representation of `self'.

max(r:REAL):REAL is
   The maximum of `self' and `r'.

min(r:REAL):REAL is
   The minimum of `self' and `r'.

pow(x:REAL):DOUBLE is
    Returns `self' raised to the power of `x'. Error if
   `self=0' and `x<=0' or if `self<0' and `x' is not an `INT'.

sqrt:DOUBLE is
   The square root of `self', `self>=0'.

floor:INT is
   Largest integer not greater than `self'.

ceiling:INT is
   Smallest integer not less than `self'.

round:INT is
   Closest integer to `self'.

abs:DOUBLE is
   The absolute value of `self'.

mod(x:DOUBLE):DOUBLE is
   The floating point remainder of `self/x' with the same sign as
   `self'.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SATFILEENT is                                                  [class]

   Undocumented.


Public definitions of class SATFILEENT: 

satFileEnts:ARRAY{SATLINEENT};
   Undocumented.

numEnts:INT;
   Undocumented.

defaultLineEntries:INT := 200;                              [constant]
   Undocumented.

create:SELF_TYPE is
   

find(lineNo:INT):SATLINEENT is
   Find the SATLINEENT in satFileEnts whos line number is either equal to
   or the greatest number less than lineNo.
   Do binary search since there could be many line numbers.

add(s:STR) is
   add a sather file entry by parsing string which
   is assumed to be of the form:
       satherLineNo<space>cFileNameIndex<colon>cLineNumber
   with possible repeating <space>cFileNameIndex<colon>cLineNumber

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SATLINEENT is                                                  [class]

   Undocumented.


Public definitions of class SATLINEENT: 

satLineNo:INT;
   sather line for this file

numEnts:INT;
   Undocumented.

cFileEnts:ARRAY{TWOINTS};
   array of C file entries.

create:SELF_TYPE is
   

add(cur:STR_CURSOR) is
   add data from string provided by cur which is assumed to be in regex form:
     (<int>:<int>)+

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SDB is                                                         [class]

   Undocumented.


Public definitions of class SDB: 

dbtr:DBTABLE_READ;                                            [shared]
   Undocumented.

parseArgs(args:ARRAY{STR}):BOOL is
   Only return true if we have a valid executable file and
   if there are no other errors processing core file (or any other
   option).

main(args:ARRAY{STR}) is
   start the debugger.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SOURCE is                                                      [class]

   this class contains various routines that will get information
   about sather source files and lines.


Public definitions of class SOURCE: 

printSourceLine(fileName:STR;sourceLineNum:INT) is
   Prints the source line `sourceLineNum` of file `fileName`

identifySourceLine(fileName:STR;sourceLineNum:INT):INT is
   prints information in the form:
   \032\032filename:line:charpos\n
   so that emacs sdb mode can locate the source line in the file.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

STR is                                                         [class]

   Sather strings are simply arrays of characters in which all characters
   following the last character of the string are equal to `\000'.  Each
   string must have at least one such character for compatibility with C
   strings. The primary means for constructing strings in Sather is to
   append strings constructed from entities to the end of existing
   strings. The amortized doubling technique is used to automatically
   allocate space for strings. This means that if there is not room in a
   string for the characters which need to be appended, a new string with
   twice as many characters is allocated and the original characters are
   copied over. By the time a string constructed by repeated appending
   gets to be of length n, at most O(log n) such extensions will have
   been made, the total number of copied characters is O(n) as is the
   amount of wasted space and garbage to be collected by the collector.
   Thus the costs per character are constant when amortized over the
   construction of an entire string. Because all characters following the
   end of a string are equal to 0, the end of the string is found by
   binary search. This allows the system to determine the length of
   strings in O(log n) time without the space and time overhead of
   explictly storing and updating the length.
   
   Most strings are constructed by appending component strings together.
   For example,
   
   ``s:STR:="The floor of ".r(15.3).s(" is ").i(15).c('.').nl;''
   
   sets the string `s' to `"The floor of 15.3 is 12.\n"'. Each of the
   appending routines: `b', `c', `s', `i', `r', `d', and `nl' return
   the new string. These operations work by amortized doubling and
   potentially destroy the original string. To append to an existing
   string without destroying it, one may use `copy' in an expression like:
   
   `s2:=s1.copy.s(" appended part")'.
   
   Reals and doubles are converted to strings with a precision given by
   the shared integer `precision'. If `precision' is equal to `0' then
   only the integer part of a `REAL' is put into the string. Whenever this
   variable is set, future constructions use the new value until it is
   changed again. In strings, the boolean values `true' and `false' are
   represented by `"T"' and `"F"'. `cursor' produces an object of type
   `STR_CURSOR' which points at the head of the string and is used to
   sequentially read out its components.


Public definitions of class STR: 

Inherits from: ARRAY

precision: INT := 6;                                          [shared]
   Digits of precision in printing `REAL''s.
   If `precision=0', then print `REAL''s as `INT''s.

create: SELF_TYPE is
   An empty string.

create_sized(n: INT): SELF_TYPE is
   An empty string with room for `n' characters (including the end
   terminator).

b(bo: BOOL): STR is
   A string with 'T' or 'F' appended according to the value of `bo'.

c(ch: CHAR): STR is
   A string with character `ch' appended.

s(st: STR): STR is
   A string with `st' appended.

i(in: INT): STR is
   A string with integer `in' appended.

r(re: REAL): STR is
   A string with the `REAL' `re' appended.

d(do: DOUBLE): STR is
   A string with the `DOUBLE' `do' appended.

nl: STR is
   A string with a newline character appended to `self'.

is_equal(st: STR): BOOL is
   True if `self' is the same string as `st'.

is_less_than(st: STR): BOOL is
   True if `self' is lexicographically before `st'.

to_upper_case: STR is
   Converts all characters in `self' to upper case.

to_lower_case: STR is
   Converts all characters in `self' to lower case.

capitalize: STR is
   Capitalize all the words in `self'.

is_upper_case: BOOL is
   True if all alphabetic characters in `self' are capitalized.

head(n: INT): STR is
   A new string consisting of the first `n' letters of `self'.

tail(n: INT): STR is
   A new string consisting of the last `n' letters of `self'.

length: INT is
   The current length of `self' (not including trailing '\0').

substring(n,m: INT): STR is
   The substring between characters `n' and `m' inclusive. (`n<=m').

index_of_char(ch: CHAR): INT is
   The index of the first appearance of `ch' in `self' or `-1' if
   absent.

reverse: STR is
   Reverse the order of the characters in `self'. Return `self'.

is_empty: BOOL is
   True if `self' has no characters.

to_i: INT is
   The `INT' of which `self' is a representation.

to_r: REAL is
   The `REAL' of which `self' is a representation.

to_d: DOUBLE is
   The `DOUBLE' of which `self' is a representation.

to_b: BOOL is
   The `BOOL' of which `self' is a representation.
   (ie. has value `true' if `"T"' and `false' if `"F"').

to_c: CHAR is
   The `CHAR' of which `self' is a representation.

from_c_str(st: F_OB): STR is
   Returns a Sather string corresponding to the C string whose 
   pointer is `st'. Used internally.

cursor: STR_CURSOR is
   A cursor into `self'.

hash: INT is
   An inexpensive to compute hash function of `self'.
   Gives an `INT' with rightmost 24 bits. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

STRING_TO_{T} is                                               [class]

   Undocumented.


Public definitions of class STRING_TO_: 

strings:ARRAY{STR};
   Undocumented.

t_array:ARRAY{T};
   Undocumented.

length:INT;
   Undocumented.

create:SELF_TYPE is
   create one of these

clear is
   reset everything.

insert(s:STR;t:T) is
   

assoc(str:STR):T is
   Undocumented.

getSTR(i:INT):STR is
   get string i

getVal(i:INT):T is
   get value of elementi

list is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

STRSETCOMMAND is                                               [class]

   set array el given by arg


Public definitions of class STRSETCOMMAND: 

Inherits from: DBROWSER_COMMAND

func(i,j,k,l:INT;m:DMIRROR;arg_ob:$OB):BOOL is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

STR_CURSOR is                                                  [class]

   Class for stepping through strings extracting information.
   Throughout the Sather libraries, cursor classes are used to keep
   pointers into container data structures. In each case there is the
   possibility of problems if the the structure is destructively modified
   while a cursor points to its internals. The preferred approach is to
   completely use one or more cursors into a structure before
   destructively modifying it. For strings, cursors are used to
   sequentially read out the components of a string. They may be used to
   perform a similar function to that played by "scanf" in C without need
   for functions with a variable number of arguments.  This approach is
   actually much more general since it allows for testing for the
   presence of an `INT', for example, at a given point in the string.
   
   In typical usage a string cursor pointing to the beginning of the
   string `s' is created by the call `s.cursor' in the string class or by
   `create(st)' in the string cursor class. If the structure of the
   string is precisely known, then a sequence of calls to `get_foo' will
   allow one to extract the known components. White space is skipped over
   in searching for integers, reals and doubles. For example, if the
   string `s' consists of a boolean, three integers, a real and a string
   then these components may be extracted with:
   
   `sc:STR_CURSOR:=s.cursor; b:BOOL:=sc.get_b; i1:INT:=sc.get_i; 
   i2:INT:=sc.get_i; i3:INT:=sc.get_i; r:REAL:=sc.get_r; s1:STR:=sc.get_s;'
   
   If we were wrong about the structure of the string, then the shared
   variable `error' will be set to a non-zero value. Sometimes we are not
   certain of the structure of a string. For example, we may not know
   whether the next field will contain an integer or a real. In this case
   we may use the routines with names of the form `foo_size'. If there is
   no possible entity of the specified type at the current location, such
   calls will return 0. Otherwise they will return the number of
   characters in the specified entity without moving the cursor forward.


Public definitions of class STR_CURSOR: 

s: STR;
   The string we are scanning.

index: INT;
   The index of the current character.

error: INT;
   0 if no errors, an error code otherwise.

create(st: STR): SELF_TYPE is
   Make a scanner for the string `st'.

get_s: STR is
   A string containing characters up to and including the next newline.

b_size: INT is
   `1' if index points at 'T' or 'F', `0' otherwise.

get_b: BOOL is
   Read `"T"' or `"F"' and return `true' or `false'.

get_c: CHAR is
   Read one character.

digits_size(i: INT): INT is
   Number of `CHAR''s starting at `i' which are digits.

i_size: INT is
   Number of `CHAR''s in an integer at `index', `0' if not present.

get_i: INT is
   Read an integer.

r_size: INT is
   Number of `CHAR''s in a `REAL' or `DOUBLE' at `index', `0'
   if not present. Accepts integers as well.

get_r: REAL is
   Read a `REAL'.

get_d: DOUBLE is
   Read a `DOUBLE'.

item: CHAR is
   the current char or void.

first: CHAR is
   Go to the beginning of the string and return the first char.

next: CHAR is
   Move to the next char and return it or void.

space_size(i: INT): INT is
   Number of space characters, tabs, newlines and other ASCII
   whitespace starting at character `i'.

skip_space: STR_CURSOR is
   Move over space, tabs, newlines and other ASCII whitespace and
   return `self'.

is_done: BOOL is
   True if the cursor is at the end of the string.

reassign (str : STR): STR_CURSOR is
   Change the string that `self' points to, return `self'.

c_equals(c: CHAR): BOOL is
   True if the next character is equal to `c'.

c_accept(c: CHAR): BOOL is
   True if the next char is `c'. If so, skip it and any following
   white space.

get_s_cut(cutset: STR): STR is
   String up to and including the next member of `cutset'.

get_word: STR is
   Return string up to but not including white space. Cursor is
   moved past white space.

update_i(x: INT): INT is
   If `get_i' return it and `skip_space', else return `x'.

update_r(x: REAL): REAL is
   If `get_r' return it and `skip_space', else return `x'.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

STR_TEST is                                                    [class]

   Test the classes `STR' and `STR_CURSOR'.


Public definitions of class STR_TEST: 

Inherits from: TEST

main is
   Test the classes `STR' and `STR_CURSOR'.

str_test is
   Test `STR'.

str_cursor_test is
   Test `STR_CURSOR'.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TARRAY{T} is                                                   [class]

   Undocumented.


Public definitions of class TARRAY: 

Inherits from: ARRAY

foo:INT;
   Undocumented.

bar:INT;
   Undocumented.

baz:CHAR;
   Undocumented.

spoons:DOUBLE;
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TEST is                                                        [class]

   class to test the browser


Public definitions of class TEST: 

Inherits from: TESTPARENT

i1:INT;
   Undocumented.

i2:INT;
   Undocumented.

i3:INT;
   Undocumented.

i4:INT;
   Undocumented.

f1:REAL;
   Undocumented.

f2:DOUBLE;
   Undocumented.

c1:CHAR;
   Undocumented.

c2:CHAR;
   Undocumented.

t1:TEST;
   Undocumented.

b1:BOOL;
   Undocumented.

a1:ARRAY{INT};
   Undocumented.

a2:ARRAY2{INT};
   Undocumented.

a3:ARRAY3{INT};
   Undocumented.

a4:ARRAY4{INT};
   Undocumented.

ta1:TARRAY{INT};
   Undocumented.

ota1:TARRAY{TEST};
   Undocumented.

da1:ARRAY{DOUBLE};
   Undocumented.

da2:ARRAY2{DOUBLE};
   Undocumented.

ca1:ARRAY2{CHAR};
   Undocumented.

oa1:ARRAY2{FOO};
   Undocumented.

ba1:ARRAY{BOOL};
   Undocumented.

mi:MYINT;
   Undocumented.

md:MYDOUBLE;
   Undocumented.

fob:F_OB;
   Undocumented.

s:STR := "Hello, this is a shared string\n";                  [shared]
   Undocumented.

nons:STR;
   Undocumented.

sharedINT:INT := 4;                                           [shared]
   Undocumented.

constINT:INT := 3;                                          [constant]
   Undocumented.

srr(i:INT):SELF_TYPE is
   Undocumented.

doit is
   

create:TEST is
   create and initialized a TEST instance

main is
   

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TESTPARENT is                                                  [class]

   Undocumented.


Public definitions of class TESTPARENT: 

parenti:INT;
   Undocumented.

parentj:INT;
   Undocumented.

rout1 is
   Undocumented.

rout2(i:INT) is
   Undocumented.

rout3(i,j,k:INT;l,m:REAL;s:STR) is
   Undocumented.

test:TEST;                                                    [shared]
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TWOINTS is                                                     [class]

   Undocumented.


Public definitions of class TWOINTS: 

fileIndex:INT;
   Undocumented.

lineNum:INT;
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

VISCOMMAND is                                                  [class]

   visit array el given by arg


Public definitions of class VISCOMMAND: 

Inherits from: DBROWSER_COMMAND

lastOb:$OB;
   Undocumented.

func(i,j,k,l:INT;m:DMIRROR;arg_ob:$OB):BOOL is
   Undocumented.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

