00001 /*! \file IniSection.h 00002 \brief Gestion de fichier ini. 00003 00004 Gestion d'une section dans \a Ini. 00005 00006 \author aerith (http://aerith.fr) 00007 \version 1.0 00008 \date 01/07/2008 00009 */ 00010 00011 #ifndef INCLUDE_RSRC_INI_SECTION 00012 #define INCLUDE_RSRC_INI_SECTION 00013 00014 #include "../Error/Error.h" 00015 #include "IniItem.h" 00016 #include <vector> 00017 #include <string> 00018 00019 using namespace std; 00020 00021 00022 //! Gestion d'une section. 00023 /*! Gestion d'une section dans \a Ini. 00024 */ 00025 class IniSection 00026 { 00027 private : 00028 string name; /*!< Nom de la section. */ 00029 std::vector<IniItem *> items; /*!< Chaque ligne est un item. */ 00030 IniItem *itemVide; /*!< Item vide pour évité les segfault. */ 00031 00032 public : 00033 /*! Initialise avec des parametres par defaut. 00034 \param pName nom de l'item 00035 */ 00036 IniSection(const char *pName); 00037 00038 /*! Libere proprement la mémoire. 00039 */ 00040 ~IniSection(); 00041 00042 //! Ajoute un item. 00043 /*! Ajoute un item avec comme nom \a pName. 00044 \sa DelItem(), GetItem() et GetNbItem(). 00045 */ 00046 void AddItem(const char *pName); 00047 00048 //! Supprime un item. 00049 /*! Supprime l'item étant à la position \a iPos. 00050 \param iPos position de l'item. 00051 \sa AddItem(), GetItem() et GetNbItem(). 00052 */ 00053 void DelItem(unsigned int iPos); 00054 00055 //! Supprime un item. 00056 /*! Supprime l'item de nom \a pName. 00057 \param pName nom de l'item. 00058 \sa AddItem(), GetItem() et GetNbItem(). 00059 */ 00060 void DelItem(const char *pName); 00061 00062 //! Retourne un item par sa position. 00063 /*! Permet l'acces à l'item étant à la position \a iPos. 00064 \param iPos position de l'item. 00065 \return pointeur sur la classe de l'item. 00066 \sa AddItem(), DelItem() et GetNbItem(). 00067 */ 00068 IniItem *GetItem(unsigned int iPos); 00069 00070 //! Retourne le dernier item. 00071 /*! Permet l'acces au dernier item ajouter. 00072 \return pointeur sur la classe de l'item. 00073 \sa AddItem(), DelItem() et GetNbItem(). 00074 */ 00075 IniItem *GetItem(); 00076 00077 //! Retourne un item par son nom. 00078 /*! Permet l'acces à l'item ayant le nom \a pName. 00079 \param pName nom de l'item. 00080 \param iOcur numéro de l'occurence si plusieur item on le même nom. 00081 \return pointeur sur la class de l'item. 00082 \sa AddItem(), DelItem() et GetNbItem(). 00083 */ 00084 IniItem *GetItem(const char *pName, unsigned int iOcur = 0); 00085 00086 //! Retourne le nom d'un item. 00087 /*! Retourne le nom de l'item étant à la position \a iPos. 00088 \param iPos position de l'item. 00089 \return nom de l'item. 00090 */ 00091 const char *GetItemName(unsigned int iPos); 00092 00093 //! Retourne le nombre d'item. 00094 /*! Retourne le nombre d'item contenu dans la section. 00095 \return nombre d'item dans la section. 00096 \sa AddItem(), DelItem() et GetItem(). 00097 */ 00098 inline unsigned int GetNbItem() 00099 { 00100 return items.size(); 00101 }; 00102 00103 //! Retourne le nombre d'item. 00104 /*! Retourne le nombre d'item se nomant \a pName contenu dans la section. 00105 \param pName nom de l'item. 00106 \return nombre d'item dans la section. 00107 \sa AddItem(), DelItem() et GetItem(). 00108 */ 00109 unsigned int GetNbItem(const char *pName); 00110 00111 //! Retourne le nom de la section. 00112 /*! Retourne le nom le nom de la section \a Name. 00113 \return un pointeur sur le nom de la section \a Name. 00114 \sa SetName(). 00115 */ 00116 inline const char *GetName() 00117 { 00118 return name.data(); 00119 }; 00120 00121 //! Définie le nom de la section. 00122 /*! Définie le nom de la section \a name. 00123 \param pName nom de la section. 00124 \return un pointeur sur le nom de la section \a name. 00125 \sa GetName(). 00126 */ 00127 inline const char *SetName(const char *pName) 00128 { 00129 name = pName; 00130 return name.data(); 00131 }; 00132 }; 00133 00134 00135 #endif 00136