The rudiments class library consists of several classes. Some are utility classes, others are designed to be base classes for software.
- daemonprocess - base class for daemons
- filedescriptor - base class for classes that need to interact with file descriptors
- file - base class for classes that need to interact with files
- device - base class for classes that need to interact with device files (files in /dev)
- serialport - base class for classes that need to interact with serial ports
- shmfile - base class for classes that need to interact with shared memory segments as files
- clientserverfactory - class for generating instances of clients and servers
- client - base class for clients
- clientsocket - base class for clients that listen on sockets
- inetclientsocket - base class for inet tcp stream clients
- unixclientsocket - base class for unix tcp stream clients
- modemclient - base class for modem clients
- server - base class for servers
- serversocket - base class for servers that listen on sockets
- inetserversocket - base class for inet tcp stream servers
- unixserversocket - base class for unix tcp stream servers
- modemserver - base class for modem servers
- listener - base class for listening on pools of file descriptors
- environment - environment variable processing class
- commandline - command line processing class
- parameterstring - parameter string processing class
- datetime - date/time processing class
- timezonefile - class for parsing timezone files
- directory - class for opening/closing a directory and traversing it's files and subdirectories
- filesystem - class for gathering filesystem statistics
- logger - class for generating log messages
- permissions - class for generating file permissions
- randomnumber - class for generating random numbers
- regularexpression - class for dealing with regular expressions
- chat - class for chatting with something (such as a modem) over a ste of file descriptors
- crypt - class for password encryption
- dynamiclib - class for loading, unloading and calling functions from dynamically linked libraries
- error - class for retrieving errors that system calls can generate
- intervaltimer - class for interfacing with interval timers
- math - class for performing various math operations
- mutex - class providing an interface to pthreads mutual exclusion locks
- process - class for getting and setting process permissions
- serialportprofile - termios wrapper
- snooze - class for suspending process execution
- signalclasses - classes with methods for managing signals
- sharedmemory - shared memory class
- semaphoreset - semaphore class
- memorymap - class for mapping a file descriptor to a region of memory and manipulating it
- memorypool - class that implements a memory pool
- variablebuffer - class for storing arbitrary length data
- stringbuffer - class for storing arbitrary length strings
- character - class for evaluating and manipulating characters
- charstring -class for manipulating strings
- rawbuffer - class for operating on raw memory buffers
- xmldom - a minimal XML DOM parser
- xmldomnode - an XML DOM tree node
- xmlsax - base class for xml parsers
- dtd - class for processing xml dtd's
- groupentry - container for /etc/group entries
- hostentry - container for /etc/hosts entries
- passwdentry - container for /etc/passwd entires
- protocolentry - container for /etc/protocols entries
- rpcentry - container for /etc/rpc entires
- serviceentry - container for /etc/services entires
- shadowentry - container for /etc/shadow entires
- linkedlist - class for storing data in a doubly linked list
- dictionary - class for storing lists of key/data pairs
As a rule of thumb, the base classes should be inherited from and the utility classes should be instantiated as needed. Some of the utility classes have static methods which can be called directly without instantiating an instance of the class.