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

Référence de la classe Ini

Gestion de fichier ini. Plus de détails...

#include <Ini.h>

Liste de tous les membres

Fonctions membres publiques

 Ini (const char *pName)
 ~Ini ()
void Load ()
 Charge le fichier à la suite.
void Save ()
 Sauve les données.
void AddSection (const char *pName)
 Ajoute une section.
void DelSection (unsigned int iPos)
 Supprime une section.
void DelSection (const char *pName)
 Supprime une section.
IniSectionGetSection (unsigned int iPos)
 Retourne une section par sa position.
IniSectionGetSection (const char *pName, unsigned int iOcur=0)
 Retourne une section par son nom.
const char * GetSectionName (unsigned int iPos)
 Retourne le nom d'une section.
unsigned int GetNbSection ()
 Retourne le nombre de section.
unsigned int GetNbSection (const char *pName)
 Retourne le nombre de section.
unsigned int GetNbInstance ()
 Retourne le nombre d'instance.
const char * GetName ()
 Retourne le nom du fichier.
const char * SetName (const char *pName)
 Définie le nom du fichier.


Description détaillée

Utilisation de fichier structurer .ini.

Définition à la ligne 29 du fichier Ini.h.


Documentation des contructeurs et destructeur

Ini::Ini const char *  pName  ) 
 

Charge le fichier ini en mémoire.

Paramètres:
pName nom du fichier ini

Définition à la ligne 16 du fichier Ini.cpp.

Références MutexInit().

00017 {
00018     if(!iniInstance)
00019         MutexInit(&iniMutex);
00020 
00021     iniInstance++;
00022 
00023     fileName = pName;
00024     sectionVide = new IniSection("");
00025 }

Ini::~Ini  ) 
 

Libere proprement la mémoire, ne sauve pas dans le fichier.

Voir également:
SaveIni().

Définition à la ligne 27 du fichier Ini.cpp.

Références MutexStop().

00028 {
00029     unsigned int    i;
00030 
00031     for(i = 0; i < sections.size(); i++)
00032         delete sections[i];
00033     sections.clear();
00034 
00035     delete sectionVide;
00036 
00037     iniInstance--;
00038 
00039     if(!iniInstance)
00040         MutexStop(&iniMutex);
00041 }


Documentation des fonctions membres

void Ini::AddSection const char *  pName  ) 
 

Ajoute une section.

Paramètres:
pName nom de la section
Voir également:
DelSection(), GetSection() et GetNbSection().

Définition à la ligne 155 du fichier Ini.cpp.

Référencé par Load().

00156 {
00157     sections.push_back(new IniSection(pName));
00158 }

void Ini::DelSection const char *  pName  ) 
 

Supprime la section de nom pName.

Paramètres:
pName nom de la section.
Voir également:
AddSection(), GetSection() et GetNbSection().

Définition à la ligne 166 du fichier Ini.cpp.

Références GetName().

00167 {
00168     for(unsigned int i = 0; i < sections.size(); i++)
00169     {
00170         if(!strcmp(sections[i]->GetName(), pName))
00171         {
00172             sections.erase(sections.begin() + i);
00173             return;
00174         }
00175     }
00176 }

void Ini::DelSection unsigned int  iPos  ) 
 

Supprime la section étant à la position iPos.

Paramètres:
iPos position de la section.
Voir également:
AddSection(), GetSection() et GetNbSection().

Définition à la ligne 160 du fichier Ini.cpp.

00161 {
00162     if(iPos < sections.size())
00163         sections.erase(sections.begin() + iPos);
00164 }

const char* Ini::GetName  )  [inline]
 

Retourne le nom le nom du fichier ini name.

Renvoie:
un pointeur sur le nom du fichier ini name.
Voir également:
SetName().

Définition à la ligne 136 du fichier Ini.h.

Référencé par DelSection(), GetNbSection(), GetSection(), et Save().

00137     {
00138         return fileName.data();
00139     };

unsigned int Ini::GetNbInstance  )  [inline]
 

Retourne le nombre d'instance de la class (pour multitache).

Renvoie:
nombre d'instance de la class.

Définition à la ligne 126 du fichier Ini.h.

00127     {
00128         return iniInstance;
00129     };

unsigned int Ini::GetNbSection const char *  pName  ) 
 

Retourne le nombre de section ayant pour nom pName contenu dans le fichier ini.

Paramètres:
pName nom de la section.
Renvoie:
nombre de section dans le fichier ini se nomant pName.
Voir également:
AddSection(), DelSection() et GetSection().

Définition à la ligne 212 du fichier Ini.cpp.

Références GetName().

00213 {
00214     unsigned int    nb = 0, i;
00215 
00216     for(i = 0; i < sections.size(); i++)
00217     {
00218         if(!strcmp(sections[i]->GetName(), pName))
00219             nb++;
00220     }
00221 
00222     return nb;
00223 }

unsigned int Ini::GetNbSection  )  [inline]
 

Retourne le nombre de section contenu dans le fichier ini.

Renvoie:
nombre de section dans le fichier ini.
Voir également:
AddSection(), DelSection() et GetSection().

Définition à la ligne 109 du fichier Ini.h.

00110     {
00111         return sections.size();
00112     };

IniSection * Ini::GetSection const char *  pName,
unsigned int  iOcur = 0
 

Permet l'acces à la section ayant le nom pName.

Paramètres:
pName nom de la section.
iOcur numéro de l'occurence si plusieur section on le même nom.
Renvoie:
pointeur sur la class de la section.
Voir également:
AddSection(), DelSection() et GetNbSection().

