Page principale | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier | Pages associées

Ini.h

Aller à la documentation de ce fichier.
00001 /*! \file Ini.h
00002     \brief Gestion de fichier ini.
00003 
00004     Utilisation de fichier structurer .ini.
00005 
00006     \author     aerith (http://aerith.fr)
00007     \version    1.0
00008     \date       01/07/2008
00009 */
00010 
00011 #ifndef INCLUDE_RSRC_INI
00012 #define INCLUDE_RSRC_INI
00013 
00014 #include    "IniSection.h"
00015 #include    "../Surcouche/SurcoucheMultitache.h"
00016 #include    "../Tools/Tools.h"
00017 #include    <stdio.h>
00018 #include    <vector>
00019 #include    <string>
00020 
00021 using namespace std;
00022 
00023 
00024 #define     INI_BUFFERSIZE      10240           /*!< Taille buffer de travaille.                        */
00025 
00026 //! Gestion de fichier ini.
00027 /*! Utilisation de fichier structurer .ini.
00028 */
00029 class Ini
00030 {
00031 private :
00032     string                      fileName;       /*!< Nom du fichier.                                    */
00033     std::vector<IniSection *>   sections;       /*!< Chaque lignes est une section.                     */
00034     static unsigned int         iniInstance;    /*!< Compte les instance de la class.                   */
00035     static MUTEX                iniMutex;       /*!< Utiliser des que l'on accede à un fichier.         */
00036     IniSection                  *sectionVide;   /*!< Section vide pour évité les segfault.              */
00037 
00038 public  :
00039     /*! Charge le fichier ini en mémoire.
00040         \param pName nom du fichier ini
00041     */
00042     Ini(const char *pName);
00043 
00044     /*! Libere proprement la mémoire, ne sauve pas dans le fichier.
00045         \sa SaveIni().
00046     */
00047     ~Ini();
00048 
00049     //! Charge le fichier à la suite.
00050     /*! Charge le fichier à la suite des données actuelles.
00051     */
00052     void    Load();
00053 
00054     //! Sauve les données.
00055     /*! Sauve toutes les données dans le fichier ini.
00056     */
00057     void    Save();
00058 
00059     //! Ajoute une section.
00060     /*! Ajoute une section.
00061         \param pName nom de la section
00062         \sa DelSection(), GetSection() et GetNbSection().
00063     */
00064     void    AddSection(const char *pName);
00065 
00066     //! Supprime une section.
00067     /*! Supprime la section étant à la position \a iPos.
00068         \param iPos position de la section.
00069         \sa AddSection(), GetSection() et GetNbSection().
00070     */
00071     void    DelSection(unsigned int iPos);
00072 
00073     //! Supprime une section.
00074     /*! Supprime la section de nom \a pName.
00075         \param pName nom de la section.
00076         \sa AddSection(), GetSection() et GetNbSection().
00077     */
00078     void    DelSection(const char *pName);
00079 
00080     //! Retourne une section par sa position.
00081     /*! Permet l'acces à la section étant à la position \a iPos.
00082         \param iPos position de la section.
00083         \return pointeur sur la class de la section.
00084         \sa AddSection(), DelSection() et GetNbSection().
00085     */
00086     IniSection  *GetSection(unsigned int iPos);
00087 
00088     //! Retourne une section par son nom.
00089     /*! Permet l'acces à la section ayant le nom \a pName.
00090         \param pName nom de la section.
00091         \param iOcur numéro de l'occurence si plusieur section on le même nom.
00092         \return pointeur sur la class de la section.
00093         \sa AddSection(), DelSection() et GetNbSection().
00094     */
00095     IniSection  *GetSection(const char *pName, unsigned int iOcur = 0);
00096 
00097     //! Retourne le nom d'une section.
00098     /*! Retourne le nom de la section étant à la position \a iPos.
00099         \param iPos position de la section.
00100         \return nom de la section.
00101     */
00102     const char  *GetSectionName(unsigned int iPos);
00103 
00104     //! Retourne le nombre de section.
00105     /*! Retourne le nombre de section contenu dans le fichier ini.
00106         \return nombre de section dans le fichier ini.
00107         \sa AddSection(), DelSection() et GetSection().
00108     */
00109     inline unsigned int     GetNbSection()
00110     {
00111         return sections.size();
00112     };
00113 
00114     //! Retourne le nombre de section.
00115     /*! Retourne le nombre de section ayant pour nom \a pName contenu dans le fichier ini.
00116         \param pName nom de la section.
00117         \return nombre de section dans le fichier ini se nomant \a pName.
00118         \sa AddSection(), DelSection() et GetSection().
00119     */
00120     unsigned int    GetNbSection(const char *pName);
00121 
00122     //! Retourne le nombre d'instance.
00123     /*! Retourne le nombre d'instance de la class (pour multitache).
00124         \return nombre d'instance de la class.
00125     */
00126     inline unsigned int     GetNbInstance()
00127     {
00128         return iniInstance;
00129     };
00130 
00131     //! Retourne le nom du fichier.
00132     /*! Retourne le nom le nom du fichier ini \a name.
00133         \return un pointeur sur le nom du fichier ini \a name.
00134         \sa SetName().
00135     */
00136     inline const char   *GetName()
00137     {
00138         return fileName.data();
00139     };
00140 
00141     //! Définie le nom du fichier.
00142     /*! Définie le nom du fichier ini \a name.
00143         \param pName nom du fichier.
00144         \return un pointeur sur le nom du fichier \a name.
00145         \sa GetName().
00146     */
00147     inline const char   *SetName(const char *pName)
00148     {
00149         fileName = pName;
00150         return fileName.data();
00151     };
00152 };
00153 
00154 
00155 #endif
00156 

Généré le Thu Jun 12 09:12:29 2008 pour A.I.F. par  doxygen 1.3.9.1