/**
 * \file AllocateurXMLTag.h
 * Classe de gestion d'un allocateur d'objets XMLTag.
 * 
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */

#ifndef ____ALLOCATEURXMLTAG____
#define ____ALLOCATEURXMLTAG____

class AllocateurXMLTag;
class XMLTag;

/**
 * \class AllocateurXMLTag
 * Classe de gestion d'un allocateur d'objets XMLTag.
 * 
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */

class AllocateurXMLTag {

  public :

/**
 * Constructeur pour un objet AllocateurXMLTag.
 *
 * @param size La taille d'allocation pour les objets XMLTag.
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    AllocateurXMLTag(int size);

/**
 * Destructeur pour un objet AllocateurXMLTag.
 *
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    ~AllocateurXMLTag(void);

/**
 * Allocation d'un objet XMLTag.
 *
 * @return Le tag alloue.
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    XMLTag *mynew(void);

/**
 * Allocation d'un objet XMLTag.
 *
 * @param Le nom a donner au tag.
 * @return Le tag alloue.
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    XMLTag *mynew(char *name);

/**
 * Retour du nombre de XMLTag alloues.
 *
 * @return Le nombre de XMLTag alloues.
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    int getNombreXMLTagAlloues(void);

/**
 * Retour de la quantite de memoire occupee par this.
 *
 * @return La quantite de memoire occupee par this.
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    size_t getUsedMemory(void);

/**
 * Retour du nombre de handle memoire occupes par this.
 *
 * @return Le nombre de handle memoire occupes par this.
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    long getUsedHandles(void);

  private :
    int size;
    int sp;
    int spt;
    XMLTag **t;
};

#endif
