This document aims to describe the design of the kirc library

Base class for usage of the library is the ClientSocket. It can connect to a URL of the structure irc://user:password@hostname.org?username=foo&realname=bar
To handle the specific IRC commands, the Socket notifies so called EventHandlers about each incoming message.
The basic Eventhandler for the Commands relevant to the client-side of the IRC protocol reside in the ClientHandler class. It looks at the message and performs the relevant operations.
If needed, it emits a signal containing a IRC::Event pointer, that should be caught by the application, to display information to the user (for Example when a new PRIVMSG has arrived). (May be removed in favor of custom GUI commands)
There can be several Event Handlers associated with a context, they just have to register themselves to it using addEventHandler. The context will go through the list Handlers and call the appropriated method depending on the type of event, until one Handler returns Handled.

The KIrc::Context class represents a group of IRC-Entities (for Example a channel is a group of users).
The KIrc::Entity class is everithing present in an IRC Network (User,Channel,Service or User). It contains some status Information about them

The KIrc::StdMessages namespace contains functions, that return a IRC::Message that should be send to the server to run a specific command

Directory Structure:
kernel: contains all the code, relevant for all parts of IRC, not just for IRC-clients
client: here goes all the client specific code
server: here goes all the server specific code (reserved for future use)
plugins: plugins that add additional features to the library (They will mostly be IRC::Handler that handle new irc or user commands)
