summaryrefslogtreecommitdiff
path: root/lib/hash.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/hash.c')
-rw-r--r--lib/hash.c245
1 files changed, 125 insertions, 120 deletions
diff --git a/lib/hash.c b/lib/hash.c
index 1def58f..c0f5bc5 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -4,200 +4,205 @@
#include "hash.h"
#include "exceptions.h"
#include "config.h"
-static char *CHAINEHACHAGE = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
+static char *CHAINEHACHAGE =
+
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
static int FonctionHachage(char *clef)
{
- unsigned int i;
+ unsigned int i;
- if (!clef) {
- exception(1, _("Internal error into hashing"));
- }
+ if (!clef) {
+ exception(1, _("Internal error into hashing"));
+ }
- for (i = 0; i < strlen(CHAINEHACHAGE); i++) {
- if (clef[0] == CHAINEHACHAGE[i]) {
- return (i);
- }
+ for (i = 0; i < strlen(CHAINEHACHAGE); i++) {
+ if (clef[0] == CHAINEHACHAGE[i]) {
+ return (i);
}
- return strlen(CHAINEHACHAGE);
+ }
+ return strlen(CHAINEHACHAGE);
}
_Element CreerElement(char *Nom, _TypeVariable Var)
{
- _Element e;
+ _Element e;
- e.NomVar = Estrdup(Nom);
+ e.NomVar = Estrdup(Nom);
- e.Variable = Var;
- return (e);
+ e.Variable = Var;
+ return (e);
}
static _ListeChaine InserTete(_ListeChaine l, _Element e)
{
- _ListeChaine aux;
- unsigned int i;
-
- aux = (_ListeChaine) Emalloc(sizeof(struct _LstChn));
- aux->Elem.NomVar = (char *) Emalloc(sizeof(char) * (strlen(e.NomVar) + 1));
-
- for (i = 0; i <= strlen(e.NomVar); i++) {
- aux->Elem.NomVar[i] = e.NomVar[i];
- }
- aux->Elem.Variable = e.Variable;
- aux->Suivant = l;
- return (aux);
+ _ListeChaine aux;
+ unsigned int i;
+
+ aux = (_ListeChaine) Emalloc(sizeof(struct _LstChn));
+ aux->Elem.NomVar = (char *) Emalloc(sizeof(char) * (strlen(e.NomVar) + 1));
+
+ for (i = 0; i <= strlen(e.NomVar); i++) {
+ aux->Elem.NomVar[i] = e.NomVar[i];
+ }
+ aux->Elem.Variable = e.Variable;
+ aux->Suivant = l;
+ return (aux);
}
static int EgaliteChaine(char *ch1, char *ch2)
{
- unsigned int i;
-
- if (strlen(ch1) != strlen(ch2)) {
- return (0);
+ unsigned int i;
+
+ if (strlen(ch1) != strlen(ch2)) {
+ return (0);
+ }
+ for (i = 0; i < strlen(ch1); i++) {
+ if (ch1[i] != ch2[i]) {
+ return (0);
}
- for (i = 0; i < strlen(ch1); i++) {
- if (ch1[i] != ch2[i]) {
- return (0);
- }
- }
- return (1);
- /* return (1-strcmp(ch1,ch2)); */
+ }
+ return (1);
+ /* return (1-strcmp(ch1,ch2)); */
}
static void Supprimer(_ListeChaine * l, char *Nom)
{
- _ListeChaine l_aux = NULL;
-
- if ((*l) != NULL) {
- if (EgaliteChaine((*l)->Elem.NomVar, Nom)) {
- l_aux = *l;
- *l = (*l)->Suivant;
- free(l_aux->Elem.NomVar);
- free(l_aux);
- } else {
- Supprimer(&((*l)->Suivant), Nom);
- }
+ _ListeChaine l_aux = NULL;
+
+ if ((*l) != NULL) {
+ if (EgaliteChaine((*l)->Elem.NomVar, Nom)) {
+ l_aux = *l;
+ *l = (*l)->Suivant;
+ free(l_aux->Elem.NomVar);
+ free(l_aux);
+ } else {
+ Supprimer(&((*l)->Suivant), Nom);
}
+ }
}
static void Detruit(_ListeChaine * l)
{
- _ListeChaine l_aux = NULL;
-
- while (*l) {
- l_aux = (*l)->Suivant;
- free((*l)->Elem.NomVar);
- free(*l);
- *l = l_aux;
- }
+ _ListeChaine l_aux = NULL;
+
+ while (*l) {
+ l_aux = (*l)->Suivant;
+ free((*l)->Elem.NomVar);
+ free(*l);
+ *l = l_aux;
+ }
}
char SupprimerDansTab(_TableauVariable * t, char *Nom)
{
- int index = FonctionHachage(Nom);
-
- if (0 <= index && index <= strlen(CHAINEHACHAGE)) {
- Supprimer(&((*t)[index]), Nom);
- } else {
- return (0);
- }
- return (1);
+ int index = FonctionHachage(Nom);
+
+ if (0 <= index && index <= strlen(CHAINEHACHAGE)) {
+ Supprimer(&((*t)[index]), Nom);
+ } else {
+ return (0);
+ }
+ return (1);
}
char InsererVarDansTab(_TableauVariable * t, _Element e)
{
- int index = FonctionHachage(e.NomVar);
-
- if (0 <= index && index <= strlen(CHAINEHACHAGE)) {
- (*t)[index] = InserTete((*t)[index], e);
- } else {
- return (0);
- }
- return (1);
+ int index = FonctionHachage(e.NomVar);
+
+ if (0 <= index && index <= strlen(CHAINEHACHAGE)) {
+ (*t)[index] = InserTete((*t)[index], e);
+ } else {
+ return (0);
+ }
+ return (1);
}
static _TypeVariable NomVarToVarListe(char *Nom, _ListeChaine l, char *trouve)
{
- *trouve = 0;
- while (l != NULL) {
- if (EgaliteChaine(Nom, (l->Elem).NomVar)) {
- *trouve = 1;
- return (l->Elem.Variable);
- }
- l = l->Suivant;
+ *trouve = 0;
+ while (l != NULL) {
+ if (EgaliteChaine(Nom, (l->Elem).NomVar)) {
+ *trouve = 1;
+ return (l->Elem.Variable);
}
+ l = l->Suivant;
+ }
#ifdef HAVE_CONFIG_H
- return (NULL);
+ return (NULL);
#else
- return 0;
+ return 0;
#endif
}
_TypeVariable NomVarToVar(char *Nom, _TableauVariable t, char *trouve)
{
- return (NomVarToVarListe(Nom, t[FonctionHachage(Nom)], trouve));
+ return (NomVarToVarListe(Nom, t[FonctionHachage(Nom)], trouve));
}
void AfficheListe(_ListeChaine l)
{
- while (l != NULL) {
- fprintf(stderr, "%s\n", l->Elem.NomVar);
- l = l->Suivant;
- }
+ while (l != NULL) {
+ fprintf(stderr, "%s\n", l->Elem.NomVar);
+ l = l->Suivant;
+ }
}
void AfficheTableau(_TableauVariable t)
{
- unsigned int i;
+ unsigned int i;
- for (i = 0; i < TAILLECHAINEHACHAGE; i++) {
- AfficheListe(t[i]);
- }
+ for (i = 0; i < TAILLECHAINEHACHAGE; i++) {
+ AfficheListe(t[i]);
+ }
}
int Initialise(_TableauVariable * t)
{
- unsigned int i;
+ unsigned int i;
- (*t) = (_TableauVariable) Emalloc(sizeof(_ListeChaine) * (strlen(CHAINEHACHAGE) + 1));
- for (i = 0; i <= strlen(CHAINEHACHAGE); i++) {
- (*t)[i] = NULL;
- }
- return (i);
+
+ (*t) =
+ (_TableauVariable) Emalloc(sizeof(_ListeChaine) *
+ (strlen(CHAINEHACHAGE) + 1));
+ for (i = 0; i <= strlen(CHAINEHACHAGE); i++) {
+ (*t)[i] = NULL;
+ }
+ return (i);
}
void DetruitTab(_TableauVariable * t)
{
- int i;
+ int i;
- for (i = 0; i <= strlen(CHAINEHACHAGE); i++) {
- Detruit(&((*t)[i]));
- }
+ for (i = 0; i <= strlen(CHAINEHACHAGE); i++) {
+ Detruit(&((*t)[i]));
+ }
- free(*t);
- *t = NULL;
+ free(*t);
+ *t = NULL;
}
#ifndef HAVE_CONFIG_H
int main(void)
{
- int c;
- _TableauVariable t;
-
- Initialise(&t);
- InsererVarDansTab(&t, CreerElement("yves", 14));
- InsererVarDansTab(&t, CreerElement("vomitif", 8));
- InsererVarDansTab(&t, CreerElement("vomi", 2));
- InsererVarDansTab(&t, CreerElement("Vomi", 25));
- InsererVarDansTab(&t, CreerElement("_vomi", 20));
- AfficheTableau(t);
- printf("\n");
- SupprimerDansTab(&t, "Vomi");
- AfficheTableau(t);
-
- /* c'est a cause du ouindause qui ferme tout de suite l'exec,
- mais moi je veux ce qu'il se passe */
- c = getc(stdin);
- return (c);
+ int c;
+ _TableauVariable t;
+
+ Initialise(&t);
+ InsererVarDansTab(&t, CreerElement("yves", 14));
+ InsererVarDansTab(&t, CreerElement("vomitif", 8));
+ InsererVarDansTab(&t, CreerElement("vomi", 2));
+ InsererVarDansTab(&t, CreerElement("Vomi", 25));
+ InsererVarDansTab(&t, CreerElement("_vomi", 20));
+ AfficheTableau(t);
+ printf("\n");
+ SupprimerDansTab(&t, "Vomi");
+ AfficheTableau(t);
+
+ /* c'est a cause du ouindause qui ferme tout de suite l'exec,
+ mais moi je veux ce qu'il se passe */
+ c = getc(stdin);
+ return (c);
}
#endif