Drop the TODO.md section numbers from 26 files
All checks were successful
All checks were successful
Eighty-five comments cited section numbers -- 1.1, 2.2.6, 3.6 -- from a numbering the file had already abandoned before the move to the tracker. They label completed work, so the pointer was the only wrong part. The citation is removed and the sentence kept, which is what issue #27 recommended: these are labels, not references, and a label carrying a version-dependent pointer goes stale again at the next reorganisation. Where a pointer earns its place it names what actually holds the content now -- UPGRADING.md for the confirmed defects, libakerror #15 for the target namespacing, issue #7 for the mutation survivors. README.md and akstdlib.h sent readers to TODO.md for 'what is still open'; they name the tracker. Verified: cmake --build build && ctest --test-dir build, 19/19. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-Authored-By: Andrew Kesterson <andrew@aklabs.net>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Data structures -- TODO.md section 3.6.
|
||||
* Data structures.
|
||||
*
|
||||
* Not libc wrappers. These are the parts of the list and tree API that were
|
||||
* visibly missing, plus the two structures the first real consumer had to write
|
||||
@@ -328,7 +328,7 @@ akerr_ErrorContext AKERR_NOIGNORE *aksl_list_iterate_reverse(aksl_ListNode *tail
|
||||
* aksl_list_append has to walk the whole list to find the tail, so building a
|
||||
* list of n nodes with it is O(n^2). That is fine for the handful of nodes the
|
||||
* bare-node API was written for and wrong for anything larger, which is what
|
||||
* TODO.md 3.6 means by "a head/tail-tracking container type so append is O(1)".
|
||||
* the collections plan meant by "a head/tail-tracking container type so append is O(1)".
|
||||
*
|
||||
* The container holds the length as well, so aksl_list_length stops being a
|
||||
* walk. It owns no memory -- the nodes are still the caller's -- so there is no
|
||||
@@ -440,7 +440,7 @@ akerr_ErrorContext AKERR_NOIGNORE *aksl_list_clear(aksl_List *list, aksl_FreeFun
|
||||
* through an out-param and may raise, like every other callback here.
|
||||
*
|
||||
* These are the functions that set and read aksl_TreeNode.parent, which was
|
||||
* declared and then never touched by anything in the library (TODO.md 2.2.15).
|
||||
* declared and then never touched by anything in the library.
|
||||
* aksl_tree_remove needs it: relinking a node's replacement means telling that
|
||||
* node's parent about it, and finding the parent by walking from the root again
|
||||
* would turn a removal into a second search.
|
||||
@@ -691,7 +691,7 @@ akerr_ErrorContext AKERR_NOIGNORE *aksl_tree_free_all(aksl_TreeNode **root, aksl
|
||||
/* ====================================================================== */
|
||||
|
||||
/*
|
||||
* FNV-1a, the other half of TODO.md 3.6's hash request. It differs from djb2 in
|
||||
* FNV-1a, the other half of the collections plan's hash request. It differs from djb2 in
|
||||
* XOR-then-multiply rather than multiply-then-add, which mixes the low bits
|
||||
* rather better -- worth having when the keys are short and share a prefix,
|
||||
* which is exactly what identifiers in a symbol table look like.
|
||||
@@ -730,7 +730,7 @@ akerr_ErrorContext AKERR_NOIGNORE *aksl_strhash_fnv1a_str(const char *str, uint3
|
||||
/*
|
||||
* Fixed-capacity, open-addressed, linear-probing, string-keyed.
|
||||
*
|
||||
* The shape is akbasic's src/symtab.c, which TODO.md 3.6 says is "worth lifting
|
||||
* The shape is akbasic's src/symtab.c, which the collections plan called "worth lifting
|
||||
* more or less verbatim": the caller supplies the slot array, the map refuses
|
||||
* rather than resizes when full, and the keys are copied into fixed-size slots
|
||||
* so the map owns them and a caller cannot outlive its own key strings.
|
||||
@@ -939,7 +939,7 @@ akerr_ErrorContext AKERR_NOIGNORE *aksl_hashmap_iterate(aksl_HashMap *map,
|
||||
*
|
||||
* The bounded formatting wrappers are the right answer when the destination is
|
||||
* a fixed buffer, and no answer at all when the output length is not known in
|
||||
* advance -- which is why TODO.md 3.6 asks for this to "make the snprintf and
|
||||
* advance -- which is why the collections plan asked for this to "make the snprintf and
|
||||
* strcat wrappers pleasant to use". Building a diagnostic, a serialised record
|
||||
* or a generated line means appending to something that grows.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user