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

#ifndef ____ALLOCATEURXMLPROPERTY____
#define ____ALLOCATEURXMLPROPERTY____

class AllocateurXMLProperty;
class XMLProperty;

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

class AllocateurXMLProperty {

  public :

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

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

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

/**
 * Retour du nombre de XMLProperty alloues.
 *
 * @return Le nombre de XMLProperty alloues.
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    int getNombreXMLPropertyAlloues(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;
    XMLProperty **t;
};

#endif
