GCOOPE Version 1.0 BASIC Class library by Brian Lee Price Released as Public Domain July, 1994. The class library in the initial Version 1.0 release: Char ShortInt Unsigned LongInt Pointer Dynmem Collection Array LowStream String StdStream Stream File The classes Char, ShortInt, and Unsigned are flag classes, normally requiring no instance memory unless inherited. The other base classes (no ancestors or special functionality) are LongInt, and Pointer. Collection is actually more of a pseudo-class, it is an example of a 'wrapper' class that provides an object oriented interface to standard 'C' library type functions. (In this case the functions are defined in the kernel module listmgr.c). It does not inherit any classes. LowStream is an example of an expansion class. While it does not inherit any classes, any class inheriting LowStream must also have Dynmem as an ancestor. LowStream adds low level stream i/o capability to any Dynmem based class. StdStream is another example of a 'wrapper' class, it provides an object oriented interface to the standard ANSI-C stream i/o library functions. It shares the same interface specification as the Stream class. Stream is a special class, it provides high level stream i/o to any user defined class that has low level stream i/o using the same interface as LowStream. It does not necessarily need to be inherited in order to provide this functionality but in most cases it will prove simpler to inherit it. Dynmem is a low level example of multiple inheritance, while it could be implemented (and probably be more efficient) as a base class, it is very simple to define it in terms of an Unsigned and Pointer child. Note the redefinition of valueOf for both inherited classes by means of renaming them to sizeOf and addressOf. Array class is a child of Dynmem and provides basic dynamic array class functionality. The provided methods can work with items of various sizes but any one array sub- class must use items of the same size. The String class is an especially potent mixture of previously defined classes. It combines an Array with LowStream providing a construct which can be the target of stream i/o operations, be addressed as an array of characters, or be accessed as a string. However, it should be noted that string access is NOT to a null terminated string. The length of the string must be obtained through the lengthOf generic. The last class defined in the initial release class library is the File class. This class inherits the StdStream class and provides automatic file closing for temporary files. The provided classes are not meant to be a complete set of basic class types, nor are they optimized in any way. However, they do serve to illustrate many of the possible operations that can be performed with the GCOOPE framework. Frankly, I'm still experimenting with the capabilities of the system. As I develop higher level constructs, I intend to let the need for a fuller and richer set of base classes and generic methods make itself apparent rather than blindly developing classes and methods that may end up being unneccessary.