|
@@ -17,7 +17,7 @@ void arraylist_ini(arraylist* al){
|
|
al->size = 0;
|
|
al->size = 0;
|
|
}
|
|
}
|
|
|
|
|
|
-al_node* arraylist_add(arraylist* al, char* key, char* val){
|
|
|
|
|
|
+al_node* arraylist_add(arraylist* al, char* key, int(*handler)(char*)){
|
|
int length;
|
|
int length;
|
|
al_node* aln;
|
|
al_node* aln;
|
|
//Regarde si la clef existe
|
|
//Regarde si la clef existe
|
|
@@ -30,10 +30,7 @@ al_node* arraylist_add(arraylist* al, char* key, char* val){
|
|
aln->key = malloc(sizeof(char) * (length + 1));
|
|
aln->key = malloc(sizeof(char) * (length + 1));
|
|
memset(aln->key, 0, length + 1);
|
|
memset(aln->key, 0, length + 1);
|
|
strncpy(aln->key, key, length);
|
|
strncpy(aln->key, key, length);
|
|
- length = strlen(val);
|
|
|
|
- aln->val = malloc(sizeof(char) * (length + 1));
|
|
|
|
- memset(aln->val, 0, length + 1);
|
|
|
|
- strncpy(aln->val, val, length);
|
|
|
|
|
|
+ aln->handler = handler;
|
|
//Lien entre les noeuds
|
|
//Lien entre les noeuds
|
|
aln->next = NULL;
|
|
aln->next = NULL;
|
|
if (al->first == NULL) {
|
|
if (al->first == NULL) {
|
|
@@ -66,28 +63,12 @@ al_node* arraylist_search(arraylist* al, char* key){
|
|
return NULL;
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
-char* arraylist_get(arraylist* al, char* key){
|
|
|
|
|
|
+int arraylist_call(arraylist* al, char* key, char* arg){
|
|
al_node* aln = arraylist_search(al, key);
|
|
al_node* aln = arraylist_search(al, key);
|
|
if(aln == NULL){
|
|
if(aln == NULL){
|
|
- return NULL;
|
|
|
|
- }
|
|
|
|
- return aln->val;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int arraylist_getint(arraylist* al, char* key){
|
|
|
|
- al_node* aln = arraylist_search(al, key);
|
|
|
|
- if(aln == NULL){
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
- return atoi(aln->val);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-double arraylist_getdouble(arraylist* al, char* key){
|
|
|
|
- al_node* aln = arraylist_search(al, key);
|
|
|
|
- if(aln == NULL){
|
|
|
|
- return 0;
|
|
|
|
|
|
+ return -1;
|
|
}
|
|
}
|
|
- return atof(aln->val);
|
|
|
|
|
|
+ return aln->handler(arg);
|
|
}
|
|
}
|
|
|
|
|
|
void arraylist_delete(arraylist* al, al_node* aln){
|
|
void arraylist_delete(arraylist* al, al_node* aln){
|
|
@@ -117,7 +98,6 @@ void arraylist_delete(arraylist* al, al_node* aln){
|
|
}
|
|
}
|
|
//Free
|
|
//Free
|
|
free(aln->key);
|
|
free(aln->key);
|
|
- free(aln->val);
|
|
|
|
free(aln);
|
|
free(aln);
|
|
al->size--;
|
|
al->size--;
|
|
}
|
|
}
|