Added some code to use a hash table for duplicates. Commented also.
authorFrancois Fleuret <francois@fleuret.org>
Sun, 15 Mar 2009 14:59:27 +0000 (15:59 +0100)
committerFrancois Fleuret <francois@fleuret.org>
Sun, 15 Mar 2009 14:59:33 +0000 (15:59 +0100)
selector.cc

index e119fc6..53b65bb 100644 (file)
@@ -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);