dtopen.c 799 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <cdt/dthdr.h>
  2. #include <stdlib.h>
  3. /* Make a new dictionary
  4. **
  5. ** Written by Kiem-Phong Vo (5/25/96)
  6. */
  7. Dt_t* dtopen(Dtdisc_t* disc, Dtmethod_t* meth)
  8. {
  9. Dt_t* dt;
  10. Dtdata_t* data;
  11. if(!disc || !meth)
  12. return NULL;
  13. /* allocate space for dictionary */
  14. if(!(dt = malloc(sizeof(Dt_t))))
  15. return NULL;
  16. /* initialize all absolutely private data */
  17. dt->searchf = NULL;
  18. dt->meth = NULL;
  19. dt->disc = NULL;
  20. dtdisc(dt, disc);
  21. dt->nview = 0;
  22. dt->view = dt->walk = NULL;
  23. dt->user = NULL;
  24. /* allocate sharable data */
  25. if (!(data = malloc(sizeof(Dtdata_t))))
  26. {
  27. free(dt);
  28. return NULL;
  29. }
  30. data->type = meth->type;
  31. data->here = NULL;
  32. data->htab = NULL;
  33. data->ntab = data->size = data->loop = 0;
  34. dt->data = data;
  35. dt->searchf = meth->searchf;
  36. dt->meth = meth;
  37. return dt;
  38. }