diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2019-05-30 10:36:48 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2019-05-30 10:36:48 (GMT) |
commit | dde622ccf567e3ac01b471ea5d35cca4acf81277 (patch) | |
tree | 8d7e3f66986f8df37a62b75e26130432339407ee /src | |
parent | 00e93226e72bdb18853580f553e32df111422936 (diff) |
Extended the API to insert items in a sorted array.
Diffstat (limited to 'src')
-rw-r--r-- | src/common/sort.c | 30 | ||||
-rw-r--r-- | src/common/sort.h | 3 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/common/sort.c b/src/common/sort.c index eee11a3..e34d995 100644 --- a/src/common/sort.c +++ b/src/common/sort.c @@ -305,6 +305,36 @@ void *qinsert(void *base, size_t *nmemb, size_t size, __compar_fn_t compar, void /****************************************************************************** * * +* Paramètres : base = adresse du tableau à parcourir. * +* nmemb = nombre d'éléments présents au total. [OUT] * +* size = taille de chaque élément du tableau. * +* compar = méthode de comparaison entre éléments. * +* new = nouvel élément à insérer. * +* * +* Description : Ajoute au bon endroit un élément dans un tableau trié. * +* * +* Retour : Nouvel emplacement du tableau agrandi. * +* * +* Remarques : - * +* * +******************************************************************************/ + +void *qinsert_multi(void *base, size_t *nmemb, size_t size, __compar_fn_t compar, void *new) +{ + void *result; /* Tableau trié à retourner */ + size_t index; /* Indice du point d'insertion */ + + bsearch_index(new, base, *nmemb, size, compar, &index); + + result = _qinsert(base, nmemb, size, new, index); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : base = adresse du tableau à parcourir. * * nmem = nombre d'éléments présents au total. [OUT] * * size = taille de chaque élément du tableau. * diff --git a/src/common/sort.h b/src/common/sort.h index 2d9e672..eb86ccb 100644 --- a/src/common/sort.h +++ b/src/common/sort.h @@ -52,6 +52,9 @@ void *_qinsert(void *, size_t *, size_t, void *, size_t); /* Ajoute au bon endroit un élément dans un tableau trié. */ void *qinsert(void *, size_t *, size_t, __compar_fn_t, void *); +/* Ajoute au bon endroit un élément dans un tableau trié. */ +void *qinsert_multi(void *, size_t *, size_t, __compar_fn_t, void *); + /* Supprime un élément dans un tableau trié. */ void *_qdelete(void *, size_t *, size_t, size_t); |