dict.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:2k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * dict.h - lookup data structure using octet strings as keys
  3.  *
  4.  * A Dict is an abstract data structure that stores values, represented as
  5.  * void pointers, and uses octet strings (Octstr) as keys. You can think
  6.  * of it as an array indexed by octet strings.
  7.  *
  8.  * Lars Wirzenius
  9.  */
  10. #ifndef DICT_H
  11. #define DICT_H
  12. typedef struct Dict Dict;
  13. /*
  14.  * Create a Dict. `size_hint' gives an indication of how many different
  15.  * keys will be in the Dict at the same time, at most. This is used for
  16.  * performance optimization; things will work fine, though somewhat
  17.  * slower, even if it the number is exceeded. `destroy_value' is a pointer
  18.  * to a function that is called whenever a value stored in the Dict needs
  19.  * to be destroyed. If `destroy_value' is NULL, then values are not
  20.  * destroyed by the Dict, they are just discarded.
  21.  */
  22. Dict *dict_create(long size_hint, void (*destroy_value)(void *));
  23. /*
  24.  * Destroy a Dict and all values in it.
  25.  */
  26. void dict_destroy(Dict *dict);
  27. /*
  28.  * Put a new value into a Dict. If the same key existed already, the
  29.  * old value is destroyed. If `value' is NULL, the old value is destroyed
  30.  * and the key is removed from the Dict.
  31.  */
  32. void dict_put(Dict *dict, Octstr *key, void *value);
  33. /*
  34.  * Put a new value into a Dict. Return error, if the same key existed all-
  35.  * ready.
  36.  */
  37. int dict_put_once(Dict *dict, Octstr *key, void *value);
  38. /*
  39.  * Look up a value in a Dict. If there is no value corresponding to a 
  40.  * key, return NULL, otherwise return the value. The value will not
  41.  * be removed from the Dict.
  42.  */
  43. void *dict_get(Dict *dict, Octstr *key);
  44. /*
  45.  * Remove a value from a Dict without destroying it.
  46.  */
  47. void *dict_remove(Dict *dict, Octstr *key);
  48. /*
  49.  * Return the number of keys which currently exist in the Dict.
  50.  */
  51. long dict_key_count(Dict *dict);
  52. /*
  53.  * Return a list of all the currently defined keys in the Dict. The
  54.  * caller must destroy the list.
  55.  */
  56. List *dict_keys(Dict *dict);
  57. #endif