summaryrefslogtreecommitdiff
path: root/src/glibext
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext')
-rw-r--r--src/glibext/gbinportion.c39
-rw-r--r--src/glibext/gbinportion.h3
2 files changed, 42 insertions, 0 deletions
diff --git a/src/glibext/gbinportion.c b/src/glibext/gbinportion.c
index ff5ff7d..f99a7cc 100644
--- a/src/glibext/gbinportion.c
+++ b/src/glibext/gbinportion.c
@@ -1148,6 +1148,45 @@ static void g_binary_portion_print(GBinPortion *portion, GBufferLine *line, size
/******************************************************************************
* *
* Paramètres : portion = couche de portions à parcourir pour les recherches.*
+* *
+* Description : Compte le nombre de portions présentes dans une arborescence.*
+* *
+* Retour : Quantité de portions présentes. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+size_t g_binary_portion_count(const GBinPortion *portion)
+{
+ size_t result; /* Quantité à retourner */
+
+
+ size_t measure_portion_size(const GBinPortion *root)
+ {
+ size_t count; /* Nombre de trouvailles */
+ size_t i; /* Boucle de parcours */
+
+ count = 1;
+
+ for (i = 0; i < root->count; i++)
+ count += measure_portion_size(root->subs[i]);
+
+ return count;
+
+ }
+
+
+ result = measure_portion_size(portion);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : portion = couche de portions à parcourir pour les recherches.*
* x = abscisse du point de recherche. *
* area = étendue de portion mère, puis celle trouvée. [OUT] *
* *
diff --git a/src/glibext/gbinportion.h b/src/glibext/gbinportion.h
index 581be68..5c8c363 100644
--- a/src/glibext/gbinportion.h
+++ b/src/glibext/gbinportion.h
@@ -144,6 +144,9 @@ bool g_binary_portion_visit(GBinPortion *, visit_portion_fc, void *);
/* ------------------------ PARCOURS D'ENSEMBLES DE PORTIONS ------------------------ */
+/* Compte le nombre de portions présentes dans une arborescence. */
+size_t g_binary_portion_count(const GBinPortion *);
+
/* Recherche la portion présente à un point donné. */
GBinPortion *g_binary_portion_find_at_pos(GBinPortion *, gint, GdkRectangle *);