Files
microser/include/oss_sdk/aos_fstack.c

51 lines
1.1 KiB
C
Raw Permalink Normal View History

2025-01-16 16:17:01 +08:00
#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);
}