- id.h, id.c (make_id): return a "struct jrb *", so that we have access to
key and value
- gobble.c (ID, gobble_buf): adapt to above change
- gobble.c (compact_pkg, gobble_buf): keep the RB node reference instead
of awkwardly regenerating it via pkg->id->jrb
- id.h, id.c (first_id, next_id): removed
- qpkg.c (list_all_packages): use jrb_first/jrb_next instead of
first_id/next_id
- id.h, id.c (find_id): return the RB tree node instead of the ID
- qpkg.c (list_one_package, find_prereq): adapted for above change
- id.h: explain the role of key and value
- jrb.h, jrb.c (jrb_find_or_insert): new function to look for a node and
to insert a new one if not found
- id.c (make_id): use jrb_find_or_insert to avoid looking up new nodes
twice
- TODO: report the improvement
- id.h (struct tree, comp_id, make_tree), id.c (comp_id, make_tree):
comparison function now takes "void *" (pointing to a "struct id")
arguments instead of "struct id *", for compatibility with jrb
- id.c (comp_id, do_comp_id): added wrapper to convert "void *" back to
"struct id *"
This is a change of the underlying mechanism but it's not polished or
optimized yet. The compare functions haven't been updated, so they work
but produce compiler warnings because of type mismatches.
- Makefile (OBJS): added jrb.o
- id.h, id.c: use jrb instead of own dumb binary trees
- TODO: brag about the efficiency improvement