Dilib, module StrSearch
De Wicri Outils
Module StrSearch |
Le module StrSearch permet de gérer des tableaux associatifs (appelés StrSearchTables) de chaînes de caractères (mais on peut y mettre des valeurs de types différents, en utilisant le cast de C).
Ces tableaux associent donc une clé et une valeur. Ils permettent une recherche rapide par clé (et non par indice entier). Typiquement, ils peuvent servir à créer un dictionnaire (un mot en français associé à sa traduction en anglais).
Sommaire
Constructeurs
- StrSearchTableCreate
- crée un tableau associatif dont la taille initiale (nombre d'éléments) est donnée, ainsi que l'incrément.
StrSearchTable* StrSearchTableCreate(int size, int increment);
Opérateurs
- StrSearchAdd
- Ajoute un couple clé-valeur au tableau. La valeur peut être de n'importe quel type (il suffit d'utiliser le transtypage du C). Attention, seuls les pointeurs de la clé ou de la valeur sont insérés dans la table.
- StrSearchPut
- Ajoute un couple clé-valeur au tableau, ou si la clé y existe déjà, modifie la valeur de l'élément existant. Attention, seuls les pointeurs de la clé ou de la valeur sont insérés dans la table.
- StrSearch
- cherche dans le tableau la valeur associées à la clé demandée et la renvoie. Renvoie un pointeur nul si la clé est absente du tableau.
- StrSearchTableToFile
- sauve le contenu du tableau dans un fichier texte formaté contenant une ligne par élément. Ces éléments peuvent n'être composés que d'une clé, ou bien d'un couple clé-valeur (la valeur étant séparée de la clé par une tabulation).
- StrSearchAddTable
- ajoute de nouveaux éléments venant d'un flux d'entrée à un tableau existant. Clé et valeurs doivent être sur une seule ligne, séparés par une tabulation. Si la valeur n'est pas présente, seule la clé est ajoutée.
Itérateurs
- StrSearchIteratorReset
- réinitialise l'itérateur (avant le premier enregistrement).
- StrSearchIteratorReverseReset
- réinitialise l'itérateur (après le dernier enregistrement).
- StrSearchNext
- renvoie la clé du prochain enregistrement.
- StrSearchPrevious
- renvoie la clé du précédent enregistrement.
- StrSearchKey
- renvoie la clé de l'enregistrement courant (sur lequel se trouve l'itérateur).
- StrSearchValue
- renvoie la valeur de l'enregistrement sur lequel se trouve l'itérateur.
- StrSearchKeyLessEqual
- cherche un enregistrement dont la clé est inférieure ou égale à la chaîne cherchée. Renvoie la clé de l'enregistrement trouvé. Place l'itérateur sur cet enregistrement.
Destructeurs
- StrSearchTableFree
- ferme le tableau et libère les structures associées (seuls les pointeurs sont ainsi libérés).
- StrSearchTableFreeStr
- ferme le tableau et libère les structures associées, ainsi que toutes les chaînes de caractères (clés et valeurs) qui doivent être de type char *.
- StrSearchTableFreeKey
- ferme le tableau, libère les structures associées, ainsi qu'uniquement les clés qui sont supposées du type char *.
- StrSearchTableFreeValue
- ferme le tableau, libère les structures associées, ainsi qu'uniquement les valeurs (supposées être du type char *).
Exemple
#include "StrSearch.h"
main() {
StrSearchTable *table;
table = StrSearchTableCreate(10,5);
StrSearchAdd(table,"arbre","tree");
StrSearchAdd(table,"maison","home");
printf("%s\n", StrSearch(table,"arbre")); /* prints tree */
printf("%s\n", StrSearch(table,"route")); /* prints (null) */
StrSearchAdd(table,"chien","dog");
printf("%s\n", StrSearch(table,"chien")); /* sorts table and prints dog */
...
}
Correspondances avec StrDict
StrSearch | StrDict |
---|---|
StrSearchTable * | StrDict * |
StrSearchTableFree() | StrDictFree() |
StrSearchAdd() | StrDictAddNewDatum() |
StrSearchPut() | StrDictSet() |
StrSearch() | StrDictSearch() |
StrSearchAddTable (char *stream, StrSearchTable *table) | StrDictAddFromFile (StrDict *table, char*stream) |
StrSearchTableCreate(int s,int i) | StrDictCreate(int s, int i) NewStrDict() |
StrSearchGetTable(char *stream, int size) | StrDictFromFile (char *stream) |