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