33 lines
965 B
C
33 lines
965 B
C
/* This file is part of the OpenMV project.
|
|
* Copyright (c) 2013-2017 Ibrahim Abdelkader <iabdalkader@openmv.io> & Kwabena W. Agyeman <kwagyeman@openmv.io>
|
|
* This work is licensed under the MIT license, see the file LICENSE for details.
|
|
*/
|
|
|
|
#ifndef __COLLECTIONS_H__
|
|
#define __COLLECTIONS_H__
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
//////////
|
|
// lifo //
|
|
//////////
|
|
|
|
typedef struct lifo
|
|
{
|
|
size_t len, size, data_len;
|
|
char *data;
|
|
}
|
|
__attribute__((aligned(8))) lifo_t;
|
|
|
|
void lifo_alloc(lifo_t *ptr, size_t size, size_t data_len);
|
|
void lifo_alloc_all(lifo_t *ptr, size_t *size, size_t data_len);
|
|
void lifo_free(lifo_t *ptr);
|
|
void lifo_clear(lifo_t *ptr);
|
|
size_t lifo_size(lifo_t *ptr);
|
|
bool lifo_is_not_empty(lifo_t *ptr);
|
|
bool lifo_is_not_full(lifo_t *ptr);
|
|
void lifo_enqueue(lifo_t *ptr, void *data);
|
|
void lifo_dequeue(lifo_t *ptr, void *data);
|
|
void lifo_poke(lifo_t *ptr, void *data);
|
|
void lifo_peek(lifo_t *ptr, void *data);
|
|
|
|
#endif /* __COLLECTIONS_H__ */ |