Hi. I wrote a small hashlib for C. Because I'm new to hashes I looked at pythons implementation and reused *some* of the code... or more the mathematical "hash-function", not really the code.
In particular I looked at pythons hash and lookup functions, so I came up with this (see the code underneath). So, can this code be considered as derived and do I have to put my code under the GPL? I'd like to publish it under something less restrictive, like a BSD style license. But if GPL is the only way, then GPL it is. :) -panzi #define PERTURB_SHIFT 5 static ENTRY_T * lookup(CONTAINER_T * table, hash_const_str_t key, int (*loop_cond)(ENTRY_T * ptr, hash_const_str_t key)) { register ENTRY_T * entries = table->entries; register hash_size_t size = table->size; register hash_size_t pos = hash(key) % size; register hash_size_t perturb = pos; register ENTRY_T * ptr = entries + pos; while(loop_cond(ptr,key)) { pos = ((pos << 2) + pos + perturb + 1) % size; perturb >>= PERTURB_SHIFT; ptr = entries + pos; #ifdef HASH_COUNT_COLLISIONS ++ table->collisions; #endif } return ptr; } hash_t hash(register hash_const_str_t str) { /* python 2.5's hash function: */ register hash_size_t len; register hash_t h; assert(str); len = strlen(str); h = *str << 7; while (*str) h = (1000003 * h) ^ *str ++; h ^= len; return h; } -- http://mail.python.org/mailman/listinfo/python-list