| ►NG | Low-level classes |
| CArg | A class which holds a represention of the argc/argv command line array, and supports simple command-line parsing |
| CBase64 | A base64 codec class |
| CCleanup | An interface for registering cleanup functions which are called when the process terminates abnormally |
| CCleanupImp | A private implementation class used by G::Cleanup |
| ►CConvert | A static class which provides string encoding conversion functions |
| CThrowOnError | Holds error context information for when convert() may fail |
| Cutf8 | A string wrapper that indicates UTF-8 encoding |
| CCounter | An instance counter to help with leak testing |
| CCounterImp | A private implementation class used by the G::Counter<> class template |
| CDaemon | A class for deamonising the calling process |
| ►CDate | A date (dd/mm/yyyy) class |
| CLocalTime | An overload discriminator class for Date constructors |
| CDateTime | A low-level static class used by Date and Time |
| CDirectory | An encapsulation of a file system directory which allows for iterating through the set of contained files |
| CDirectoryIterator | A Directory iterator |
| CDirectoryIteratorImp | A pimple-pattern implementation class for DirectoryIterator |
| CDirectoryList | A Directory iterator that does all file i/o in one go |
| CEnvironment | A static class to wrap getenv() and putenv() |
| CException | A general-purpose exception class derived from std::exception and containing a std::string |
| CExecutable | A structure representing an external program, holding a path and a set of arguments |
| ►CFile | A simple static class for dealing with files |
| CNoThrow | An overload discriminator class for File methods |
| CFileSystem | Provides information about the local operating system's file system conventions |
| ►CGetOpt | A command line switch parser |
| CLevel | Used by G::GetOpt for extra type safety |
| CSwitchSpec | A private implementation structure used by G::GetOpt |
| CIdentity | A very low-level interface to getpwnam() and the get/set/e/uid/gid functions |
| CIdentityUser | A convenience class which, when used as a private base, can improve readability when calling Identity 'set' methods |
| Climits | A scoping structure for a set of buffer sizes |
| ►CLog | A static class for doing iostream-based logging |
| CLine | A class for adding line number information to the Log output |
| CLogOutput | Controls and implements low-level logging output, as used by the Log interface |
| ►CMd5 | MD5 class |
| CMasked | An overload discriminator for G::Md5::hmac() |
| ►CNewProcess | A static interface for creating new processes |
| CChildProcess | Represents the state of a child process |
| CChildProcessImp | A private implementation class used by G::NewProcess |
| Cnoncopyable | A noncopyable base class (a la boost) |
| ►CPam | A thin abstract interface to the system PAM library |
| CError | An exception class used by G::Pam |
| CItem | A structure used by G::Pam to hold conversation items |
| CPamImp | A pimple-pattern implementation class for Pam |
| CPath | A Path object represents a file system path |
| CPidFile | A class for creating pid files |
| CPipe | A private implementation class used by G::NewProcess |
| ►CProcess | A static interface for doing things with processes |
| CId | Process-id class |
| CIdImp | A private implementation class used by G::Process |
| CNoThrow | An overload discriminator for Process |
| ►CUmask | Used to temporarily modify the process umask |
| CUmaskImp | A private implementation class used by G::Process::Umask |
| CRoot | A class which acquires the process's special privileges on construction and releases them on destruction |
| CSetter | A class to manage a boolean flag while in scope |
| CSignal0 | Part of the slot/signal system |
| CSignal1 | Part of the slot/signal system |
| CSignal2 | Part of the slot/signal system |
| CSignal3 | Part of the slot/signal system |
| CSignalImp | Part of the slot/signal system |
| CSignalSafe | An empty structure that is used to indicate a signal-safe, reentrant implementation |
| CSlot0 | Part of the slot/signal system |
| CSlot1 | Part of the slot/signal system |
| CSlot2 | Part of the slot/signal system |
| CSlot3 | Part of the slot/signal system |
| CSlotBase | Part of the slot/signal system |
| CSlotImp0 | Part of the slot/signal system |
| CSlotImp1 | Part of the slot/signal system |
| CSlotImp2 | Part of the slot/signal system |
| CSlotImp3 | Part of the slot/signal system |
| CSlotOp0 | Part of the slot/signal system |
| CSlotOp1 | Part of the slot/signal system |
| CSlotOp2 | Part of the slot/signal system |
| CSlotOp3 | Part of the slot/signal system |
| CStateMachine | A finite state machine class template |
| CStr | A static class which provides string helper functions |
| CStringMapReader | An adaptor for reading a const StringMap with at() |
| CTest | A static interface for enabling test features at run-time |
| ►CTime | A simple time-of-day (hh/mm/ss) class |
| CLocalTime | An overload discriminator class for Time constructors |
| CXtext | An xtext codec class |
| ►NGAuth | SASL authentication classes |
| CPamImp | A private implementation of the G::Pam interface used by GAuth::SaslServerPamImp, which is itself a private implementation class used by GAuth::SaslServerPam |
| ►CSaslClient | A class for implementing the client-side SASL challenge/response concept |
| CSecrets | An interface used by GAuth::SaslClient to obtain authentication secrets |
| CSaslClientImp | A private pimple-pattern implementation class used by GAuth::SaslClient |
| ►CSaslServer | A class for implementing the server-side SASL challenge/response concept |
| CSecrets | An interface used by GAuth::SaslServer to obtain authentication secrets |
| CSaslServerBasic | An implementation of the SaslServer interface |
| CSaslServerBasicImp | A private pimple-pattern implementation class used by GAuth::SaslServerBasic |
| CSaslServerFactory | Provides a factory function for SaslServer instances |
| CSaslServerPam | An implementation of the SaslServer interface using PAM as the authentication mechanism |
| CSaslServerPamImp | A private implementation class used by GAuth::SaslServerPam |
| CSecrets | A simple interface to a store of secrets as used in authentication |
| CSecretsFile | A implementation class used by GAuth::Secrets |
| CValid | A trivial mix-in interface containing a valid() method |
| ►NGNet | Network classes |
| CAbstractTimer | A timer base class that calls a pure virtual method on expiry |
| CAcceptPair | A class which is used to return a new()ed socket to calling code, together with associated information, and with auto_ptr style transfer of ownership |
| ►CAddress | Encapsulates an IP transport address |
| CBroadcast | An overload discriminator class for GNet::Address |
| CLocalhost | An overload discriminator class for GNet::Address |
| ►CAddressImp | A pimple-pattern implementation class for GNet::Address |
| CSockaddr | Used by GNet::AddressImp to cast between sockaddr and sockaddr_in |
| CAddressStorage | A helper class for calling getsockname() and getpeername() and hiding the definition of sockaddr_storage |
| CAddressStorageImp | A pimple-pattern implementation class for GNet::AddressStorage |
| CBufferedServerPeer | A ServerPeer that does line-buffering on input |
| CClient | A HeapClient class that adds slot/signal signalling, connection/response timeouts, and input line buffering |
| CClientPtr | A smart pointer class for GNet::HeapClient |
| CClientResolver | A resolver class which calls SimpleClient::resolveCon() when done |
| CConnection | An interface which provides address information for a network connection |
| ►CConnectionLookup | A class for getting more information about a connection from the operating system |
| CConnection | Holds information provided by GNet::ConnectionLookup::find() |
| CDatagramSocket | A derivation of Socket for a connectionless datagram socket |
| CDescriptor | A network file descriptor |
| CEventHandler | A base class for classes that handle asynchronous socket events |
| CEventHandlerList | A class which can be used in the implemention of classes derived from GNet::EventLoop |
| CEventLoop | An abstract base class for a singleton that keeps track of open sockets and their associated handlers |
| CFdSet | An "fd_set" wrapper type |
| CHeapClient | A SimpleClient class for client objects that manage their own lifetime on the heap |
| CLineBuffer | A class which does line buffering |
| CLineBufferIterator | An iterator class for GNet::LineBuffer |
| CLocal | A static class for getting information about the local machine's network name and address |
| CLock | A private implementation class used by GNet::Select to lock data structures in the face of reentrancy |
| CMonitor | A singleton for monitoring SimpleClient and ServerPeer connections |
| CMonitorImp | A pimple pattern implementation class for GNet::Monitor |
| CMultiServer | A server that listens on more than one interface using a facade pattern to multiple Server instances |
| CMultiServerImp | A private implementation class used by GNet::MultiServer |
| CMultiServerPtr | A private implementation class used by GNet::MultiServer |
| CResolver | A class for asynchronous TCP name-to-address resolution |
| CResolverImp | A pimple-pattern implementation class for GNet::Resolver |
| CResolverInfo | A class that holds a host/service name pair and optionally the results of a name-to-address lookup, ie |
| CSelect | A concrete implementation of GNet::EventLoop using select() in the implementation |
| ►CServer | A network server class which listens on a specific port and spins off ServerPeer objects for each incoming connection |
| CPeerInfo | A structure used in GNet::Server::newPeer() |
| CServerPeer | An abstract base class for the GNet::Server's connection to a remote client |
| CServerPeerHandle | A structure used in the implementation of GNet::Server |
| CSimpleClient | A class for making an outgoing connection to a remote server, with support for socket-level protocols such as TLS/SSL and SOCKS 4a |
| ►CSocket | Encapsulates a non-blocking Unix socket file descriptor or a Windows 'SOCKET' handle |
| CCredentials | A credentials class that allows SocketProtocol to call Socket::fd() |
| CSocketProtocol | An interface for implementing a low-level protocol layer by means of calling read() and write() on a connected non-blocking socket and installing and removing event handlers as appropriate |
| CSocketProtocolImp | A private implementation class used by GNet::SocketProtocol |
| CSocketProtocolSink | An interface used by GNet::SocketProtocol to deliver data from a socket |
| CStreamSocket | A derivation of Socket for a stream socket |
| CTimer | A timer class template in which the timeout is delivered to the specified method |
| ►CTimerList | A singleton which maintains a list of all Timer objects, and interfaces to the event loop on their behalf |
| CNoThrow | Overload discriminator class for TimerList |
| CTimerUpdate | A private implementation class used by GNet::AbstractTimer |
| ►NGPop | POP3 classes |
| CAuth | An authenticator interface for POP3 sessions |
| CAuthImp | A private pimple-pattern implementation class used by GPop::Auth |
| CDirectoryReader | A trivial class which is used like G::Root by GPop::Store for reading directory listings |
| CFileDeleter | A trivial specialisation of G::Root used by GPop::Store for deleting files |
| CFileReader | A trivial class which is used like G::Root by GPop::Store for reading files |
| CSecrets | A simple interface to a store of secrets as used in authentication |
| CSecretsImp | A private pimple-pattern implementation class used by GPop::Secrets |
| ►CServer | A POP server class |
| CConfig | A structure containing GPop::Server configuration parameters |
| CServerPeer | Represents a connection from a POP client |
| ►CServerProtocol | Implements the POP server-side protocol |
| CConfig | A structure containing configuration parameters for ServerProtocol. NOT USED |
| CSecurity | An interface used by ServerProtocol to enable TLS |
| CSender | An interface used by ServerProtocol to send protocol replies |
| CText | An interface used by ServerProtocol to provide response text strings |
| CServerProtocolText | A default implementation for the ServerProtocol::Text interface |
| CStore | A message store |
| CStoreLock | Represents an exclusive lock on the message store |
| CStoreLockEntry | Represents a file in the GPop::Store |
| ►NGSmtp | SMTP and message-store classes |
| CAdminServer | A server class which implements the emailrelay administration interface |
| CAdminServerPeer | A derivation of ServerPeer for the administration interface |
| ►CClient | A class which acts as an SMTP client, extracting messages from a message store and forwarding them to a remote SMTP server |
| CConfig | A structure containing GSmtp::Client configuration parameters |
| ►CClientProtocol | Implements the client-side SMTP protocol |
| CConfig | A structure containing GSmtp::ClientProtocol configuration parameters |
| CSender | An interface used by ClientProtocol to send protocol messages |
| CClientProtocolReply | A private implementation class used by ClientProtocol |
| CDirectoryReader | Used by GSmtp::FileStore, GSmtp::NewFile and GSmtp::StoredFile to claim read permissions for reading a directory |
| CExecutableProcessor | A Processor class that processes message files using an external preprocessor program |
| CExecutableVerifier | A Verifier that runs an executable |
| CFactoryParser | A simple class to parse identifiers that can be a program in the file system or a network address |
| CFileIterator | A 'body' class for the MessageStore::Iterator 'handle' |
| CFileReader | Used by GSmtp::FileStore, GSmtp::NewFile and GSmtp::StoredFile to claim read permissions for reading a file |
| CFileStore | A concrete implementation of the MessageStore interface dealing in paired flat files and with an optional external preprocessor program which is used to process files once they have been stored |
| CFileWriter | Used by GSmtp::FileStore, GSmtp::NewFile and GSmtp::StoredFile to claim write permissions |
| CInternalVerifier | The standard internal Verifier |
| ►CMessageStore | A class which allows SMTP messages (envelope+content) to be stored and retrieved |
| CIterator | An iterator class for GSmtp::MessageStore |
| CIteratorImp | A base class for MessageStore::Iterator implementations |
| CNetworkProcessor | A Processor class that passes the name of a message file to a remote process over the network |
| CNetworkVerifier | A Verifier that talks to a remote verifier over the network |
| CNewFile | A concrete derived class implementing the NewMessage interface |
| CNewMessage | An abstract class to allow the creation of a new message in the message store |
| CNullProcessor | A Processor class that does nothing |
| CProcessor | An interface for processing message files |
| CProcessorFactory | A factory for message processors |
| CProtocolMessage | An interface used by the ServerProtocol class to assemble and process an incoming message |
| CProtocolMessageForward | A concrete implementation of the ProtocolMessage interface which stores incoming messages in the message store and then immediately forwards them on to the downstream server |
| CProtocolMessageStore | A concrete implementation of the ProtocolMessage interface that stores incoming messages in the message store |
| CRequestClient | A client class that interacts with a remote process with a stateless line-based request/response protocol |
| ►CServer | An SMTP server class |
| CConfig | A structure containing GSmtp::Server configuration parameters |
| CServerPeer | Represents a connection from an SMTP client |
| ►CServerProtocol | Implements the SMTP server-side protocol |
| CConfig | A structure containing configuration parameters for ServerProtocol |
| CSender | An interface used by ServerProtocol to send protocol replies |
| CText | An interface used by ServerProtocol to provide response text strings |
| CServerProtocolText | A default implementation for the ServerProtocol::Text interface |
| CSpamClient | A client class that interacts with a remote process using a protocol somewhat similar to the spamassassin spamc/spamd protocol |
| CSpamProcessor | A Processor class that passes the body of a message file to a remote process over the network and stores the response back into the file |
| CStoredFile | A concete derived class implementing the StoredMessage interface |
| CStoredMessage | An abstract class for messages which have come from the store |
| CVerifier | An asynchronous interface that verifies recipient 'to' addresses |
| CVerifierFactory | A factory for addresss verifiers |
| CVerifierStatus | A structure returned by GSmtp::Verifier to describe the status of a rcpt-to recipient |
| ►NGSsl | TLS/SSL transport layer security classes |
| CCertificate | An openssl X509 RAII class |
| CContext | An openssl context wrapper |
| CError | A private exception class used by ssl classes |
| CLibrary | A RAII class for initialising the underlying ssl library |
| CLibraryImp | A private pimple class used by GSsl::Library |
| CProtocol | An SSL protocol class |
| CProtocolImp | A private pimple class used by GSsl::Protocol |
| ►NMain | Application-level classes |
| CAdmin | A factory class for creating GSmtp::AdminServer objects |
| CCommandLine | A class which deals with the command-line interface to the process, both input and output |
| CCommandLineImp | A private implementation class used by Main::CommandLine |
| CConfiguration | An interface for returning application configuration information |
| CLegal | A static class providing warranty and copyright text |
| CNews | A static class providing some news text |
| COutput | An abstract interface for generating output on a command-line or a GUI |
| CRun | A top-level class for the process |
| CShow | A private implementation class used by Main::CommandLineImp |
| ►Nmd5 | A standalone implementation of the MD5 hashing algorithm |
| Cblock | A helper class used by the md5::digest implementation to represent a 64-character data block |
| ►Cdigest | A class that calculates an md5 digest from one or more 64-byte blocks of data using the algorithm described by RFC 1321 |
| Cstate_type | Holds the md5 algorithm state. Used by md5::digest |
| ►Cdigest_stream | A class that calculates an md5 digest from a data stream using the algorithm described by RFC 1321 |
| Cstate_type | < Holds the state of an md5 digest stream. Used by md5::digest_stream |
| Cformat | A static string-formatting class for the output of md5::digest |
| CApp | An implementation of the Main::Output abstract interface for command-line output |