diff options
Diffstat (limited to 'src/glibext')
-rw-r--r-- | src/glibext/gbinportion.c | 39 | ||||
-rw-r--r-- | src/glibext/gbinportion.h | 3 |
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 *); |