\begindata{text,539483276}
\textdsversion{12}
\template{help}
\define{global
}
\chapter{class: a preprocessor 

}
\section{What class is

}\leftindent{
Class is a preprocessor for the class system, which is used to make the 
construction of Andrew system programs possible.


The class system consists of a number of parts including the class 
preprocessor, a library of functions that provide runtime support for 
dynamically loaded objects, and utilities to help create and index the 
dynamically loadable objects.}


\section{Warning}


\leftindent{The class system is used to implement a "poor man's" 
object-oriented programming environment.  This implementation is provided so 
that the Andrew System may be extened by other organizations to make Andrew 
better fit their needs.  Unless you are actively altering the Andrew System, 
you need not concern yourself with the details of the class system.


Please note that the class program is only one of many programs in the class 
subsystem of Andrew.  The class program only processes *.ch (class header 
files) and generates files that are included in other programs that implement 
the Andrew system.

}
\section{Class utilities}


\leftindent{A number of utilities programs are provided with the Andrew class 
system.  These programs are used to convert regular machine readable object 
files into dynamically loadable files, and to create indexes that map the 
files that contain class information to the class names and utilities to test 
the created dynamically loadable objects.


Each of the provided utilities will be described in turn.


\subheading{makedo:}


This utility is used to turn the *.o files produced by compiling the programs 
that implement a class into dynamically loadable object files used by the 
class runtime system.  This utility is a shell script that uses the system 
loader and then calls the utility dofix to do the actual construction of the 
*.do file.


\subheading{dofix:}


This utility will take a *.o file and process it to make a dynamically 
loadable object files used by the class runtime system.  This utility is used 
by the makedo utility.


\subheading{doindex:}


This utility is used to generate indices in directories that contain *.do 
files.  These index files allow the applications to "start-up" faster.  It is 
recommended that all system directories use the indices generated by doindex 
in order to make the system perform better.


These indices are constructed by the Andrew construction system when Andrew is 
installed.  If you have large collections of personal *.do files, you may wish 
to use doindex to improve the performance.


This index facility allows you to selectively use objects from other 
developers' personal directories.  This is done by using the doindex command 
to place an entry in your personal index file that references the other 
person's object.  For more information about this procedure please refer to 
/usr/andrew/doc/class.d.


\subheading{whichdo:}


This utility is similar in spirit to the which command provided by some UNIX 
systems.  This utility will try to initialize the class runtime system in the 
site-specific way, then look along the list of dynamically loadable object 
directories to try to find the object that implements the specified class.


\leftindent{\bold{Note: } Under certain circumstances, whichdo will give the 
wrong answer.  The circumstances which cause this only occur when some other 
subtle error is causing the system to misbehave and you are trying to use 
whichdo to diagnose the problem.  The simple rule is this:  if everything is 
working, whichdo gives the right answer.  If something is broken, so is 
whichdo.}

}
\section{More Documentation

}
\leftindent{If you really need to learn more about the class system, there is 
a document describing it in:


/usr/andrew/doc/class.d}


\section{Related tools}  


Select (highlight) one of the italicized names and choose "Show Help on 
Selected Word" from the pop-up menu to see the help file for:


\leftindent{\italic{\helptopic{runapp}}}


\begindata{bp,537558784}
\enddata{bp,537558784}
\view{bpv,537558784,1771,0,0}
Copyright 1992 Carnegie Mellon University and IBM.  All rights reserved.

\smaller{\smaller{$Disclaimer: 

Permission to use, copy, modify, and distribute this software and its 

documentation for any purpose is hereby granted without fee, 

provided that the above copyright notice appear in all copies and that 

both that copyright notice, this permission notice, and the following 

disclaimer appear in supporting documentation, and that the names of 

IBM, Carnegie Mellon University, and other copyright holders, not be 

used in advertising or publicity pertaining to distribution of the software 

without specific, written prior permission.



IBM, CARNEGIE MELLON UNIVERSITY, AND THE OTHER COPYRIGHT HOLDERS 

DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 

ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT 

SHALL IBM, CARNEGIE MELLON UNIVERSITY, OR ANY OTHER COPYRIGHT HOLDER 

BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 

DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 

WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 

ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 

OF THIS SOFTWARE.

 $

}}\enddata{text,539483276}
