collectn.c
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. /* collectn.c Implements variable length pointer arrays [collections]
  2.  *
  3.  * This file is public domain.
  4.  */
  5. #include "collectn.h"
  6. #include <stdlib.h>
  7. void collection_init(Collection * c)
  8. {
  9.   int i;
  10.   for (i = 0; i < 32; i++) c->p[i] = NULL;
  11.   c->next = NULL;
  12. }
  13. void ** colln(Collection * c, int index)
  14. {
  15.   while (index >= 32) {
  16.     index -= 32;
  17.     if (c->next == NULL) {
  18.       c->next = malloc(sizeof(Collection));
  19.       collection_init(c->next);
  20.     }
  21.     c = c->next;
  22.   }
  23.   return &(c->p[index]);
  24. }
  25. void collection_reset(Collection *c)
  26. {
  27.   int i;
  28.   if (c->next) {
  29.     collection_reset(c->next);
  30.     free(c->next);
  31.   }
  32.   c->next = NULL;
  33.   for (i = 0; i < 32; i++) c->p[i] = NULL;
  34. }