piojo-0.9
 All Classes Functions Variables Typedefs Enumerations Enumerator Groups
Piojo Ring

Functions

piojo_ring_t * piojo_ring_alloc (size_t ecount)
 
piojo_ring_t * piojo_ring_alloc_s (size_t esize, size_t ecount)
 
piojo_ring_t * piojo_ring_alloc_cb (size_t esize, size_t ecount, piojo_alloc_if allocator)
 
piojo_ring_t * piojo_ring_copy (const piojo_ring_t *ring)
 
void piojo_ring_free (const piojo_ring_t *ring)
 
void piojo_ring_clear (piojo_ring_t *ring)
 
size_t piojo_ring_size (const piojo_ring_t *ring)
 
bool piojo_ring_full_p (const piojo_ring_t *ring)
 
void piojo_ring_push (const void *data, piojo_ring_t *ring)
 
void piojo_ring_pop (piojo_ring_t *ring)
 
void * piojo_ring_peek (const piojo_ring_t *ring)
 

Variables

const size_t piojo_ring_sizeof
 

Detailed Description

Piojo Ring/Circular buffer implementation.

Function Documentation

piojo_ring_t* piojo_ring_alloc ( size_t  ecount)

Allocates a new ring. Uses default allocator and entry size of int.

Parameters
[in]ecountNumber of entries to reserve space for.
Returns
New ring.
piojo_ring_t* piojo_ring_alloc_cb ( size_t  esize,
size_t  ecount,
piojo_alloc_if  allocator 
)

Allocates a new ring.

Parameters
[in]esizeEntry size in bytes.
[in]ecountNumber of entries to reserve space for.
[in]allocatorAllocator to be used.
Returns
New ring.
piojo_ring_t* piojo_ring_alloc_s ( size_t  esize,
size_t  ecount 
)

Allocates a new ring. Uses default allocator.

Parameters
[in]esizeEntry size in bytes.
[in]ecountNumber of entries to reserve space for.
Returns
New ring.
void piojo_ring_clear ( piojo_ring_t *  ring)

Deletes all entries in ring.

Parameters
[out]ringRing being cleared.
piojo_ring_t* piojo_ring_copy ( const piojo_ring_t *  ring)

Copies ring and all its entries.

Parameters
[in]ringRing being copied.
Returns
New ring.
void piojo_ring_free ( const piojo_ring_t *  ring)

Frees ring and all its entries.

Parameters
[in]ringRing being freed.
bool piojo_ring_full_p ( const piojo_ring_t *  ring)

Returns whether ring is full.

Parameters
[in]ring
Returns
TRUE if ring is full, FALSE otherwise.
void* piojo_ring_peek ( const piojo_ring_t *  ring)

Reads the next entry.

Parameters
[in]ringNon-empty ring.
Returns
Entry value.
void piojo_ring_pop ( piojo_ring_t *  ring)

Deletes the next entry.

Parameters
[out]ringNon-empty ring.
void piojo_ring_push ( const void *  data,
piojo_ring_t *  ring 
)

Inserts a new entry after the last entry.

Warning
You should check ring is not full.
Parameters
[in]dataEntry value.
[out]ringRing being modified.
size_t piojo_ring_size ( const piojo_ring_t *  ring)

Returns number of entries.

Parameters
[in]ring
Returns
Number of entries in ring.

Variable Documentation

const size_t piojo_ring_sizeof

Size of ring in bytes