home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixtools / util / h / map < prev    next >
Text File  |  1992-07-21  |  1KB  |  52 lines

  1. /*      > H.Map - Map data type header file */
  2.  
  3. #ifndef __map_h
  4.  
  5. #define __map_h
  6.  
  7. struct link
  8. {
  9.         struct link *next;
  10.         char data[1];
  11. };
  12.  
  13. typedef struct link *link;
  14.  
  15. struct map
  16. {
  17.         link *bucket;                 /* array of bucket links */
  18.         int (*hash)(const void *);    /* hash function: domain -> int */
  19.         int buckets;                  /* number of buckets in hash table */
  20.         int domain_size;              /* size of one element in domain */
  21.         int range_size;               /* size of one element in range */
  22. };
  23.  
  24. typedef struct map *map;
  25.  
  26. /* General component routines */
  27.  
  28. map map_new (int domain_len, int range_len, int buckets, int (*hash)(const void *));
  29. void map_free (map m);
  30. void map_clear (map m);
  31. int map_copy (map m1, const map m2);
  32. int map_equal (const map m1, const map m2);
  33. int map_empty (const map m);
  34. int map_size (const map m);
  35.  
  36. /* Iterator */
  37.  
  38. #define STATUS_CONTINUE 0       /* Continue processing */
  39. #define STATUS_STOP     1       /* Stop processing */
  40. #define STATUS_ERROR    (-1)    /* Error - terminate */
  41.  
  42. int map_iterate (const map m, int (*process)(void *, void *));
  43.  
  44. /* Map-specific routines */
  45.  
  46. int map_bind (map m, const void *domain_val, const void *range_val);
  47. int map_unbind (map m, const void *domain_val);
  48. void *map_value (const map m, const void *domain_val);
  49. int map_bound (const map m, const void *domain_val);
  50.  
  51. #endif
  52.