1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #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);
- }
|