tree data OPTIMIZE use hash table for dup inst cache
Now that dup inst is being calculated for all
the nodes, we can no longer use a linear list.
Diff and merge were inefficient because of this.
diff --git a/src/tree_data.c b/src/tree_data.c
index d6a04ff..02dac9a 100644
--- a/src/tree_data.c
+++ b/src/tree_data.c
@@ -2019,13 +2019,13 @@
*/
static LY_ERR
lyd_merge_sibling_r(struct lyd_node **first_trg, struct lyd_node *parent_trg, const struct lyd_node **sibling_src_p,
- lyd_merge_cb merge_cb, void *cb_data, uint16_t options, struct lyd_dup_inst **dup_inst)
+ lyd_merge_cb merge_cb, void *cb_data, uint16_t options, struct hash_table **dup_inst)
{
const struct lyd_node *child_src, *tmp, *sibling_src;
struct lyd_node *match_trg, *dup_src, *elem;
struct lyd_node_opaq *opaq_trg, *opaq_src;
struct lysc_type *type;
- struct lyd_dup_inst *child_dup_inst = NULL;
+ struct hash_table *child_dup_inst = NULL;
LY_ERR ret;
ly_bool first_inst = 0;
@@ -2147,7 +2147,7 @@
lyd_merge_cb merge_cb, void *cb_data, uint16_t options, ly_bool nosiblings)
{
const struct lyd_node *sibling_src, *tmp;
- struct lyd_dup_inst *dup_inst = NULL;
+ struct hash_table *dup_inst = NULL;
ly_bool first;
LY_ERR ret = LY_SUCCESS;