Home | History | Annotate | Download | only in glib

Lines Matching defs:barray

66 static inline gpointer          g_bsearch_array_get_nth   (GBSearchArray        *barray,
69 static inline guint g_bsearch_array_get_index (GBSearchArray *barray,
72 static inline GBSearchArray* g_bsearch_array_remove (GBSearchArray *barray,
76 static inline GBSearchArray* g_bsearch_array_grow (GBSearchArray *barray,
80 static inline GBSearchArray* g_bsearch_array_insert (GBSearchArray *barray,
86 static inline GBSearchArray* g_bsearch_array_replace (GBSearchArray *barray,
89 static inline void g_bsearch_array_free (GBSearchArray *barray,
91 #define g_bsearch_array_get_n_nodes(barray) (((GBSearchArray*) (barray))->n_nodes)
96 #define g_bsearch_array_lookup(barray, bconfig, key_node) \
97 g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
100 * return NULL for barray->n_nodes==0, otherwise return the
105 #define g_bsearch_array_lookup_sibling(barray, bconfig, key_node) \
106 g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 1)
109 * return NULL for barray->n_nodes==0 or exact match, otherwise
111 * after end, i.e. g_bsearch_array_get_index(result) <= barray->n_nodes).
113 #define g_bsearch_array_lookup_insertion(barray, bconfig, key_node) \
114 g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 2)
124 #define G_BSEARCH_ARRAY_NODES(barray) (((guint8*) (barray)) + sizeof (GBSearchArray))
128 GBSearchArray *barray;
136 barray = (GBSearchArray *) g_realloc (NULL, size);
137 memset (barray, 0, sizeof (GBSearchArray));
139 return barray;
142 g_bsearch_array_lookup_fuzzy (GBSearchArray *barray,
147 g_bsearch_array_lookup_fuzzy (GBSearchArray *barray,
153 guint8 *check = NULL, *nodes = G_BSEARCH_ARRAY_NODES (barray);
154 guint n_nodes = barray->n_nodes, offs = 0;
176 g_bsearch_array_get_nth (GBSearchArray *barray,
180 return (G_LIKELY (nth < barray->n_nodes) ?
181 G_BSEARCH_ARRAY_NODES (barray) + nth * bconfig->sizeof_node :
185 g_bsearch_array_get_index (GBSearchArray *barray,
189 guint distance = ((guint8*) node_in_array) - G_BSEARCH_ARRAY_NODES (barray);
191 g_return_val_if_fail (node_in_array != NULL, barray->n_nodes);
195 return MIN (distance, barray->n_nodes + 1); /* may return one after end */
198 g_bsearch_array_grow (GBSearchArray *barray,
202 guint old_size = barray->n_nodes * bconfig->sizeof_node;
206 g_return_val_if_fail (index_ <= barray->n_nodes, NULL);
213 barray = (GBSearchArray *) g_realloc (barray, new_size);
216 barray = (GBSearchArray *) g_realloc (barray, sizeof (GBSearchArray) + new_size);
217 node = G_BSEARCH_ARRAY_NODES (barray) + index_ * bconfig->sizeof_node;
218 g_memmove (node + bconfig->sizeof_node, node, (barray->n_nodes - index_) * bconfig->sizeof_node);
219 barray->n_nodes += 1;
220 return barray;
223 g_bsearch_array_insert (GBSearchArray *barray,
229 if (G_UNLIKELY (!barray->n_nodes))
231 barray = g_bsearch_array_grow (barray, bconfig, 0);
232 node = G_BSEARCH_ARRAY_NODES (barray);
236 node = (guint8 *) g_bsearch_array_lookup_insertion (barray, bconfig, key_node);
239 guint index_ = g_bsearch_array_get_index (barray, bconfig, node);
242 barray = g_bsearch_array_grow (barray, bconfig, index_);
243 node = G_BSEARCH_ARRAY_NODES (barray) + index_ * bconfig->sizeof_node;
246 return barray;
249 return barray;
252 g_bsearch_array_replace (GBSearchArray *barray,
256 guint8 *node = (guint8 *) g_bsearch_array_lookup (barray, bconfig, key_node);
260 barray = g_bsearch_array_insert (barray, bconfig, key_node);
261 return barray;
264 g_bsearch_array_remove (GBSearchArray *barray,
270 g_return_val_if_fail (index_ < barray->n_nodes, NULL);
272 barray->n_nodes -= 1;
273 node = G_BSEARCH_ARRAY_NODES (barray) + index_ * bconfig->sizeof_node;
274 g_memmove (node, node + bconfig->sizeof_node, (barray->n_nodes - index_) * bconfig->sizeof_node);
277 guint new_size = barray->n_nodes * bconfig->sizeof_node;
285 barray = (GBSearchArray *) g_realloc (barray, new_size);
288 barray = (GBSearchArray *) g_realloc (barray, sizeof (GBSearchArray) + new_size);
290 return barray;
293 g_bsearch_array_free (GBSearchArray *barray,
296 g_return_if_fail (barray != NULL);
298 g_free (barray);