arraylist.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * File: arraylist.h
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 14 novembre 2018
  6. */
  7. #ifndef ARRAYLIST_H
  8. #define ARRAYLIST_H
  9. /* --- Include --- */
  10. #include "constante.h"
  11. /* --- Structure --- */
  12. typedef struct al_node al_node;
  13. struct al_node{
  14. char* key; //Clef d'accès
  15. int(*handler)(char*); //Fonction
  16. al_node* prev; //Noeud precedent
  17. al_node* next; //Noeud suivant
  18. };
  19. typedef struct{
  20. al_node* first; //1er noeud
  21. al_node* last; //Dernier noeud
  22. int size; //Nombre de noeud
  23. }arraylist;
  24. /* --- Fonctions --- */
  25. /**
  26. * Initialise une arraylist
  27. * @param arraylist* Arraylist allouée
  28. */
  29. void arraylist_ini(arraylist*);
  30. /**
  31. * Ajoute un noeud dans la liste
  32. * Si un noeud du meme nom existe deja le remplace
  33. * @param arraylist* Arraylist d'accueil
  34. * @param char* clef
  35. * @param int(*)(char*) Fonction
  36. * @return al_node* Le noeud ajouté
  37. */
  38. al_node* arraylist_add(arraylist*, char*, int(*)(char*));
  39. /**
  40. * Cherche un noeud
  41. * @param arraylist* Arraylist utilisée pour la recherche
  42. * @param char* La clef à chercher
  43. * @return NULL|al_node* Le noeud ou null si introuvable
  44. */
  45. al_node* arraylist_search(arraylist*, char*);
  46. /**
  47. * Appel la fonction d'un noeud
  48. * @param arraylist* Arraylist du noeud
  49. * @param char* Clef du noeud
  50. * @param char* Argument pour la fonction
  51. * @return int Resultat de la fonction ou -1 si introuvable
  52. */
  53. int arraylist_call(arraylist*, char*, char*);
  54. /**
  55. * Supprime un noeud
  56. * @param arraylist* Arraylist du noeud
  57. * @param al_node* Le noeud à supprimer
  58. */
  59. void arraylist_delete(arraylist*, al_node*);
  60. /**
  61. * Supprime un noeud identifié par une clef
  62. * @param arraylist* Arraylist du noeud
  63. * @param char* La clef du noeud
  64. * @return Noeud correctement supprimé
  65. */
  66. boolean arraylist_remove(arraylist*, char*);
  67. /**
  68. * Vide une Arraylist
  69. * @param arraylist* Arraylist à vider
  70. */
  71. void arraylist_clean(arraylist*);
  72. #endif /* ARRAYLIST_H */