Lines Matching refs:key
22 int key;
35 static struct vector_item *binary_search(VECTOR *v, int key);
76 int vector_insert(VECTOR *v, int key, PPTP_CALL * call)
80 assert(!vector_contains(v, key));
82 assert(v->key_max < key);
96 if (v->item[i].key < key)
101 v->item[i + 1].key = key;
105 if (v->key_max < key) /* ie, always. */
106 v->key_max = key;
112 int vector_remove(VECTOR *v, int key)
116 if ((tmp =binary_search(v,key)) == NULL) return FALSE;
124 int vector_search(VECTOR *v, int key, PPTP_CALL **call)
128 tmp = binary_search(v, key);
135 int vector_contains(VECTOR *v, int key)
138 return (binary_search(v, key) != NULL);
142 static struct vector_item *binary_search(VECTOR *v, int key)
149 if (key < v->item[x].key) r = x - 1; else l = x + 1;
150 if (key == v->item[x].key) return &(v->item[x]);
157 * unused key, taking advantage of the list is stored sorted; ie
164 int vector_scan(VECTOR *v, int lo, int hi, int *key)
168 assert(key != NULL);
169 if ((v->size<1) || (lo < v->item[0].key)) { *key = lo; return TRUE; }
174 if (v->item[l].key + 1 < v->item[l + 1].key) { /* found it! */
175 *key = v->item[l].key + 1;
181 assert(x - l <= v->item[x].key - v->item[l].key);
182 assert(r - x <= v->item[r].key - v->item[x].key);
183 if (x - l < v->item[x].key - v->item[l].key)
187 if (r - x < v->item[r].key - v->item[x].key)
195 if (v->item[v->size - 1].key < hi) {
196 *key = v->item[v->size - 1].key + 1;