Commit 70af5e0c authored by progs's avatar progs

* Utilisation de Doxygen.


git-svn-id: svn://svn.gna.org/svn/menareants/trunk@210 6832cf7c-ce15-0410-9f4e-c008ec2580bf
parent 17a5e617
2006-02-08 Romain Bignon <progs@headfucking.net>
* Utilisation de Doxygen.
2006-01-15 Romain Bignon <progs@headfucking.net>
* src/JoinGame.cpp (TPlayerLine): Composant utilisé dans un TList pour la liste des players dans
......
......@@ -2,4 +2,8 @@ INSTALL_SERVER=@INSTALL_SERVER@
INSTALL_GAME=@INSTALL_GAME@
SUBDIRS = lib ${INSTALL_GAME} ${INSTALL_SERVER}
AUTOMAKE_OPTIONS = foreign
\ No newline at end of file
AUTOMAKE_OPTIONS = foreign
doxygen:
@cd src && /usr/bin/doxygen && cd ../server && /usr/bin/doxygen && cd ../lib && /usr/bin/doxygen && cd ..
@echo "Created code documentation in `pwd`/doc"
\ No newline at end of file
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
......@@ -595,6 +595,10 @@ uninstall-info: uninstall-info-recursive
pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
uninstall-info-am
doxygen:
@cd src && /usr/bin/doxygen && cd ../server && /usr/bin/doxygen && cd ../lib && /usr/bin/doxygen && cd ..
@echo "Created code documentation in `pwd`/doc"
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
......@@ -3,6 +3,9 @@ Note: Lire le fichier DEVELOPPEURS pour participer
À faire:
* En cours
-client: TROUVER LA PAIRE DE BUG :
> Lorsqu'on join une partie déjà créée, et que le joueur en face part et rejoin, si on touche au spinedit ça crash.
> Lorsqu'on créé une partie, dès qu'un mec join puis part ça crash.
-client: Utiliser une fonction pour redimentionner le Memo dans GameInfosForm quand on ajoute/del un player (voir papier).
-client: Avancer dans les paramètres de la partie.
......@@ -19,6 +22,7 @@ Note: Lire le fichier DEVELOPPEURS pour participer
* En parallèle (on s'en fou un peu de quand on les fait)
-client: Suppression progressive du menu pour passer uniquement à des TForm.
-passer les conversions explicites en dynamic_cast<>
* Plus tard (objectifs par la suite de celui actuel, dans l'ordre)
-client: Faire la partie de jeu vraiment.
......
# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005 Free Software Foundation, Inc.
......@@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.9.6])])
[AM_AUTOMAKE_VERSION([1.9.5])])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
......
......@@ -34,7 +34,6 @@ ECBPlayer::ECBPlayer(ECBChannel *_chan, bool _owner)
fric = 0;
place = 0;
color = 0;
map = 0;
}
bool ECBPlayer::SetPlace(unsigned int p)
......@@ -56,6 +55,7 @@ ECBChannel::ECBChannel(std::string _name)
{
state = WAITING;
limite = 0;
map = 0;
}
bool ECBChannel::AddPlayer(ECBPlayer* pl)
......@@ -83,7 +83,7 @@ bool ECBChannel::RemovePlayer(ECBPlayer* pl, bool use_delete)
return false;
}
/* Lors de rajouts de modes, modifier API paragraphe 4. Modes */
/** \attention Lors de rajouts de modes, modifier API paragraphe 4. Modes */
const char* ECBChannel::ModesStr() const
{
std::string modes = "+", params = "";
......@@ -99,8 +99,8 @@ const char* ECBChannel::ModesStr() const
return (modes + params).c_str();
}
/* En cas de modification de la syntaxe, modifier tout prix API paragraphe 5. PLS
* Note qu'il faut viter les incompatibilits tous prix, et ne pas oublier, dans le cas
/** \attention En cas de modification de la syntaxe, modifier tout prix API paragraphe 5. PLS
* \note il faut viter les incompatibilits tous prix, et ne pas oublier, dans le cas
* o il y en a une, d'incrmenter le protocole
*/
const char* ECBChannel::PlayerList()
......
......@@ -33,7 +33,11 @@ class ECBChannel;
class ECBMap;
/* ATTENTION! Classe virtuelle */
/** Base class of Player/
* There if informations about a player whose are used by server and client.
*
* \attention This is a \a virtual class !
*/
class ECBPlayer
{
/* Constructeurs/Deconstructeurs */
......@@ -47,39 +51,44 @@ public:
/* Attributs */
public:
/* Salon auquel appartient le player */
/** Player's Channel. */
ECBChannel *Channel() { return chan; }
/* Argent dtenu par le joueur */
/** This is player's money. \todo Use a private variable ? */
int fric;
/* Est le crateur de la partie ? */
/** Is he the owner of game ? */
bool IsOwner() const { return owner; }
/** Set a player as the owner of game of not. */
void SetOwner(bool o = true) { owner = o; }
/* Place */
/** Place of player in the map. */
unsigned int Place() const { return place; }
/** Set place of player. */
bool SetPlace(unsigned int p);
/* MAP */
ECBMap *Map() const { return map; }
void SetMap(ECBMap *m) { map = m; }
/* Couleur
* Les couleurs sont reprsentes par un numrateur... Alors
/** Return color of player.
* \note Les couleurs sont représentées par un énumérateur. Alors
* il faut voir si le serveur en aurra quelque chose à foutre
* ou pas, si oui on met l'énumérateur ici, sinon on le met
* uniquement dans le client.
* TODO: il faut mettre dans le client un tableau de couleurs SDL
*
* \todo il faut mettre dans le client un tableau de couleurs SDL
*/
unsigned int Color() const { return color; }
/** Set color of player. */
void SetColor(unsigned int c) { color = c; }
/* Retourne le pseudo du joueur */
/** Return nick of player. */
virtual const char* GetNick() const = 0;
/* Le joueur est pret (utilisation de RDY) */
/** Is player ready ? */
bool Ready() const { return ready; }
/** Set player. */
void SetReady(bool r = true) { ready = r; }
/* Variables privées */
......@@ -88,7 +97,6 @@ protected:
bool owner;
unsigned int place;
unsigned int color;
ECBMap *map;
bool ready;
};
......@@ -99,22 +107,25 @@ typedef PlayerVector::iterator PlayerIterator;
* ECBChannel *
********************************************************************************************/
/** Base class of a Channel.
* There are channel's informations used by server and client.
*/
class ECBChannel
{
/* Constructeurs/Deconstructeurs */
public:
/* Constructeur en donnant le nom du salon */
/** @param _name name of channel */
ECBChannel(std::string _name);
/* Deconstructeur par default */
~ECBChannel() {}
/** Define state of game */
enum e_state {
WAITING,
SENDING,
PLAYING,
ANIMING
WAITING, /**< Game has been created and is able to be joined. */
SENDING, /**< Informations about game are sending. */
PLAYING, /**< Players are playing. */
ANIMING /**< Game is in animation. */
};
/* Methodes */
......@@ -123,42 +134,57 @@ public:
/* Attributs */
public:
/* Obtient le nom du channel */
/** Return channel name. */
const char* GetName() const { return name.c_str(); }
/* Rcupre la liste des joueurs */
/** Return player list in the channel. */
PlayerVector Players() const { return players; }
/* Ajoute un player */
/** Add a player. */
bool AddPlayer(ECBPlayer*);
/* Supprime un player
* use_delete: si true, supprime lui meme le ECPlayer
/** Delete a player.
* @param pl class of player to remove.
* @param use_delete if true, use \a delete on \a pl .
*/
bool RemovePlayer(ECBPlayer*, bool use_delete);
bool RemovePlayer(ECBPlayer* pl, bool use_delete);
/* Retourne le nombre de joueurs dans le jeu */
/** Return number of players in channel. */
unsigned int NbPlayers() const { return players.size(); }
/* Retourne la liste des joueurs
* Note: Pour plus d'informations sur la syntaxe, consulter API paragraphe 5. PLS
/** Return aformated list of players.
* It is used to send to client a player list when it joined.
*
* \return formated list of players.
*
* \note Pour plus d'informations sur la syntaxe, consulter API paragraphe 5. PLS
*/
const char* PlayerList();
/* Retourne les modes formats
* Note: Pour plus d'informations sur les modes, consulter API paragraphe 4. Modes
/** Return a formated modes list.
* It is used to send to client a mode list when it joined.
*
* \return formated list of modes.
*
* \note Pour plus d'informations sur les modes, consulter API paragraphe 4. Modes
*/
const char* ModesStr() const;
/* A propos des etats de la partie */
e_state State() const { return state; }
bool IsInGame() const { return (state >= PLAYING); }
bool Joinable() const { return (state == WAITING); }
void SetState(e_state s) { state = s; }
e_state State() const { return state; } /**< Return state of game. */
bool IsInGame() const { return (state >= PLAYING); } /**< Check if channel is in game. */
bool Joinable() const { return (state == WAITING); } /**< Check if channel is joinable. */
void SetState(e_state s) { state = s; } /**< Define state. */
/* Limite maximale pour entrer dans le chan */
unsigned int GetLimite() const { return limite; }
void SetLimite(unsigned int l) { limite = l; }
unsigned int GetLimite() const { return limite; } /**< Return user limit of channel. */
void SetLimite(unsigned int l) { limite = l; } /**< Define user limit of channel. */
/** Return MAP \attention ECBMap n'existe pas encore ! */
ECBMap *Map() const { return map; }
/** Define the map \attention ECBMap n'existe pas encore ! */
void SetMap(ECBMap *m) { map = m; }
/* Variables privées */
protected:
......@@ -166,6 +192,7 @@ protected:
PlayerVector players;
e_state state;
unsigned int limite;
ECBMap *map;
};
#endif /* ECLIB_CHANNELS_H */
......
This diff is collapsed.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
......@@ -14,6 +14,8 @@
@SET_MAKE@
SOURCES = $(libeuroconq_a_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
......
......@@ -22,23 +22,23 @@
#define Outils_hpp
#include <sstream>
/* Récupère le premier mot de la chaine */
/** Récupère le premier mot de la chaine */
std::string stringtok(std::string &, const char * const);
/* Formate la chaine avec des \ devant les espaces */
/** Formate la chaine avec des \ devant les espaces */
char* FormatStr(const char* s);
/* Formate une chaine et retourne dans une std::string */
/** Formate une chaine et retourne dans une std::string */
std::string StringF(const char* format, ...);
/* Retourne si le fichier existe ou non */
/** Retourne si le fichier existe ou non */
bool FichierExiste(const std::string &nom);
/* Retourne la date formatée */
#define TIMELEN 20
/** Retourne la date formatée */
char *get_time(time_t mytime);
#define TIMELEN 20
/* Convertit d'une chaine en un type */
/** Convertit d'une chaine en un type */
template<typename T>
T StrToTyp(const std::string & Str)
{
......@@ -50,7 +50,7 @@ T StrToTyp(const std::string & Str)
return Dest;
}
/* Convertit d'un type en une chaine */
/** Convertit d'un type en une chaine */
template<typename T>
std::string TypToStr( const T & Value )
{
......
......@@ -33,7 +33,10 @@ std::vector<EChannel*> ChanList;
* Commandes *
********************************************************************************************/
/* MSG <message> */
/** A player wants to send a message to channel.
*
* Syntax: MSG message
*/
int MSGCommand::Exec(TClient *cl, std::vector<std::string> parv)
{
if(!cl->Player())
......@@ -44,7 +47,10 @@ int MSGCommand::Exec(TClient *cl, std::vector<std::string> parv)
return 0;
}
/* SET <modes> [params ...] */
/** A player wants to set an attribute in channel.
*
* Syntax: SET modes [params ...]
*/
int SETCommand::Exec(TClient *cl, std::vector<std::string> parv)
{
if(!cl->Player() || !cl->Player()->Channel())
......@@ -211,13 +217,16 @@ int SETCommand::Exec(TClient *cl, std::vector<std::string> parv)
return 0;
}
/* JOI <nom> */
/** A client wants to join a channel.
*
* Syntax: JOI nom
*/
int JOICommand::Exec(TClient *cl, std::vector<std::string> parv)
{
/* Ne peut tre que sur un seul salon la fois */
if(cl->Player() || parv[1].empty())
return vDebug(W_WARNING, "Essaye de joindre plusieurs salons", VSName(cl->GetNick())
VSName(cl->Player()->Channel()->GetName()));
VSName(cl->Player()->Channel()->GetName()) VName(parv[1]));
const char* nom = parv[1].c_str();
EChannel* chan = NULL;
......@@ -255,7 +264,10 @@ int JOICommand::Exec(TClient *cl, std::vector<std::string> parv)
return 0;
}
/* LEA */
/** A player wants to leave a channel.
*
* Syntax: LEA
*/
int LEACommand::Exec(TClient *cl, std::vector<std::string> parv)
{
/* N'est pas dans un salon */
......@@ -274,7 +286,10 @@ int LEACommand::Exec(TClient *cl, std::vector<std::string> parv)
return 0;
}
/* LSP */
/** A player wants to list all channels.
*
* Syntax: LSP
*/
int LSPCommand::Exec(TClient *cl, std::vector<std::string> parv)
{
for(ChannelIterator it=ChanList.begin(); it != ChanList.end(); it++)
......@@ -334,7 +349,7 @@ void EChannel::NeedReady()
ECPlayer *EChannel::GetPlayer(const char* nick)
{
for(PlayerIterator it=players.begin(); it != players.end(); it++)
if(((ECPlayer*) (*it))->Client() && !strcasecmp((*it)->GetNick(), nick))
if((dynamic_cast<ECPlayer*> (*it))->Client() && !strcasecmp((*it)->GetNick(), nick))
return ((ECPlayer*) (*it));
return NULL;
}
......@@ -342,7 +357,7 @@ ECPlayer *EChannel::GetPlayer(const char* nick)
ECPlayer *EChannel::GetPlayer(TClient *cl)
{
for(PlayerIterator it=players.begin(); it != players.end(); it++)
if(((ECPlayer*) (*it))->Client() == cl)
if((dynamic_cast<ECPlayer*> (*it))->Client() == cl)
return ((ECPlayer*) (*it));
return NULL;
}
......@@ -364,9 +379,9 @@ int EChannel::sendto_players(ECPlayer* one, const char* pattern, ...)
for(PlayerIterator it=players.begin(); it != players.end(); it++)
{
if(!((ECPlayer*) (*it))->Client() || *it == one) continue;
if(!(dynamic_cast<ECPlayer*> (*it))->Client() || *it == one) continue;
((ECPlayer*) (*it))->Client()->sendbuf(buf, len);
(dynamic_cast<ECPlayer*> (*it))->Client()->sendbuf(buf, len);
}
return 0;
}
......@@ -35,14 +35,19 @@ class EChannel;
/********************************************************************************************
* ECPlayers *
********************************************************************************************/
/** Derivation of class ECBPlayer for server.
*
* \note See definition of ECBPlayer to see all members of ECPlayers (in doc/lib/)
*/
class ECPlayer : public ECBPlayer
{
/* Constructeurs/Deconstructeurs */
public:
/* Cration en donnant la structure du client, du salon et
* en spcifiant si il est owner ou non
/** Create a Player class in a channel.
* @param cl client struct of user who joined channel.
* @param chan channel struct.
* @param owner if player is an owner or not.
*/
ECPlayer(TClient* cl, EChannel* chan, bool owner);
......@@ -52,13 +57,13 @@ public:
/* Attributs */
public:
/* Salon auquel appartient le player */
/** Return player's channel */
EChannel *Channel() { return (EChannel*)chan; }
/* Obtient le client */
/** Get client's structure of player */
TClient *Client() { return client; }
/* Obtient le pseudo du client */
/** Get client's nickname */
virtual const char* GetNick() const;
/* Variables prives */
......@@ -69,7 +74,10 @@ protected:
/********************************************************************************************
* EChannel *
********************************************************************************************/
/** Channel structure based on ECBChannel
*
* \note See definition of ECBChannel to see all members of EChannel (in doc/lib/)
*/
class EChannel : public ECBChannel
{
/* Constructeurs/Deconstructeurs */
......@@ -81,21 +89,25 @@ public:
/* Methodes */
public:
/* Ncessite que tous les joueurs soient prets */
/** All players have to be ready
* This will \b not send a message, it will only set all players as Ready = false.
*/
void NeedReady();
/* Envoie un message tous les joueurs
* one: joueur qui l'on envoie pas
/** Send a message to all players.
*
* @param one if not null, we will not send message to \b this player.
* @return always 0.
*/
int sendto_players(ECPlayer* one, const char*, ...);
/* Attributs */
public:
/* Rcupre le Player par le pseudo */
/** Get a player structure with his nickname. */
ECPlayer* GetPlayer(const char* nick);
/* Rcupre le Player par sa classe cliente */
/** Get a player structure with his client structure. */
ECPlayer *GetPlayer(TClient *cl);
/* Variables prives */
......
......@@ -55,6 +55,27 @@ public: \
virtual int Exec(TClient *cl, std::vector<std::string> string_list); \
}
class ERRCommand : public EC_ACommand { public: ERRCommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~ERRCommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class IAMCommand : public EC_ACommand { public: IAMCommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~IAMCommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class BYECommand : public EC_ACommand { public: BYECommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~BYECommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class PIGCommand : public EC_ACommand { public: PIGCommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~PIGCommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class POGCommand : public EC_ACommand { public: POGCommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~POGCommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class JOICommand : public EC_ACommand { public: JOICommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~JOICommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class LEACommand : public EC_ACommand { public: LEACommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~LEACommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class LSPCommand : public EC_ACommand { public: LSPCommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~LSPCommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class MSGCommand : public EC_ACommand { public: MSGCommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~MSGCommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
class SETCommand : public EC_ACommand { public: SETCommand(const std::string _CmdName, unsigned short _flags, unsigned short _args) : EC_ACommand(_CmdName, _flags, _args) {} virtual ~SETCommand() {} virtual int Exec(TClient *cl, std::vector<std::string> string_list); };
/*
DECLARE_CMD ( ERR );
DECLARE_CMD ( IAM );
......@@ -67,5 +88,6 @@ DECLARE_CMD ( LEA );
DECLARE_CMD ( LSP );
DECLARE_CMD ( MSG );
DECLARE_CMD ( SET );
*/
#endif
......@@ -23,6 +23,9 @@
#include <string>
/** Config class.
* \todo documente.
*/
class Config
{
public:
......
......@@ -49,6 +49,13 @@ int Debug(unsigned int flags, const char* format, ...)
return vDebug(flags, buf, "");
}
/** Debug function where we can specifie variables
*
* @param flags flags specified in Debug.h
* @param msg message
* @param vars list of variables as a string
* @return always 0.
*/
int vDebug(unsigned int flags, std::string msg, std::string vars)
{
#ifndef DEBUG
......
This diff is collapsed.
......@@ -26,6 +26,10 @@
#include <string>
#include <fstream>
/** Send motd to client.
*
* @param cl client struct
*/
static void send_motd(TClient *cl)
{
std::ifstream fp(app.GetConf()->MotdFile().c_str());
......@@ -41,6 +45,11 @@ static void send_motd(TClient *cl)
return;
}
/** Check if nickname is correct.
*
* @param nick original nickname.
* @return new nickname (or NULL if nickname is absolutly incorrect)
*/
static char *correct_nick(const char *nick)
{
static char newnick[NICKLEN + 1];
......@@ -57,13 +66,16 @@ static char *correct_nick(const char *nick)
return newnick;
}
/* IAM <nick> <prog> <version> */
/** Client send me several informations about him.
*
* Syntax: IAM nick prog version
*/
int IAMCommand::Exec(TClient *cl, std::vector<std::string> parv)
{
if(IsAuth(cl))
return vDebug(W_DESYNCH, "User dj logu", VSName(cl->GetNick()));
/* Note: il est normal de vrifier ici seulement le nombre d'arguments: a permet un
/** \note il est normal de vrifier ici seulement le nombre d'arguments: a permet un
* meilleur controle par rapport la version
*/
if(parv.size() < 4 || parv[2] != CLIENT_SMALLNAME)
......@@ -93,13 +105,19 @@ int IAMCommand::Exec(TClient *cl, std::vector<std::string> parv)
return 0;
}
/* PIG */
/** Received a PING message from client.
*
* Syntax: PIG
*/
int PIGCommand::Exec(TClient *cl, std::vector<std::string> parv)
{
return cl->sendrpl(app.rpl(ECServer::PONG));
}
/* POG */
/** Received a PONG message from client.
*
* Syntax: POG
*/
int POGCommand::Exec(TClient *cl, std::vector<std::string> parv)
{
if(IsPing(cl)) DelPing(cl);
......@@ -108,7 +126,10 @@ int POGCommand::Exec(TClient *cl, std::vector<std::string> parv)
}
/* BYE */
/** Client wants to disconnect.
*
* Syntax: BYE
*/
int BYECommand::Exec(TClient *cl, std::vector<std::string> parv)
{
return cl->exit(app.rpl(ECServer::BYE));
......
......@@ -31,6 +31,7 @@
ECServer app;
/** Check ping timeouts */
void ECServer::sig_alarm(int c)
{
#ifndef NOPINGCHECK
......
......@@ -28,34 +28,43 @@
class EC_ACommand;
/** ECServer class.
* This is class of application.
*
* \todo Documente this class.
*/
class ECServer
{
friend int TClient::exit(const char *, ...);
friend int TClient::parse_this();
public:
enum msg { /* mettre à jour systematiquement msgTab[] dans Server.cpp */
HELLO, /* HEL */
MAJ, /* MAJ */
ERR, /* ERR */
BYE, /* BYE */
AIM, /* AIM */
MOTD, /* MOTD */
ENDOFMOTD, /* EOM */
CANTJOIN, /* ER1 */
PING, /* PIG */
PONG, /* POG */
USED, /* USED */
JOIN, /* JOI */
SET, /* SET */
PLIST, /* PLS */
LEAVE, /* LEA */
GLIST, /* LSP */
EOGLIST,/*EOL */
MSG, /* MSG */
/** Message to send to clients.
*
* \attention mettre à jour systematiquement msgTab[] dans Server.cpp
*/
enum msg {
HELLO, /**< HEL */
MAJ, /**< MAJ */
ERR, /**< ERR */
BYE, /**< BYE */
AIM, /**< AIM */
MOTD, /**< MOTD */
ENDOFMOTD, /**< EOM */
CANTJOIN, /**< ER1 */
PING, /**< PIG */
PONG, /**< POG */
USED, /**< USED */
JOIN, /**< JOI */
SET, /**< SET */
PLIST, /**< PLS */
LEAVE, /**< LEA */
GLIST, /**< LSP */
EOGLIST, /**< EOL */
MSG, /**< MSG */