return (struct node *) 0;
}
-static struct node *node_edge_encode(struct node *self, size_t i, const uint8_t *str, struct node **brother, bool seen[], uint8_t *code)
+static struct node *node_edge_encode(struct node *self, const uint8_t *str, size_t i, struct node **brother, bool seen[], uint8_t *code)
{
struct node *node;
return (struct node *) 0;
}
-static struct node *node_edge(struct node *self, size_t i, const uint8_t *str, struct node **brother)
+static struct node *node_edge(struct node *self, const uint8_t *str, size_t i, struct node **brother)
{
struct node *node;
size_t j;
if (len == 0) return true;
- node = node_edge(self, i, str, &brother);
+ node = node_edge(self, str, i, &brother);
if (!node) return false;
for (j = node->from; j < node->to && len > 0; --len, ++j, ++i) {
if (str[j] != str[i]) return false;
memset(seen, 0, sizeof seen);
code = 0;
if (active_len == 0)
- active_edge = node_edge_encode(active_node, i, in, &brother, seen, &code);
+ active_edge = node_edge_encode(active_node, in, i, &brother, seen, &code);
else
- active_edge = node_edge(active_node, i - active_len, in, &brother);
+ active_edge = node_edge(active_node, in, i - active_len, &brother);
do {
present = active_edge && in[active_edge->from+active_len] == in[i];
if (present) {
if (active_len == 0 && active_node->son == nodes + n - 1)
brother = active_edge = (struct node *) 0;
else if (active_len == 0)
- active_edge = node_edge_encode(active_node, i, in, &brother, seen, &code);
+ active_edge = node_edge_encode(active_node, in, i, &brother, seen, &code);
else
- active_edge = node_edge(active_node, i - active_len, in, &brother);
+ active_edge = node_edge(active_node, in, i - active_len, &brother);
}
while (active_edge && active_edge->from + active_len >= active_edge->to) {
active_node = active_edge;
if (active_len == 0 && present)
brother = active_edge = (struct node *) 0;
else if (active_len == 0)
- active_edge = node_edge_encode(active_node, i, in, &brother, seen, &code);
+ active_edge = node_edge_encode(active_node, in, i, &brother, seen, &code);
else
- active_edge = node_edge(active_node, i - active_len, in, &brother);
+ active_edge = node_edge(active_node, in, i - active_len, &brother);
}
} while (rem > 0 && !present);
if (!present)
if (active_len == 0)
active_edge = node_edge_decode(active_node, out, &brother, seen, &code);
else
- active_edge = node_edge(active_node, i - active_len, out, &brother);
+ active_edge = node_edge(active_node, out, i - active_len, &brother);
do {
present = active_edge && code == 0 && (active_len == 0 || !seen[out[active_edge->from+active_len]]);
if (present) {
else if (active_len == 0)
active_edge = node_edge_decode(active_node, out, &brother, seen, &code);
else
- active_edge = node_edge(active_node, i - active_len, out, &brother);
+ active_edge = node_edge(active_node, out, i - active_len, &brother);
}
while (active_edge && active_edge->from + active_len >= active_edge->to) {
active_node = active_edge;
else if (active_len == 0)
active_edge = node_edge_decode(active_node, out, &brother, seen, &code);
else
- active_edge = node_edge(active_node, i - active_len, out, &brother);
+ active_edge = node_edge(active_node, out, i - active_len, &brother);
}
} while (rem > 0 && !present);
if (!present)