| /* |
| * collectn.c - implements variable length pointer arrays [collections]. |
| * |
| * This file is public domain. |
| */ |
| |
| #include "rdfutils.h" |
| #include "collectn.h" |
| |
| void collection_init(Collection * c) |
| { |
| int i; |
| |
| for (i = 0; i < 32; i++) |
| c->p[i] = NULL; |
| c->next = NULL; |
| } |
| |
| void **colln(Collection * c, int index) |
| { |
| while (index >= 32) { |
| index -= 32; |
| if (c->next == NULL) { |
| c->next = nasm_malloc(sizeof(Collection)); |
| collection_init(c->next); |
| } |
| c = c->next; |
| } |
| return &(c->p[index]); |
| } |
| |
| void collection_reset(Collection * c) |
| { |
| int i; |
| |
| if (c->next) { |
| collection_reset(c->next); |
| nasm_free(c->next); |
| } |
| |
| c->next = NULL; |
| for (i = 0; i < 32; i++) |
| c->p[i] = NULL; |
| } |