mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-17 19:41:36 +08:00
queue区分私有和公有
This commit is contained in:
parent
8f5540743f
commit
a249cae244
@ -21,6 +21,7 @@ struct _queue_node
|
||||
|
||||
struct _queue
|
||||
{
|
||||
// -------------------- private --------------------
|
||||
struct _queue_node * _front;
|
||||
struct _queue_node * _back;
|
||||
|
||||
@ -32,24 +33,23 @@ struct _queue
|
||||
uint32_t _capacity;
|
||||
uint32_t _ratio;
|
||||
|
||||
void (*_destory)(struct _queue* self);
|
||||
|
||||
// -------------------- public --------------------
|
||||
// kernel
|
||||
bool (*push)(struct _queue* self, void* obj);
|
||||
bool (*pop)(struct _queue* self, void* obj);
|
||||
|
||||
bool (*back)(struct _queue* self, void* obj);
|
||||
bool (*front)(struct _queue* self, void* obj);
|
||||
|
||||
// base
|
||||
bool (*empty)(struct _queue* self);
|
||||
bool (*full)(struct _queue* self);
|
||||
|
||||
// base
|
||||
uint32_t (*size)(struct _queue* self);
|
||||
uint32_t (*capacity)(struct _queue* self);
|
||||
|
||||
// clear and free node
|
||||
bool (*clear)(struct _queue* self);
|
||||
void (*destory)(struct _queue* self);
|
||||
|
||||
// print
|
||||
// -------------------- debug --------------------
|
||||
void (*print)(struct _queue* self);
|
||||
void (*print_obj)(void* obj);
|
||||
};
|
||||
|
@ -53,7 +53,7 @@ struct _stack
|
||||
// iter
|
||||
iterator_t (*iter)(struct _stack* self);
|
||||
|
||||
// ---------- debug ----------
|
||||
// -------------------- debug --------------------
|
||||
void (*print)(struct _stack* self);
|
||||
void (*print_obj)(void* obj);
|
||||
};
|
||||
|
36
src/queue.c
36
src/queue.c
@ -334,7 +334,7 @@ static bool queue_init(struct _queue * self, uint32_t obj_size)
|
||||
self->size = queue_size;
|
||||
self->capacity = queue_capacity;
|
||||
|
||||
self->destory = queue_destory;
|
||||
self->_destory = queue_destory;
|
||||
self->print = queue_print;
|
||||
|
||||
// init front & back
|
||||
@ -373,7 +373,7 @@ static bool queue_init2(struct _queue * self, uint32_t obj_size, uint32_t capaci
|
||||
self->size = queue_size;
|
||||
self->capacity = queue_capacity;
|
||||
|
||||
self->destory = queue2_destory;
|
||||
self->_destory = queue2_destory;
|
||||
self->print = queue2_print;
|
||||
|
||||
// init front & back
|
||||
@ -413,13 +413,15 @@ queue_t queue_new(uint32_t obj_size)
|
||||
{
|
||||
struct _queue * queue = NULL;
|
||||
queue = (struct _queue *)calloc(1, sizeof(struct _queue));
|
||||
if(queue != NULL)
|
||||
if(queue == NULL)
|
||||
{
|
||||
if(queue_init(queue, obj_size) == false)
|
||||
{
|
||||
free(queue);
|
||||
queue = NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(queue_init(queue, obj_size) != true)
|
||||
{
|
||||
free(queue);
|
||||
return NULL;
|
||||
}
|
||||
return queue;
|
||||
}
|
||||
@ -437,13 +439,15 @@ queue_t queue_new2(uint32_t obj_size, uint32_t capacity)
|
||||
{
|
||||
struct _queue * queue = NULL;
|
||||
queue = (struct _queue *)calloc(1, sizeof(struct _queue));
|
||||
if(queue != NULL)
|
||||
if(queue == NULL)
|
||||
{
|
||||
if(queue_init2(queue, obj_size, capacity) == false)
|
||||
{
|
||||
free(queue);
|
||||
queue = NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(queue_init2(queue, obj_size, capacity) != true)
|
||||
{
|
||||
free(queue);
|
||||
return NULL;
|
||||
}
|
||||
return queue;
|
||||
}
|
||||
@ -459,9 +463,9 @@ void queue_free(queue_t* queue)
|
||||
assert(queue != NULL);
|
||||
if(queue != NULL && *queue != NULL)
|
||||
{
|
||||
if((*queue)->destory != NULL)
|
||||
if((*queue)->_destory != NULL)
|
||||
{
|
||||
(*queue)->destory(*queue);
|
||||
(*queue)->_destory(*queue);
|
||||
}
|
||||
free(*queue);
|
||||
*queue = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user