Welcome to little lamb

Code » limb » master » tree

[master] / src / doc / cdb.h / cdb_find.3.md

% limb manual
% cdb_find(3)
% limb 0.1.0
% 2023-07-24

# NAME

cdb_find, cdb_find_start, cdb_find_next - finding element in a cdb

# SYNOPSIS

    #include <limb/cdb.h>

```pre hl
int cdb_find(const cdb *<em>c</em>, cdb_data *<em>data</em>, const char *<em>key</em>, u32 <em>klen</em>);

void cdb_find_start(cdb_find_state *<em>find</em>)
int cdb_find_next(const cdb *<em>c</em>, cdb_data *<em>data</em>, const char *<em>key</em>, u32 <em>klen</em>, cdb_find_state *<em>find</em>)
```

# DESCRIPTION

The `cdb_find`() function looks up the key pointed by `key` of length `klen` in
the *cdb* pointed by `c`. If found, it will set the members `s` and `len` of the
*cdb_data* pointed by `data` to represent the data associated with the first
element found by that key.

Only the first element with that key can be found using this function.

The `cdb_find_start`() macro initialize the state pointed by `find` so that the
next invocation of `cdb_find_next`() using that state will find the first
element associated with the given key.

The `cdb_find_next`() function is similar to `cdb_find`() when the state pointed
by `find` has been initialized by `cdb_find_start`().
However, said state will be updated so that the next call to `cdb_find_next`()
using the same arguments for `key`, `klen` and `state` return the next element
associated with the key, and so on for all elements for said key.

Note that it is invalid and undefined what happens if calling `cdb_find_next`()
with an uninitialized state, or one initialized for a different key.

# RETURN VALUE

The `cdb_find`() and `cdb_find_next`() functions return -1 when the *cdb* pointed
by `c` is invalid; They return 1 on success, i.e. an element was found and
information about its associated data was set inside the *cdb_data* pointed by
`data`.

Otherwise, i.e. no element with that key was found, or - in the case of
`cdb_find_next`() - there are no more elements with that key, they return 0.