mirror of
https://github.com/harfbuzz/harfbuzz.git
synced 2025-04-13 08:42:59 +00:00
[decycler] Add alternative way of using it to tests
This commit is contained in:
parent
3cb4971729
commit
2bdf985022
1 changed files with 32 additions and 6 deletions
|
@ -28,9 +28,9 @@
|
|||
#include "hb-decycler.hh"
|
||||
|
||||
static void
|
||||
tree_recurse (unsigned value,
|
||||
unsigned max_value,
|
||||
hb_decycler_t &decycler)
|
||||
tree_recurse_binary (unsigned value,
|
||||
unsigned max_value,
|
||||
hb_decycler_t &decycler)
|
||||
{
|
||||
if (value >= max_value)
|
||||
return;
|
||||
|
@ -40,15 +40,41 @@ tree_recurse (unsigned value,
|
|||
bool ret = node.visit (value);
|
||||
assert (ret);
|
||||
|
||||
tree_recurse (value * 2 + 1, max_value, decycler);
|
||||
tree_recurse (value * 2 + 2, max_value, decycler);
|
||||
tree_recurse_binary (value * 2 + 1, max_value, decycler);
|
||||
tree_recurse_binary (value * 2 + 2, max_value, decycler);
|
||||
}
|
||||
|
||||
static void
|
||||
tree_recurse_tertiary (unsigned value,
|
||||
unsigned max_value,
|
||||
hb_decycler_t &decycler)
|
||||
{
|
||||
/* This function implements an alternative way to use the
|
||||
* decycler. It checks for each node before visiting it.
|
||||
* It demonstrates reusing a node for multiple visits. */
|
||||
|
||||
if (value >= max_value)
|
||||
return;
|
||||
|
||||
hb_decycler_node_t node (decycler);
|
||||
|
||||
value *= 3;
|
||||
|
||||
for (unsigned i = 1; i <= 3; i++)
|
||||
{
|
||||
bool ret = node.visit (value + i);
|
||||
assert (ret);
|
||||
|
||||
tree_recurse_tertiary (value + i, max_value, decycler);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
test_tree ()
|
||||
{
|
||||
hb_decycler_t decycler;
|
||||
tree_recurse (0, 64, decycler);
|
||||
tree_recurse_binary (0, 64, decycler);
|
||||
tree_recurse_tertiary (0, 1000, decycler);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Add table
Reference in a new issue