# Section 8:
Required Library

The required library documentation consists of a number of functional sub-sections. These are :-

- Introduction - these notes give guidance on how the individual specifications should be read. This does not form part of the specifications themselves.
- Basic - this section includes those general utility classes and abstractions which are needed in almost every other class of the library. However see also Section 7 - Pervasive Classes.
- Binary - all of the abstract concepts of 'storage' units - objects to which no semantics are assigned except that of equality of bit-pattern. These include BIT (but see also Section 7 - Pervasive Classes), OCTET, BINSTR and BIN_CURSOR.
- Codes - this section includes all notions of non-numeric codes which may be used to represent text 'characters' for use by a rendering engine. Such things as code kinds, the classes UNICODE and UTF7, for example, will be found here.
- Concurrent - the classes needed when writing distributed and concurrent programs are contained here.
- Containers - the largest number of individual classes in any one section of the required library are in this group; it has therefore been divided into sub-groups - Arrays, Maps, Lists, etc plus a few just labelled General.
- Cultural - together with the help of the Representation group of classes, all classes needed when specifically handling standard cultural features. The principal class likely to be used by program writers is called LIBCHARS - which, as its name suggests contains the character codes for a number of characters used within external representation of values such as telephone numbers, money, dates and times etc.
- Date-Time - dates, times, time-stamps, elapsed times and timers are all found in this class. One of the most useful features is TIME_STAMP::now.
- FileSys - this group defines classes such as DIRECTORY, FILE_PATH and FILE_LABEL which may be used to set/modify environmental resources in file systems.
- Geometric - this group of classes is incorporated because there is a need to specify a paper size used in the local culture and therefore a RECTANGLE class is needed. However, there are also classes for ANGLE and one and two-dimensional geometric entities. This is likely to be the section most often extended by individual implementations to include further two-dimensional and three dimensional objects.
- IO - this group of classes includes the standard input/output channels as well as file channels. A file cursor mechanism enabling transparent access to the contents of very large files without running out of memory is also provided!
- Non-numeric - this group contains, among other classes such as name and address, the class BOOL (which is separate from the enumeration abstraction also in this group) since it is the foundation on which the stored program concept actually works!
- Numeric - this group includes classes CARD, INT, FLT, etc as well as a few other classes like MONEY and RANGE - which probably wouldn't be expected here.
- Opsys - this contains the three abstract classes which define the way in which the Required Library expects to be able to use underlying services for I/O, Time(rs) and general 'syscalls'.
- Representation - although most of the code in this section will be used via partial class inclusion, this is one of the very important new sections in the required library. Services provided permit the rendering and input of any class in a way which is defined by the local culture in addition to providing an extended Sather text layout mechanism.
- SatherRT - this section contains only the class SYS (which has had a few additions since the ICSI version). It is also the place where any non-Sather interface to the run-time engine is most likely to be implemented.
- Strings - this section defines a number of common string abstractions as well as including several partial classes used in binary and text string implementation.
- Text - as probably expected, classes like CHAR, STR and FSTR appear here (as well as quite a few others).

Documentation for each section is being produced over time. That which is currently available may be browsed by following the links. All of the individual pages exist - but very few have any specification text yet!

| Language Index |  | Library Index

Comments or enquiries should be made to Keith Hopper. Page last modified: Friday, 10 March 2000. |