Subversion Repositories HelenOS

Rev

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

Rev 4246 Rev 4249
Line 129... Line 129...
129
    return NULL;
129
    return NULL;
130
}
130
}
131
 
131
 
132
/** Remove all matching items from hash table.
132
/** Remove all matching items from hash table.
133
 *
133
 *
134
 * For each removed item, h->remove_callback() is called.
134
 * For each removed item, h->remove_callback() is called (if not NULL).
135
 *
135
 *
136
 * @param h Hash table.
136
 * @param h Hash table.
137
 * @param key Array of keys that will be compared against items of the hash table.
137
 * @param key Array of keys that will be compared against items of the hash table.
138
 * @param keys Number of keys in the key array.
138
 * @param keys Number of keys in the key array.
139
 */
139
 */
Line 144... Line 144...
144
   
144
   
145
    ASSERT(h);
145
    ASSERT(h);
146
    ASSERT(h->op);
146
    ASSERT(h->op);
147
    ASSERT(h->op->hash);
147
    ASSERT(h->op->hash);
148
    ASSERT(h->op->compare);
148
    ASSERT(h->op->compare);
149
    ASSERT(h->op->remove_callback);
-
 
150
    ASSERT(keys <= h->max_keys);
149
    ASSERT(keys <= h->max_keys);
151
   
150
   
152
    if (keys == h->max_keys) {
151
    if (keys == h->max_keys) {
153
   
152
   
154
        /*
153
        /*
Line 156... Line 155...
156
         */
155
         */
157
   
156
   
158
        cur = hash_table_find(h, key);
157
        cur = hash_table_find(h, key);
159
        if (cur) {
158
        if (cur) {
160
            list_remove(cur);
159
            list_remove(cur);
-
 
160
            if (h->op->remove_callback)
161
            h->op->remove_callback(cur);
161
                h->op->remove_callback(cur);
162
        }
162
        }
163
        return;
163
        return;
164
    }
164
    }
165
   
165
   
166
    /*
166
    /*
Line 174... Line 174...
174
               
174
               
175
                hlp = cur;
175
                hlp = cur;
176
                cur = cur->prev;
176
                cur = cur->prev;
177
               
177
               
178
                list_remove(hlp);
178
                list_remove(hlp);
-
 
179
                if (h->op->remove_callback)
179
                h->op->remove_callback(hlp);
180
                    h->op->remove_callback(hlp);
180
               
181
               
181
                continue;
182
                continue;
182
            }
183
            }
183
        }
184
        }
184
    }
185
    }