digraph "Graphical Class Hierarchy"
{
 // LATEX_PDF_SIZE
  edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
  node [fontname="Helvetica",fontsize="10",shape=record];
  rankdir="LR";
  Node0 [label="GNet::Resolver::Callback",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$structGNet_1_1Resolver_1_1Callback.html",tooltip="An interface used for GNet::Resolver callbacks."];
  Node0 -> Node1 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node1 [label="GNet::Client",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1Client.html",tooltip="A class for making an outgoing connection to a remote server, with support for socket-level protocols..."];
  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node2 [label="GSmtp::Client",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1Client.html",tooltip="A class which acts as an SMTP client, sending messages to a remote SMTP server."];
  Node1 -> Node47 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node47 [label="GSmtp::RequestClient",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1RequestClient.html",tooltip="A network client class that interacts with a remote server using a stateless line-based request/respo..."];
  Node1 -> Node48 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node48 [label="GSmtp::SpamClient",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1SpamClient.html",tooltip="A client class that interacts with a remote process using a protocol somewhat similar to the spamassa..."];
  Node20 [label="GNet::ClientPtrBase",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ClientPtrBase.html",tooltip="The non-template part of GNet::ClientPtr."];
  Node20 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node19 [label="GNet::ClientPtr\< GSmtp\l::RequestClient \>",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ClientPtr.html",tooltip=" "];
  Node20 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node21 [label="GNet::ClientPtr\< GSmtp\l::SpamClient \>",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ClientPtr.html",tooltip=" "];
  Node20 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node23 [label="GNet::ClientPtr\< GSmtp\l::Forward \>",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ClientPtr.html",tooltip=" "];
  Node20 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node24 [label="GNet::ClientPtr\< GSmtp\l::Client \>",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ClientPtr.html",tooltip=" "];
  Node20 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node25 [label="GNet::ClientPtr\< T \>",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ClientPtr.html",tooltip="A smart pointer class for GNet::Client or similar."];
  Node11 [label="GNet::Connection",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1Connection.html",tooltip="An abstract interface which provides information about a network connection."];
  Node11 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node11 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node4 [label="GNet::ServerPeer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ServerPeer.html",tooltip="An abstract base class for the GNet::Server's connection to a remote client."];
  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node5 [label="GPop::ServerPeer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGPop_1_1ServerPeer.html",tooltip="Represents a connection from a POP client."];
  Node4 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node8 [label="GSmtp::AdminServerPeer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1AdminServerPeer.html",tooltip="A derivation of ServerPeer for the administration interface."];
  Node4 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node9 [label="GSmtp::ServerPeer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1ServerPeer.html",tooltip="Handles a connection from a remote SMTP client."];
  Node12 [label="GNet::EventHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1EventHandler.html",tooltip="A base class for classes that have a file descriptor and handle asynchronous events from the event lo..."];
  Node12 -> Node13 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node13 [label="GFilters::MxLookup",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1MxLookup.html",tooltip="A DNS MX lookup client."];
  Node12 -> Node1 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node12 -> Node14 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node14 [label="GNet::DnsBlock",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1DnsBlock.html",tooltip="Implements DNS blocklisting, as per RFC-5782."];
  Node12 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node15 [label="GNet::Interfaces",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1Interfaces.html",tooltip="A class for getting a list of network interfaces and their addresses."];
  Node12 -> Node17 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node17 [label="GNet::Server",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1Server.html",tooltip="A network server class which listens on a specific port and spins off ServerPeer objects for each inc..."];
  Node12 -> Node4 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node3 [label="GNet::EventLogging",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1EventLogging.html",tooltip="An interface for GNet classes that define a logging context string."];
  Node3 -> Node4 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node3 -> Node2 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node18 [label="GNet::ExceptionHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ExceptionHandler.html",tooltip="An abstract interface for handling exceptions thrown out of event-loop callbacks (socket/future event..."];
  Node18 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node18 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node18 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node18 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node18 -> Node26 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node26 [label="GFilters::NetworkFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1NetworkFilter.html",tooltip="A Filter class that passes the name of a message file to a remote network server."];
  Node18 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node18 -> Node17 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node18 -> Node33 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node33 [label="GVerifiers::NetworkVerifier",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGVerifiers_1_1NetworkVerifier.html",tooltip="A Verifier that talks to a remote address verifier over the network."];
  Node22 [label="GNet::ExceptionSource",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1ExceptionSource.html",tooltip="A mixin base class that identifies the source of an exception when delivered to GNet::ExceptionHandle..."];
  Node22 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node22 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node22 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node22 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node22 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node22 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node22 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node27 [label="GSmtp::Filter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1Filter.html",tooltip="An interface for processing a message file through a filter."];
  Node27 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node28 [label="GFilters::ExecutableFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1ExecutableFilter.html",tooltip="A Filter class that runs an external helper program."];
  Node27 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node35 [label="GFilters::FilterChain",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1FilterChain.html",tooltip="A Filter class that runs a sequence of sub-filters."];
  Node27 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node36 [label="GFilters::MxFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1MxFilter.html",tooltip="A concrete GSmtp::Filter class for message routing: if the message's 'forward-to' envelope field is s..."];
  Node27 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node27 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node37 [label="GFilters::NullFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1NullFilter.html",tooltip="A Filter class that does nothing."];
  Node27 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node38 [label="GFilters::SimpleFilterBase",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1SimpleFilterBase.html",tooltip="A GSmtp::Filter base class for filters that run synchronously."];
  Node38 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node39 [label="GFilters::CopyFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1CopyFilter.html",tooltip="A concrete GSmtp::Filter class that copies the message to all pre-existing sub-directories of the spo..."];
  Node38 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node40 [label="GFilters::DeliveryFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1DeliveryFilter.html",tooltip="A concrete GSmtp::Filter class that copies the message to multiple spool sub-directories according to..."];
  Node38 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node41 [label="GFilters::MessageIdFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1MessageIdFilter.html",tooltip="A filter that adds a RFC-822 Message-ID to the message content if it does not have one already."];
  Node38 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node42 [label="GFilters::SplitFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1SplitFilter.html",tooltip="A concrete GSmtp::Filter class for message routing: if the message has recipients for multiple domain..."];
  Node27 -> Node43 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node43 [label="GFilters::SpamFilter",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGFilters_1_1SpamFilter.html",tooltip="A Filter class that passes the body of a message file to a remote process over the network and option..."];
  Node16 [label="GNet::FutureEventHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1FutureEventHandler.html",tooltip="A callback interface for GNet::FutureEvent."];
  Node16 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node44 [label="GNet::Listener",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1Listener.html",tooltip="An interface for a network listener."];
  Node44 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node6 [label="GPop::ServerProtocol\l::Security",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGPop_1_1ServerProtocol_1_1Security.html",tooltip="An interface used by ServerProtocol to enable TLS."];
  Node6 -> Node5 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node7 [label="GPop::ServerProtocol\l::Sender",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGPop_1_1ServerProtocol_1_1Sender.html",tooltip="An interface used by ServerProtocol to send protocol replies."];
  Node7 -> Node5 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node46 [label="GSmtp::ClientProtocol\l::Sender",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1ClientProtocol_1_1Sender.html",tooltip="An interface used by ClientProtocol to send protocol messages."];
  Node46 -> Node2 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node10 [label="GSmtp::ServerSender",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1ServerSender.html",tooltip="An interface used by ServerProtocol to send protocol responses."];
  Node10 -> Node9 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node45 [label="GNet::SocketProtocolSink",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1SocketProtocolSink.html",tooltip="An interface used by GNet::SocketProtocol to deliver data from a socket."];
  Node45 -> Node1 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node45 -> Node4 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node29 [label="GNet::TaskCallback",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGNet_1_1TaskCallback.html",tooltip="An abstract interface for callbacks from GNet::Task."];
  Node29 -> Node28 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node29 -> Node30 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"];
  Node30 [label="GVerifiers::ExecutableVerifier",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGVerifiers_1_1ExecutableVerifier.html",tooltip="A Verifier that runs an executable."];
  Node31 [label="GSmtp::Verifier",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGSmtp_1_1Verifier.html",tooltip="An asynchronous interface that verifies recipient 'to' addresses."];
  Node31 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node31 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node32 [label="GVerifiers::InternalVerifier",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGVerifiers_1_1InternalVerifier.html",tooltip="The standard internal Verifier that accepts all mailbox names."];
  Node31 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node31 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
  Node34 [label="GVerifiers::UserVerifier",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classGVerifiers_1_1UserVerifier.html",tooltip="A concrete Verifier class that verifies against the password database (ie."];
}
