diff options
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/sort.c | 66 | ||||
| -rw-r--r-- | src/common/sort.h | 6 | 
2 files changed, 72 insertions, 0 deletions
diff --git a/src/common/sort.c b/src/common/sort.c index 7da9a29..014d6c7 100644 --- a/src/common/sort.c +++ b/src/common/sort.c @@ -35,6 +35,37 @@  *  Paramètres  : a = premier élément à consulter et comparer.                 *  *                b = second élément à consulter et comparer.                  *  *                                                                             * +*  Description : Compare un booléen avec une autre.                           * +*                                                                             * +*  Retour      : Bilan de la comparaison.                                     * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +int sort_boolean(bool a, bool b) +{ +    int result;                             /* Bilan à renvoyer            */ + +    if (a && !b) +        result = 1; + +    else if (!a && b) +        result = -1; + +    else +        result = 0; + +    return result; + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : a = premier élément à consulter et comparer.                 * +*                b = second élément à consulter et comparer.                  * +*                                                                             *  *  Description : Compare une valeur avec une autre.                           *  *                                                                             *  *  Retour      : Bilan de la comparaison.                                     * @@ -63,6 +94,41 @@ int sort_unsigned_long(unsigned long a, unsigned long b)  /******************************************************************************  *                                                                             * +*  Paramètres  : a      = premier élément à consulter et comparer.            * +*                b      = second élément à consulter et comparer.             * +*                compar = méthode de comparaison entre éléments.              * +*                                                                             * +*  Description : Compare un pointeur avec un autre.                           * +*                                                                             * +*  Retour      : Bilan de la comparaison.                                     * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +int sort_pointer(const void *a, const void *b, __compar_fn_t compar) +{ +    int result;                             /* Bilan à renvoyer            */ + +    if (a != NULL && b == NULL) +        result = 1; + +    else if (a == NULL && b != NULL) +        result = -1; + +    else if (a == NULL && b == NULL) +        result = 0; + +    else +        result = compar(a, b); + +    return result; + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : key    = élément de comparaison à retrouver ou approcher.    *  *                base   = adresse du tableau à parcourir.                     *  *                nmemb  = nombre d'éléments présents au total.                * diff --git a/src/common/sort.h b/src/common/sort.h index fb47a5e..a887543 100644 --- a/src/common/sort.h +++ b/src/common/sort.h @@ -30,9 +30,15 @@ +/* Compare un booléen avec une autre. */ +int sort_boolean(bool, bool); +  /* Compare une valeur avec une autre. */  int sort_unsigned_long(unsigned long, unsigned long); +/* Compare un pointeur avec un autre. */ +int sort_pointer(const void *, const void *, __compar_fn_t); +  /* Effectue une recherche dichotomique dans un tableau. */  bool bsearch_index(const void *, const void *, size_t, size_t, __compar_fn_t, size_t *);  | 
