summaryrefslogtreecommitdiff
path: root/src/leven.c
diff options
context:
space:
mode:
authorJesper Jensen <jesper@jnsn.dev>2025-03-23 14:40:51 +0100
committerJesper Jensen <jesper@jnsn.dev>2025-03-23 14:40:51 +0100
commit50da512936a9af6ad9aa808531af8f316a381dd4 (patch)
tree385253a4db800cabf3aae93693ee53ce7f6e52b8 /src/leven.c
parent6e1eaaf13a13584294c6a090ef40500cd786f56f (diff)
Start expirimenting with some real xml
Diffstat (limited to 'src/leven.c')
-rw-r--r--src/leven.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/leven.c b/src/leven.c
index 9ed2ab3..f060929 100644
--- a/src/leven.c
+++ b/src/leven.c
@@ -176,8 +176,10 @@ void constrained_tree_alignment (
const mat_uint32_t cost,
const mat_uint32_t cost_n, // The resulting computed cost matrixes node and forest. Size a.len x b.len
const mat_uint32_t cost_f,
+ // Scratch space
mat_uint32_t cost_s,
uint32_t *adj_alignment,
+
mat_uint32_t alignment
) {
@@ -198,7 +200,7 @@ void constrained_tree_alignment (
size_t remain = 1;
size_t cursor = j-1;
while(remain > 0) {
- log("ADD %ld", cursor);
+ log("ADD %ld", cursor+1);
size_t adj_len = 0;
while(adj_len < b.adj.stride && *imat_nid(b.adj, adj_len, cursor) != 0) adj_len++;
@@ -212,7 +214,7 @@ void constrained_tree_alignment (
size_t remain = 1;
size_t cursor = i-1;
while(remain > 0) {
- log("REMOVE %ld", cursor);
+ log("REMOVE %ld", cursor+1);
size_t adj_len = 0;
while(adj_len < a.adj.stride && *imat_nid(a.adj, adj_len, cursor) != 0) adj_len++;
@@ -293,6 +295,14 @@ void constrained_tree_alignment (
b_cursor--;
a_cursor--;
}
+
+ while(a_cursor >= 0) {
+ uint32_t *slot = imat_uint32_t(to_compute, 0, to_compute_head);
+ to_compute_head++;
+ slot[0] = *imat_nid(a.adj, a_cursor, i-1);
+ slot[1] = -1;
+ a_cursor--;
+ }
} else if(a_adj_len > 0 && *imat_uint32_t(cost_n, i, j) == *imat_uint32_t(cost_n, i, 0) + min_cost_a) {
// Remove this node and replace it with one of its children
log("REMOVE %ld %ld", i, j);