diff options
Diffstat (limited to 'docs/cqueue_api.md')
| -rw-r--r-- | docs/cqueue_api.md | 49 |
1 files changed, 11 insertions, 38 deletions
diff --git a/docs/cqueue_api.md b/docs/cqueue_api.md index dac51564..eb1450a3 100644 --- a/docs/cqueue_api.md +++ b/docs/cqueue_api.md @@ -1,20 +1,23 @@ # STC [cqueue](../include/stc/cqueue.h): Queue  -The **cqueue** is container adapter that gives the programmer the functionality of a queue - specifically, a FIFO (first-in, first-out) data structure. The class template acts as a wrapper to the underlying container - only a specific set of functions is provided. The queue pushes the elements on the back of the underlying container and pops them from the front. +The **cqueue** is container that gives the programmer the functionality of a queue - specifically, a FIFO (first-in, first-out) data structure. The queue pushes the elements on the back of the underlying container and pops them from the front. See the c++ class [std::queue](https://en.cppreference.com/w/cpp/container/queue) for a functional reference. ## Header file and declaration ```c -#include <stc/cqueue.h> /* includes default underlying implementation header cdeq.h */ - -using_cqueue(X, ctype) +#define i_tag +#define i_val // required +#define i_cmp // required if i_val is a struct +#define i_valdel +#define i_valfrom +#define i_valto +#define i_valraw +#include <stc/cqueue.h> ``` -The macro `using_cqueue()` must be instantiated in the global scope. **cqueue** uses normally -a **cdeq_X** or **clist_X** type as underlying implementation, given as `ctype`. See example below for usage. -`X` is a type tag name and will affect the names of all cqueue types and methods. E.g. declaring -`using_cqueue(i, clist_i)`, `X` should be replaced by `i` in all of the following documentation. +`X` should be replaced by the value of i_tag in all of the following documentation. + ## Methods @@ -80,33 +83,3 @@ Output: ``` 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ``` -### Example 2 -Use clist as underlying cqueue implementation. -```c -#include <stc/cqueue.h> -#include <stc/clist.h> -#include <stdio.h> - -using_clist(i, int); -using_cqueue(i, clist_i); - -int main() { - cqueue_i Q = cqueue_i_init(); - - // push() and pop() a few. - c_forrange (i, 20) - cqueue_i_push(&Q, i); - - c_forrange (5) - cqueue_i_pop(&Q); - - c_foreach (i, cqueue_i, Q) - printf(" %d", *i.ref); - - cqueue_i_del(&Q); -} -``` -Output: -``` -5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 -``` |
