lnk commit front code
This commit is contained in:
50
include/oss_sdk/aos_fstack.c
Normal file
50
include/oss_sdk/aos_fstack.c
Normal file
@@ -0,0 +1,50 @@
|
||||
#include "aos_fstack.h"
|
||||
|
||||
aos_array_header_t *aos_fstack_create(aos_pool_t *p, int size)
|
||||
{
|
||||
return apr_array_make(p, size, sizeof(aos_fstack_item_t));
|
||||
}
|
||||
|
||||
void aos_fstack_push(aos_array_header_t *fstack, void *data, aos_func_u func, int order)
|
||||
{
|
||||
aos_fstack_item_t *item;
|
||||
|
||||
item = (aos_fstack_item_t*)apr_array_push(fstack);
|
||||
item->data = data;
|
||||
item->func = func;
|
||||
item->order = order;
|
||||
}
|
||||
|
||||
aos_fstack_item_t *aos_fstack_pop(aos_array_header_t *fstack)
|
||||
{
|
||||
aos_fstack_item_t *item;
|
||||
|
||||
item = (aos_fstack_item_t*)apr_array_pop(fstack);
|
||||
if (item == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
switch (item->order) {
|
||||
case 1:
|
||||
item->func.func1(item->data);
|
||||
break;
|
||||
case 2:
|
||||
item->func.func2();
|
||||
break;
|
||||
case 3:
|
||||
item->func.func3(item->data);
|
||||
break;
|
||||
case 4:
|
||||
item->func.func4();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
void aos_fstack_destory(aos_array_header_t *fstack)
|
||||
{
|
||||
while (aos_fstack_pop(fstack) != NULL);
|
||||
}
|
||||
Reference in New Issue
Block a user