Définition à la ligne 186 du fichier Ini.cpp.

Références GetName().

00187 {
00188     unsigned int    ocur = 0, i;
00189 
00190     for(i = 0; i < sections.size(); i++)
00191     {
00192         if(!strcmp(sections[i]->GetName(), pName))
00193         {
00194             if(ocur == iOcur)
00195                 return sections[i];
00196 
00197             ocur++;
00198         }
00199     }
00200 
00201     return sectionVide;
00202 }

IniSection * Ini::GetSection unsigned int  iPos  ) 
 

Permet l'acces à la section étant à la position iPos.

Paramètres:
iPos position de la section.
Renvoie:
pointeur sur la class de la section.
Voir également:
AddSection(), DelSection() et GetNbSection().

Définition à la ligne 178 du fichier Ini.cpp.

Référencé par Langage::Langage().

00179 {
00180     if(iPos < sections.size())
00181         return sections[iPos];
00182 
00183     return sectionVide;
00184 }

const char * Ini::GetSectionName unsigned int  iPos  ) 
 

Retourne le nom de la section étant à la position iPos.

Paramètres:
iPos position de la section.
Renvoie:
nom de la section.

Définition à la ligne 204 du fichier Ini.cpp.

Références IniSection::GetName().

00205 {
00206     if(iPos < sections.size())
00207         return sections[iPos]->GetName();
00208 
00209     return NULL;
00210 };

void Ini::Load  ) 
 

Charge le fichier à la suite des données actuelles.

Définition à la ligne 43 du fichier Ini.cpp.

Références IniSection::AddItem(), AddSection(), CATCH, IniSection::GetItem(), IsAlphaNum(), MutexLock(), MutexUnLock(), IniItem::SetData(), THROW, et TRY.

00044 {
00045     FILE    *fichier;
00046     char    data[INI_BUFFERSIZE];
00047     char    *p;
00048     char    c;
00049     int     m;
00050     TRY
00051     
00052     MutexLock(&iniMutex);
00053     p = data;
00054     m = 0;
00055 
00056     fichier = fopen(fileName.data(), "r");
00057     if(!fichier)
00058         THROW(ERROR_C_DATA_FILE)
00059 
00060     while(!feof(fichier))
00061     {
00062         c = fgetc(fichier);
00063         if(c)
00064         {
00065             *p = '\0';
00066 
00067             switch(c)
00068             {
00069                 case    '#' :
00070                 case    ';' :
00071                     if(m == 0)
00072                         m = 10;
00073                     else
00074                         *p++ = c;
00075                     break;
00076                 case    '[' :
00077                     if(m == 0)
00078                         p = data;
00079                     else
00080                         *p++ = c;
00081                     break;
00082                 case    ']' :
00083                     if(m == 0)
00084                     {
00085                         if(IsAlphaNum(data))
00086                             AddSection(data);
00087 
00088                         p = data;
00089                     }
00090                     else
00091                         *p++ = c;
00092                     break;
00093                 case    '=' :
00094                     if(m == 0)
00095                     {
00096                         if(IsAlphaNum(data) && sections.size())
00097                         {
00098                             sections.back()->AddItem(data);
00099                             m = 1;
00100                             p = data;
00101                         }
00102                     }
00103                     else
00104                         *p++ = c;
00105                     break;
00106                 case    '\0':
00107                 case    '\n':
00108                 case    '\r':
00109                     if(m == 1)
00110                         sections.back()->GetItem()->SetData(data);
00111 
00112                     m = 0;
00113                     p = data;
00114                     break;
00115                 default     :
00116                     *p++ = c;
00117             }
00118         }
00119     }
00120 
00121     fclose(fichier);
00122 
00123     MutexUnLock(&iniMutex);
00124     
00125     CATCH
00126 }

void Ini::Save  ) 
 

Sauve toutes les données dans le fichier ini.

Définition à la ligne 128 du fichier Ini.cpp.

Références CATCH, GetName(), MutexLock(), MutexUnLock(), THROW, et TRY.

00129 {
00130     FILE            *fichier;
00131     unsigned int    i, j;
00132     TRY
00133     
00134     MutexLock(&iniMutex);
00135 
00136     fichier = fopen(fileName.data(), "w");
00137     if(fichier)
00138         THROW(ERROR_C_DATA_FILE)
00139 
00140     for(i = 0; i < sections.size(); i++)
00141     {
00142         fprintf(fichier, "[%s]\n", sections[i]->GetName());
00143 
00144         for(j = 0; j < sections[i]->GetNbItem(); j++)
00145             fprintf(fichier, "%s=%s\n", sections[i]->GetItem(j)->GetName(), sections[i]->GetItem(j)->GetData());
00146     }
00147 
00148     fclose(fichier);
00149 
00150     MutexUnLock(&iniMutex);
00151     
00152     CATCH
00153 }

const char* Ini::SetName const char *  pName  )  [inline]
 

Définie le nom du fichier ini name.

Paramètres:
pName nom du fichier.
Renvoie:
un pointeur sur le nom du fichier name.
Voir également:
GetName().

Définition à la ligne 147 du fichier Ini.h.

00148     {
00149         fileName = pName;
00150         return fileName.data();
00151     };


La documentation de cette classe a été générée à partir des fichiers suivants:
Généré le Thu Jun 12 09:12:30 2008 pour A.I.F. par  doxygen 1.3.9.1