#include /* * Irc utilities */ /* * IrcServer */ typedef struct IrcServer IrcServer; typedef struct IrcChannel IrcChannel; #define IRC_ERROR irc_error_quark () typedef enum { IRC_ERROR_MALFORMED_MESSAGE } IrcError; GQuark irc_error_quark (void); typedef enum { IRC_SERVER_LOOKING_UP_HOSTNAME, IRC_SERVER_FOUND_HOST_NAME, IRC_SERVER_CONNECTING, IRC_SERVER_CONNECTED, IRC_SERVER_DISCONNECT, IRC_SERVER_ERROR } IrcServerEvent; typedef enum { IRC_CHANNEL_MESSAGE, IRC_TOPIC_CHANGED, IRC_USER_JOINED, } IrcChannelEvent; typedef void (* IrcServerFunc) (IrcServer *server, const IrcServerEvent *event); typedef void (* IrcChannelListFunc) (GList *channels, gpointer data); IrcServer *irc_server_new (const char *name, gint port, IrcServerFunc func, gpointer data); gpointer irc_server_get_data (IrcServer *server); void irc_server_list_channels (IrcServer *server, IrcChannelListFunc func, gpointer data); void irc_server_connect (IrcServer *server, const char *nickname, const char *password); void irc_server_disconnect (IrcServer *server); typedef void (* IrcChannelFunc) (IrcChannel *channel, const IrcChannelEvent *event, gpointer data); IrcChannel *irc_server_join_channel (IrcServer *server, const char *name, IrcChannelFunc func, gpointer data); /* Channel operations */