From: Francois Fleuret Date: Sun, 15 Mar 2009 14:59:27 +0000 (+0100) Subject: Added some code to use a hash table for duplicates. Commented also. X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=commitdiff_plain;ds=inline;h=4dd38ecf0a038875edd46bdbf5dcbb7264378c45;p=selector.git Added some code to use a hash table for duplicates. Commented also. --- diff --git a/selector.cc b/selector.cc index e119fc6..53b65bb 100644 --- a/selector.cc +++ b/selector.cc @@ -58,6 +58,24 @@ int remove_duplicates = 0; ////////////////////////////////////////////////////////////////////// +// int test_and_set_hash(char *s, char **hashed, int hash_size) { + // uint32_t code = 0, mask; + // int result; + + // for(int k = 0; s[k]; k++) { + // code += ((uint32_t) (s[k])) << (8 * k%4); + // } + + // code = code%hash_table_size; + + // if(hashed[code]) { + // } else { + + // } +// } + +////////////////////////////////////////////////////////////////////// + // This looks severely Linux-only ... void inject_into_tty_buffer(char *line) { @@ -459,28 +477,6 @@ int main(int argc, char **argv) { while(*s == ' ' || (*s >= '0' && *s <= '9')) s++; } - /* - - // This is supposed to remove any duplicates, not only - // successive ones. However, it is O(N^2), we should use - // hash-codes - - int keep = 1; - - if(remove_duplicates) { - for(int k = 0; keep && k < nb_lines; k++) { - keep &= strcmp(lines[k], s); - } - } - - if(keep) { - lines[nb_lines] = new char[strlen(s) + 1]; - strcpy(lines[nb_lines], s); - nb_lines++; - } - - */ - if(!remove_duplicates || nb_lines == 0 || strcmp(lines[nb_lines - 1], s)) { lines[nb_lines] = new char[strlen(s) + 1]; strcpy(lines[nb_lines], s);