#include <DataBaseTable.h>
Fonctions membres publiques | |
| DataBaseTable (char *pRepertoire, int iId, int iNbData=0, char *pName=NULL) | |
| ~DataBaseTable () | |
| int | AddEntry () |
| Ajoute une entrée. | |
| int | DelEntry (int iId) |
| Supprime une entrée. | |
| DataBaseEntry * | GetEntry (int iId) |
| Retourne une entrée. | |
| DataBaseEntry * | GetEntryNo (int iPos) |
| Retourne une entrée. | |
| int | GetEntryId (int iPos) |
| Retourne l'id d'une entrée. | |
| DataBaseData * | GetData (int iId, int iPos) |
| Retourne une data d'une entrée. | |
| DataBaseData * | GetData (int iId, char *pName) |
| Retourne une data d'une entrée. | |
| DataBaseData * | GetDataNo (int iPos, int iPos2) |
| Retourne une data d'une entrée. | |
| DataBaseData * | GetDataNo (int iPos, char *pName) |
| Retourne une data d'une entrée. | |
| int | GetNbEntry () |
| Retourne le nombre d'entrée. | |
| int | GetId () |
| Retourne l'id de la table. | |
| char * | GetName () |
| Retourne le nom de la table. | |
| char * | SetName (char *pName) |
| Définie le nom de la table. | |
| int | GetNbData () |
| Retourne le nombre de data d'une entrée. | |
| int | AddLabel (char *pName) |
| Ajoute un label. | |
| int | DelLabel (char *pName) |
| Supprimse un label. | |
| char * | GetLabel (int iPos) |
| Retourne le nom d'un champ. | |
| char * | SetLabel (int iPos, char *pName) |
| Définie le nom d'un champ. | |
| int | SaveEntrys () |
| Sauve le fichier des entrées. | |
Définition à la ligne 27 du fichier DataBaseTable.h.
|
||||||||||||||||||||
|
Charge la table en mémoire avec des paramétres par defauts.
Définition à la ligne 17 du fichier DataBaseTable.cpp. Références DB_NAME, DB_REPERTOIRE, et MutexInit(). 00018 {
00019 strncpy(Repertoire, pRepertoire, DB_REPERTOIRE);
00020 Id = iId;
00021 NbData = iNbData;
00022 NbEntry = 0;
00023 IdMax = 0;
00024
00025 for(int i = 0; i < NbData; i++)
00026 {
00027 Labels.push_back(new char[5]);
00028 sprintf(Labels[i], "%i", i);
00029 }
00030
00031 if(pName)
00032 strncpy(Name, pName, DB_NAME);
00033
00034 if(!DBTableCount)
00035 MutexInit(&DBMutexTable);
00036
00037 DBTableCount++;
00038
00039 LoadEntrys();
00040 }
|
|
|
Sauve la table dans un fichier. Définition à la ligne 42 du fichier DataBaseTable.cpp. Références MutexStop(). 00043 {
00044 int i;
00045
00046 for(i = 0; i < NbEntry; i++)
00047 delete Entrys[i];
00048 Entrys.clear();
00049
00050 for(i = 0; i < NbData; i++)
00051 delete [] Labels[i];
00052 Labels.clear();
00053
00054 DBTableCount--;
00055
00056 if(!DBTableCount)
00057 MutexStop(&DBMutexTable);
00058 }
|
|
|
Ajoute une entrée avec un nouvelle Id.
Définition à la ligne 206 du fichier DataBaseTable.cpp. 00207 {
00208 Entrys.push_back(new DataBaseEntry(++IdMax, NbData));
00209
00210 if(!Entrys[NbEntry])
00211 return ERROR_C_MEMORY;
00212
00213 NbEntry++;
00214
00215 return ERROR_C_NOERROR;
00216 }
|
|
|
Ajoute le label pName à la table.
Définition à la ligne 240 du fichier DataBaseTable.cpp. Références TRY. 00241 {
00242 int i, f = 0;
00243 BEGIN
00244
00245 for(i = 0; (i < NbData) && !f; i++)
00246 if(!strcmp(pName, Labels[i]))
00247 f = 1;
00248
00249 if(!f)
00250 {
00251 i = strlen(pName);
00252 Labels.push_back(new char[i + 1]);
00253
00254 if(!Labels[NbData])
00255 CERROR = ERROR_C_MEMORY;
00256 else
00257 {
00258 strncpy(Labels.back(), pName, i);
00259
00260 for(i = 0; (i < NbEntry) && !CERROR; i++)
00261 {
00262 TRY CERROR = Entrys[i]->AddData();
00263 }
00264
00265 NbData++;
00266 }
00267 }
00268
00269 ENDBEGIN;
00270 }
|
|
|
Supprime l'entrée ayant l'id iId.
Définition à la ligne 218 du fichier DataBaseTable.cpp. 00219 {
00220 int i;
00221
00222 if(NbEntry > 0)
00223 {
00224 for(i = 0; i < NbEntry; i++)
00225 {
00226 if(Entrys[i]->GetId() == iId)
00227 {
00228 Entrys.erase(Entrys.begin() + i);
00229
00230 NbEntry--;
00231
00232 return ERROR_C_NOERROR;
00233 }
00234 }
00235 }
00236
00237 return ERROR_C_NOERROR;
00238 }
|
|
|
Supprime le label pName de la table.
Définition à la ligne 273 du fichier DataBaseTable.cpp. 00274 {
00275 int i, j;
00276
00277 for(i = 0; i < NbData; i++)
00278 {
00279 if(!strcmp(Labels[i], pName))
00280 {
00281 Labels.erase(Labels.begin() + i);
00282
00283 for(j = 0; j < NbEntry; Entrys[j++]->DelData(i));
00284
00285 NbData--;
00286 }
00287 }
00288
00289 return ERROR_C_NOERROR;
00290 }
|
|
||||||||||||
|
Permet l'acces à la data de label pName de l'entrée ayant l'id iId.
Définition à la ligne 148 du fichier DataBaseTable.h. 00149 {
00150 for(int i = 0; i < NbEntry; i++)
00151 {
00152 if(Entrys[i]->GetId() == iId)
00153 {
00154 for(int j = 0; j < NbData; j++)
00155 {
00156 if(!strcmp(Labels[j], pName))
00157 return Entrys[i]->GetData(j);
00158 }
00159 }
00160 }
00161
00162 return NULL;
00163 };
|
|
||||||||||||
|
Permet l'acces à la data à la position iPos de l'entrée ayant l'id iId.
Définition à la ligne 127 du fichier DataBaseTable.h. Référencé par SaveEntrys(). 00128 {
00129 if(iPos < NbData)
00130 {
00131 for(int i = 0; i < NbEntry; i++)
00132 {
00133 if(Entrys[i]->GetId() == iId)
00134 return Entrys[i]->GetData(iPos);
00135 }
00136 }
00137
00138 return NULL;
00139 };
|
|
||||||||||||
|
Permet l'acces à la data de label pName de l'entrée étant à la position iPos.
Définition à la ligne 187 du fichier DataBaseTable.h. 00188 {
00189 if(iPos < NbEntry)
00190 {
00191 for(int i = 0; i < NbData; i++)
00192 {
00193 if(!strcmp(Labels[i], pName))
00194 return Entrys[iPos]->GetData(i);
00195 }
00196 }
00197
00198 return NULL;
00199 };
|
|
||||||||||||
|
Permet l'acces à la data à la position iPos de l'entrée étant à la position iPos.
Définition à la ligne 172 du fichier DataBaseTable.h. 00173 {
00174 if((iPos < NbEntry) && (iPos2 < NbData))
00175 return Entrys[iPos]->GetData(iPos2);
00176
00177 return NULL;
00178 };
|
|
|
Permet l'acces à l'entrée ayant l'id iId.
Définition à la ligne 82 du fichier DataBaseTable.h. 00083 {
00084 for(int i = 0; i < NbEntry; i++)
00085 {
00086 if(Entrys[i]->GetId() == iId)
00087 return Entrys[i];
00088 }
00089
00090 return NULL;
00091 };
|
|
|
Retourne l'id de l'entrée étant a la position iPos.
Définition à la ligne 112 du fichier DataBaseTable.h. 00113 {
00114 if(iPos < NbEntry)
00115 return Entrys[iPos]->GetId();
00116
00117 return 0;
00118 };
|
|
|
Permet l'acces à l'entrée étant a la position iPos.
Définition à la ligne 99 du fichier DataBaseTable.h. 00100 {
00101 if(iPos < NbEntry)
00102 return Entrys[iPos];
00103
00104 return NULL;
00105 };
|
|
|
Retourne l'id Id de la table.
Définition à la ligne 216 du fichier DataBaseTable.h. 00217 {
00218 return Id;
00219 };
|
|
|
Retourne le nom du champ à la position iPos.
Définition à la ligne 273 du fichier DataBaseTable.h. 00274 {
00275 if(iPos < NbData)
00276 return Labels[iPos];
00277
00278 return NULL;
00279 };
|
|
|
Retourne le nom Name de la table.
Définition à la ligne 226 du fichier DataBaseTable.h. 00227 {
00228 return Name;
00229 };
|
|
|
Retourne le nombre de data NbData d'une entrée de la table.
Définition à la ligne 246 du fichier DataBaseTable.h. 00247 {
00248 return NbData;
00249 };
|
|
|
Retourne le nombre d'entrée contenu dans la table.
Définition à la ligne 206 du fichier DataBaseTable.h. 00207 {
00208 return NbEntry;
00209 };
|
|
|
Sauve le fichier "x.dbt", d'info sur les entrées et la table.
Définition à la ligne 143 du fichier DataBaseTable.cpp. Références GetData(), MutexLock(), et MutexUnLock(). 00144 {
00145 FILE *Fichier;
00146 char Buffer[DB_BUFFERSIZE];
00147 int i, j;
00148 int Size;
00149 int EntryId;
00150 BEGIN
00151
00152 sprintf(Buffer, "%s/%i.dbt", Repertoire, Id);
00153
00154 MutexLock(&DBMutexTable);
00155
00156 Fichier = fopen(Buffer, "w");
00157 if(Fichier)
00158 {
00159 TRYIF(fwrite(&NbData, sizeof(int), 1, Fichier), ERROR_C_DATA_FILE)
00160
00161 for(i = 0; (i < NbData) && !CERROR; i++)
00162 {
00163 Size = strlen(Labels[i]);
00164
00165 TRYIF(fwrite(&Size, sizeof(int), 1, Fichier), ERROR_C_DATA_FILE)
00166
00167 if(Size)
00168 {
00169 TRYIF(fwrite(Labels[i], sizeof(char), Size, Fichier), ERROR_C_DATA_FILE)
00170 }
00171 }
00172
00173 TRYIF(fwrite(&NbEntry, sizeof(int), 1, Fichier), ERROR_C_DATA_FILE)
00174
00175 if(NbEntry)
00176 {
00177 for(i = 0; i < NbEntry; i++)
00178 {
00179 EntryId = Entrys[i]->GetId();
00180
00181 TRYIF(fwrite(&EntryId, sizeof(int), 1, Fichier), ERROR_C_DATA_FILE)
00182
00183 for(j = 0; j < NbData; j++)
00184 {
00185 Size = Entrys[i]->GetData(j)->GetSize();
00186
00187 TRYIF(fwrite(&Size, sizeof(int), 1, Fichier), ERROR_C_DATA_FILE)
00188
00189 if(Size)
00190 {
00191 TRYIF(fwrite(Entrys[i]->GetData(j)->GetData(), sizeof(char), Size, Fichier), ERROR_C_DATA_FILE)
00192 }
00193 }
00194 }
00195 }
00196
00197 fclose(Fichier);
00198 }
00199 ENDTRY(ERROR_C_DATA_FILE)
00200
00201 MutexUnLock(&DBMutexTable);
00202
00203 ENDBEGIN
00204 }
|
|
||||||||||||
|
Définie le nom du champ à la position iPos.
Définition à la ligne 292 du fichier DataBaseTable.cpp. 00293 {
00294 int i, f = 0;
00295
00296 if(iPos < NbData)
00297 {
00298 for(i = 0; (i < NbData) && !f; i++)
00299 if((i != iPos) && !strcmp(pName, Labels[i]))
00300 f = 1;
00301
00302 if(!f)
00303 {
00304 delete [] Labels[iPos];
00305 Labels[iPos] = new char[strlen(pName) + 1];
00306 return strcpy(Labels[iPos], pName);
00307 }
00308 }
00309
00310 return NULL;
00311 }
|
|
|
Définie le nom Name de la table.
Définition à la ligne 237 du fichier DataBaseTable.h. Références DB_NAME. 00238 {
00239 return strncpy(Name, pName, DB_NAME);
00240 };
|
1.3.9.1