summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-05-21 16:48:11 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-05-21 16:48:11 (GMT)
commitacd355c4c5ae25fb9cac64b8dc17407a2bcc979b (patch)
treed5b43201049116cd9734ff554e61ed8a7e0084cc /src/common
parent4691a434a34a19317156a761967f719e408b73bb (diff)
Refined the whole share system for operands.
Diffstat (limited to 'src/common')
-rw-r--r--src/common/sort.c66
-rw-r--r--src/common/sort.h6
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 *);