Пример #1
0
Файл: btree.c Проект: taysom/tau
static inline rec_s *find_rec (leaf_s *leaf, u64 key)
{
	rec_s	*rec;
FN;
	rec = binary_search_leaf_or_next(key, leaf->l_rec, leaf->l_num);
	return found(leaf, rec, key) ? rec : 0;
}
Пример #2
0
Файл: mtree.c Проект: taysom/tau
static inline rec_s *find_rec (leaf_s *leaf, u32 key)
{
    rec_s	*rec;
    FN;
    rec = binary_search_leaf_or_next(key, leaf->l_rec, leaf->l_num);
    if (found(leaf, rec, key)) {
        return rec;
    } else {
        return NULL;
    }
}
Пример #3
0
static int find_or_next_leaf (
	leaf_s	*leaf,
	u64	key,
	u64	*found_or_next_key,
	char	*name)
{
	rec_s	*rec;

	rec = binary_search_leaf_or_next(key, leaf->l_rec, leaf->l_num);
	if (rec == &leaf->l_rec[leaf->l_num]) {
		return qERR_TRY_NEXT;
	}
	assert(key <= rec->r_key);
	*found_or_next_key = rec->r_key;
	if (name) {
		memcpy(name, (char *)leaf + rec->r_start,
			rec->r_size);
	}
	return 0;
}
Пример #4
0
static int search_leaf (
	tree_s		*tree,
	leaf_s		*leaf,
	u64		key,
	search_f	sf,
	void		*data)
{
	rec_s	*rec;
	int	rc;

	rec = binary_search_leaf_or_next(key, leaf->l_rec, leaf->l_num);
	assert(rec);
	for (;;) {
		if (rec == &leaf->l_rec[leaf->l_num]) {
			return qERR_TRY_NEXT;
		}
		rc = sf(data, rec->r_key,
			(char *)leaf + rec->r_start, rec->r_size);
		if (rc != qERR_TRY_NEXT) {
			return rc;
		}
		++rec;
	}
}
Пример #5
0
Файл: mtree.c Проект: taysom/tau
static inline rec_s *leaf_search (void *blk, u32 key)
{
    leaf_s	*leaf = blk;
    FN;
    return binary_search_leaf_or_next(key, leaf->l_rec, leaf->l_num);
}