-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Some of the ways that tagdb_key_t is used would be better handled with a GList* type. For instance, key_push_end and key_pop_front require replicating the key before passing in if the original key is meant to be left unmodified by the receiving function where this operation is a simple change in pointers (i.e., next pointer, and append operations) for GList*, a linked-list type in glib.
The GArray type that the current tagdb_key_t is based on was chosen because it is possible to transparently resort the key passed in to procedures without needing to change the pointer passed in by callers. There is no longer a need to do this re-sorting. The Stage, trie, TagDB FileCabinet, File components all use the tagdb_key_t type. However, these do not need to be modified for correctness and can be modified after the fact to remove unnecessary copy operations (about 3 of them).