streecmp/README

62 lines
2.1 KiB
Plaintext
Raw Normal View History

2024-08-25 12:19:42 +00:00
+==============+
| streecmp |
+==============+
Fast*er* string comparison - an alternative to thousands of strcmp calls
RES: en.wikipedia.org/wiki/Trie
RES: en.wikipedia.org/wiki/Suffix_tree
RES: en.wikipedia.org/wiki/Radix_tree
RES: facweb.cs.depaul.edu/mobasher/classes/csc575/Suffix_Trees/index.html
TECHNICALS
struct nod
* data structure that represents a node of the tree
2024-08-27 16:53:04 +00:00
void frenod(struct nod *nod)
* free memory of node and all of its children
struct nod *allocnod(void)
* allocate memory for a node and its pool size for
character hashmap
* returns: poiner to said node or NULL if function fails
struct nod *mknod(struct nod *nod, int loc)
* create a child node below given parent node
* loc is the character of the node (consult source code
of mkstr for more information)
* returns: pointer to said node or NULL if function fails
2024-08-27 16:53:04 +00:00
int mkstr(struct nod *nod, char *str)
2024-08-25 12:19:42 +00:00
* fit string into tree if it does not already exist
* warning: string has to be null-byte terminated
* returns: the assigned ID of the string, 0 if string
is already inside tree, or -1 if function fails
2024-08-27 16:59:30 +00:00
int gentree(struct nod *nod, char *strs, char *delim)
2024-08-25 12:19:42 +00:00
* generate tree from character seperated strings
2024-08-27 16:59:30 +00:00
* if delim is NULL, then "\n" is assumed
2024-08-25 12:19:42 +00:00
* warning: seperation character is '\n'
* returns: 0 if ok or -1 if function fails
2024-08-27 16:53:04 +00:00
int streecmp(struct nod *nod, char *str)
2024-08-25 12:19:42 +00:00
* traverse tree and search for str
* returns: id of string or 0 if there is no match
2024-08-27 16:59:30 +00:00
test.c provides a practical example for comparing against
HTTP header fields
LEAKS
LEAKS file contains the most recent valgrind memory leaks
dump ran on test.c.
2024-08-25 12:19:42 +00:00
TODO
2024-08-27 16:59:30 +00:00
* everything done so far
2024-08-25 12:19:42 +00:00
COMMITS
Each commit is prefixed with an indicator token of what the change is
*mostly* about. List of tokens is:
* repo: change docs or code style
* feat: implement new change
* fix: implement fix for a bug