| 156 | } |
| 157 | |
| 158 | ACL_STACK *acl_stack_create(int init_size) |
| 159 | { |
| 160 | const char *myname = "acl_stack_create"; |
| 161 | ACL_STACK *s; |
| 162 | |
| 163 | init_size = init_size > 0 ? init_size : 1; |
| 164 | |
| 165 | s = (ACL_STACK *) acl_default_calloc(__FILE__, __LINE__, 1, sizeof(ACL_STACK)); |
| 166 | if (s == NULL) { |
| 167 | char ebuf[256]; |
| 168 | acl_msg_fatal("%s(%d): can't calloc, error=%s", |
| 169 | myname, __LINE__, acl_last_strerror(ebuf, sizeof(ebuf))); |
| 170 | } |
| 171 | |
| 172 | acl_stack_space(s, init_size); |
| 173 | |
| 174 | s->push_back = stack_push_back; |
| 175 | s->push_front = stack_push_front; |
| 176 | s->pop_back = stack_pop_back; |
| 177 | s->pop_front = stack_pop_front; |
| 178 | s->iter_head = stack_iter_head; |
| 179 | s->iter_next = stack_iter_next; |
| 180 | s->iter_tail = stack_iter_tail; |
| 181 | s->iter_prev = stack_iter_prev; |
| 182 | |
| 183 | return (s); |
| 184 | } |
| 185 | |
| 186 | void acl_stack_clean(ACL_STACK *s, void (*free_fn)(void *)) |
| 187 | { |
searching dependent graphs…