Source

pacman-game-server / serveurPartie / documentation / html / classGame.html

Full commit
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Serveur de partie: Game Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.4 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
  </ul>
</div>
<div class="tabs">
  <ul>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul>
</div>
<h1>Game Class Reference</h1><!-- doxytag: class="Game" --><!-- doxytag: inherits="Threads" -->Serveur de partie. Représente une partie.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;game.h&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for Game:</div>
<div class="dynsection">
<p><center><img src="classGame__inherit__graph.png" border="0" usemap="#Game__inherit__map" alt="Inheritance graph"></center>
<map name="Game__inherit__map">
<area shape="rect" href="classThreads.html" title="Permet d&#39;instancier des threads." alt="" coords="5,7,77,33"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
<div class="dynheader">
Collaboration diagram for Game:</div>
<div class="dynsection">
<p><center><img src="classGame__coll__graph.png" border="0" usemap="#Game__coll__map" alt="Collaboration graph"></center>
<map name="Game__coll__map">
<area shape="rect" href="classThreads.html" title="Permet d&#39;instancier des threads." alt="" coords="5,7,77,33"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="classGame-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#89114067e8703608d01a448c056cca7b">Game</a> (u_short portEcoute, u_short portLecture, u_short portEcouteServeur, u_short portEcouteDistant, u_short portEcouteServeurPrincipal, string adresseServeurPrincipal)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructeur.  <a href="#89114067e8703608d01a448c056cca7b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e3d112ca6e0e55150d2fdbc704474530"></a><!-- doxytag: member="Game::~Game" ref="e3d112ca6e0e55150d2fdbc704474530" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#e3d112ca6e0e55150d2fdbc704474530">~Game</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructeur. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#f3507978d7878ed70af6125c055dc54e">createUDPSock</a> (u_short port)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Crée un socket UDP.  <a href="#f3507978d7878ed70af6125c055dc54e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#583f268bcd557e81d891e303b4e0d5b7">createTCPSock</a> (u_short port)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Crée un socket TCP.  <a href="#583f268bcd557e81d891e303b4e0d5b7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#14a1c77341e97af0547641a9305819f8">serveurConnection</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connexion au serveur principal. Envoie le code d'identification.  <a href="#14a1c77341e97af0547641a9305819f8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="711496fb9bf03e83d1b3bbfdbb999a05"></a><!-- doxytag: member="Game::connectionWaiting" ref="711496fb9bf03e83d1b3bbfdbb999a05" args="()" -->
int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#711496fb9bf03e83d1b3bbfdbb999a05">connectionWaiting</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Attend l'arrivée de nouveaux joueurs. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9b35f7d6f18a209a3c477a313b401ec8"></a><!-- doxytag: member="Game::traiterClient" ref="9b35f7d6f18a209a3c477a313b401ec8" args="()" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#9b35f7d6f18a209a3c477a313b401ec8">traiterClient</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traite les nouveaux joeurs. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f0641fe640f0c488147edcc56eb88235"></a><!-- doxytag: member="Game::receive" ref="f0641fe640f0c488147edcc56eb88235" args="()" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#f0641fe640f0c488147edcc56eb88235">receive</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Intercepte les données émises en UDP par les joueurs (). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="11e5d85904894274e66317bafea4f898"></a><!-- doxytag: member="Game::receiveServeur" ref="11e5d85904894274e66317bafea4f898" args="()" -->
int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#11e5d85904894274e66317bafea4f898">receiveServeur</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Intercepte les données émises par le serveur. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#be8cac3aa5f22f8ebab71493aa3336b2">traiteServeur</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="81820359be483fb571083cdec82c3ca5"></a><!-- doxytag: member="Game::sendToAll" ref="81820359be483fb571083cdec82c3ca5" args="(struct sockaddr_in adresseDistante, string data)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#81820359be483fb571083cdec82c3ca5">sendToAll</a> (struct sockaddr_in adresseDistante, string data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Renvoie une réponse à l'émeteur. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="55c34857b62634d455c08d9c572d1369"></a><!-- doxytag: member="Game::sendOthers" ref="55c34857b62634d455c08d9c572d1369" args="(struct sockaddr_in adresseDistante, string data)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#55c34857b62634d455c08d9c572d1369">sendOthers</a> (struct sockaddr_in adresseDistante, string data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Renvoie à tous les joueurs (sauf l'émeteur) de la partie les nouvelles coordonnées et autres données à mettre à jour. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="29fa35a3a389613f609a67875e46bb30"></a><!-- doxytag: member="Game::traitementEcoute" ref="29fa35a3a389613f609a67875e46bb30" args="()" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#29fa35a3a389613f609a67875e46bb30">traitementEcoute</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lance la méthode connectionWaiting dans le thread d'ecoute. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="156b37ff63ffe2063ce93818b20c3a2b"></a><!-- doxytag: member="Game::traitementNouveauClient" ref="156b37ff63ffe2063ce93818b20c3a2b" args="()" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#156b37ff63ffe2063ce93818b20c3a2b">traitementNouveauClient</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lance la méthode traiterClient dans un nouveau thead temporaire. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="06f60be15c10e731a257807e9bb0eceb"></a><!-- doxytag: member="Game::traitementLecture" ref="06f60be15c10e731a257807e9bb0eceb" args="()" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#06f60be15c10e731a257807e9bb0eceb">traitementLecture</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lance la méthode receive dans le thread de lecture. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3e97b55eaa8f226185260f46a407b1f8"></a><!-- doxytag: member="Game::ecouteServeur" ref="3e97b55eaa8f226185260f46a407b1f8" args="()" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#3e97b55eaa8f226185260f46a407b1f8">ecouteServeur</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lance la méthode receiveServeur dans le thread d'ecoute du serveur. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4e906947296b746c5bcbab650c54d557"></a><!-- doxytag: member="Game::traitementServeur" ref="4e906947296b746c5bcbab650c54d557" args="()" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#4e906947296b746c5bcbab650c54d557">traitementServeur</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lance la méthode de traitement des messages du serveur principal et de partie. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#f781118c67b7f0c35cb84ce5ae0d9826">addPlayer</a> (<a class="el" href="classJoueur.html">Joueur</a> joueur)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ajoute un joueur à une partie existante.  <a href="#f781118c67b7f0c35cb84ce5ae0d9826"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#4a07a945266f9be1c5cc96c2dee3fe00">removePlayer</a> (string adresse)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Déconnecte un joueur d'une partie.  <a href="#4a07a945266f9be1c5cc96c2dee3fe00"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGame.html#bc0ebd6049ca9b2d5d2703f02f42d169">log</a> (string message)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ecrit dans un fichier de log les événements particuliers d'une partie.  <a href="#bc0ebd6049ca9b2d5d2703f02f42d169"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Serveur de partie. Représente une partie. 
<p>
Hérite de la classe <a class="el" href="classThreads.html" title="Permet d&#39;instancier des threads.">Threads</a>. Permet de créer une nouvelle partie, de connecter un joueur à une partie existante. Ecoute les mouvements de joueurs. <hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="89114067e8703608d01a448c056cca7b"></a><!-- doxytag: member="Game::Game" ref="89114067e8703608d01a448c056cca7b" args="(u_short portEcoute, u_short portLecture, u_short portEcouteServeur, u_short portEcouteDistant, u_short portEcouteServeurPrincipal, string adresseServeurPrincipal)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Game::Game           </td>
          <td>(</td>
          <td class="paramtype">u_short&nbsp;</td>
          <td class="paramname"> <em>portEcoute</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_short&nbsp;</td>
          <td class="paramname"> <em>portLecture</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_short&nbsp;</td>
          <td class="paramname"> <em>portEcouteServeur</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_short&nbsp;</td>
          <td class="paramname"> <em>portEcouteDistant</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_short&nbsp;</td>
          <td class="paramname"> <em>portEcouteServeurPrincipal</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">string&nbsp;</td>
          <td class="paramname"> <em>adresseServeurPrincipal</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructeur. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>portEcoute</em>&nbsp;</td><td>Port d'écoute TCP de connection des clients. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>portLecture</em>&nbsp;</td><td>Port de lecture UDP des mouvements des joueurs. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>portEcouteServeur</em>&nbsp;</td><td>Port d'écoute TCP des messages du serveur. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>portEcouteDistant</em>&nbsp;</td><td>Port d'écoute UDP du client distant. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>portEcouteServeurPrincipal</em>&nbsp;</td><td>Port d'écoute TCP du serveur principal distant. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>adresseServeurPrincipal</em>&nbsp;</td><td>Adresse du serveur principal distant. </td></tr>
  </table>
</dl>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="f3507978d7878ed70af6125c055dc54e"></a><!-- doxytag: member="Game::createUDPSock" ref="f3507978d7878ed70af6125c055dc54e" args="(u_short port)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Game::createUDPSock           </td>
          <td>(</td>
          <td class="paramtype">u_short&nbsp;</td>
          <td class="paramname"> <em>port</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Crée un socket UDP. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>Le port du socket à créer. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Un entier indiquant si la création s'est bien passée. </dd></dl>

</div>
</div><p>
<a class="anchor" name="583f268bcd557e81d891e303b4e0d5b7"></a><!-- doxytag: member="Game::createTCPSock" ref="583f268bcd557e81d891e303b4e0d5b7" args="(u_short port)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Game::createTCPSock           </td>
          <td>(</td>
          <td class="paramtype">u_short&nbsp;</td>
          <td class="paramname"> <em>port</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Crée un socket TCP. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>Le port du socket à créer. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Un entier indiquant si la création s'est bien passée. </dd></dl>

</div>
</div><p>
<a class="anchor" name="14a1c77341e97af0547641a9305819f8"></a><!-- doxytag: member="Game::serveurConnection" ref="14a1c77341e97af0547641a9305819f8" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Game::serveurConnection           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Connexion au serveur principal. Envoie le code d'identification. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Un entier indiquant si la connexion a été accepté. </dd></dl>

</div>
</div><p>
<a class="anchor" name="be8cac3aa5f22f8ebab71493aa3336b2"></a><!-- doxytag: member="Game::traiteServeur" ref="be8cac3aa5f22f8ebab71493aa3336b2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Game::traiteServeur           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Traite les messages du serveur principal et de partie. 
</div>
</div><p>
<a class="anchor" name="f781118c67b7f0c35cb84ce5ae0d9826"></a><!-- doxytag: member="Game::addPlayer" ref="f781118c67b7f0c35cb84ce5ae0d9826" args="(Joueur joueur)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Game::addPlayer           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classJoueur.html">Joueur</a>&nbsp;</td>
          <td class="paramname"> <em>joueur</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Ajoute un joueur à une partie existante. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>joueur</em>&nbsp;</td><td>Le joueur a ajouter à la partie. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Un entier indiquant si l'ajout s'est bien passée. </dd></dl>

</div>
</div><p>
<a class="anchor" name="4a07a945266f9be1c5cc96c2dee3fe00"></a><!-- doxytag: member="Game::removePlayer" ref="4a07a945266f9be1c5cc96c2dee3fe00" args="(string adresse)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Game::removePlayer           </td>
          <td>(</td>
          <td class="paramtype">string&nbsp;</td>
          <td class="paramname"> <em>adresse</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Déconnecte un joueur d'une partie. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>adresse</em>&nbsp;</td><td>L'adresse du joueur à supprimer de la partie. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Un entier indiquant si la suppression s'est bien passée. </dd></dl>

</div>
</div><p>
<a class="anchor" name="bc0ebd6049ca9b2d5d2703f02f42d169"></a><!-- doxytag: member="Game::log" ref="bc0ebd6049ca9b2d5d2703f02f42d169" args="(string message)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Game::log           </td>
          <td>(</td>
          <td class="paramtype">string&nbsp;</td>
          <td class="paramname"> <em>message</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Ecrit dans un fichier de log les événements particuliers d'une partie. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>message</em>&nbsp;</td><td>Le message à logguer.</td></tr>
  </table>
</dl>
Écrit à la fin du fichier sans écraser les données déjà présentes. 
</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li>/home/cedric/workspace/serveurPartie/game.h<li>/home/cedric/workspace/serveurPartie/game.cpp</ul>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Jan 17 12:06:58 2008 for Serveur de partie by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.4 </small></address>
</body>
</html>