Subversion Repositories HelenOS-historic

Rev

Rev 790 | Rev 814 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 790 Rev 792
Line 65... Line 65...
65
/** Insert item into hash table.
65
/** Insert item into hash table.
66
 *
66
 *
67
 * @param h Hash table.
67
 * @param h Hash table.
68
 * @param hey Array of all keys necessary to compute hash index.
68
 * @param hey Array of all keys necessary to compute hash index.
69
 * @param item Item to be inserted into the hash table.
69
 * @param item Item to be inserted into the hash table.
70
 *
-
 
71
 * @return true on success, false if the keys were already present in the hash table.
-
 
72
 */
70
 */
73
bool hash_table_insert(hash_table_t *h, __native key[], link_t *item)
71
void hash_table_insert(hash_table_t *h, __native key[], link_t *item)
74
{
72
{
75
    index_t chain;
73
    index_t chain;
76
 
74
 
77
    ASSERT(item);
75
    ASSERT(item);
78
    ASSERT(h && h->op && h->op->hash && h->op->compare);
76
    ASSERT(h && h->op && h->op->hash && h->op->compare);
79
 
77
 
80
    chain = h->op->hash(key);
78
    chain = h->op->hash(key);
81
    ASSERT(chain < h->entries);
79
    ASSERT(chain < h->entries);
82
   
80
   
83
    if (hash_table_find(h, key)) {
-
 
84
        /*
-
 
85
         * The hash table is not redundant.
-
 
86
         * Signal failure on return.
-
 
87
         */
-
 
88
        return false;
-
 
89
    }
-
 
90
   
-
 
91
    list_append(item, &h->entry[chain]);
81
    list_append(item, &h->entry[chain]);
92
    return true;
-
 
93
}
82
}
94
 
83
 
95
/** Search hash table for an item matching keys.
84
/** Search hash table for an item matching keys.
96
 *
85
 *
97
 * @param h Hash table.
86
 * @param h Hash table.