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

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  *
  3.  * wshash.h
  4.  *
  5.  * Author: Markku Rossi <mtr@iki.fi>
  6.  *
  7.  * Copyright (c) 1999-2000 WAPIT OY LTD.
  8.  *  All rights reserved.
  9.  *
  10.  * A mapping from null-terminated strings to `void *' pointers.
  11.  *
  12.  */
  13. #ifndef WSHASH_H
  14. #define WSHASH_H
  15. /********************* Types and definitions ****************************/
  16. /* A hash handle. */
  17. typedef struct WsHashRec *WsHashPtr;
  18. /* A callback function of this type is called to free the data item
  19.    `item' when the hash is destroyed, or a new mapping is set for the
  20.    key of the item `item'.  The argument `context' is a user specified
  21.    context data for the function. */
  22. typedef void (*WsHashItemDestructor)(void *item, void *context);
  23. /********************* Prototypes for global functions ******************/
  24. /* Create a new hash table.  The argument `destructor' is a destructor
  25.    function that is called once for each deleted item.  The argument
  26.    `context' is passed as context data to the destructor function.
  27.    The argument `destructor' can be NULL in which case the mapped
  28.    items are not freed.  The function returns NULL if the creation
  29.    failed (out of memory). */
  30. WsHashPtr ws_hash_create(WsHashItemDestructor destructor, void *contex);
  31. /* Destroy the hash `hash' and free all resources it has allocated.
  32.    If the hash has a destructor function, it is called once for each
  33.    mapped item. */
  34. void ws_hash_destroy(WsHashPtr hash);
  35. /* Add a mapping from the name `name' to the data `data'.  The
  36.    function takes a copy of the name `name' but the data `data' is
  37.    stored as-is.  The possible old data, stored for the name `name',
  38.    will be freed with the destructor function.  The function returns
  39.    WS_TRUE if the operatio was successful or WS_FALSE otherwise. */
  40. WsBool ws_hash_put(WsHashPtr hash, const char *name, void *data);
  41. /* Get the mapping of the name `name' from the hash `hash'. */
  42. void *ws_hash_get(WsHashPtr hash, const char *name);
  43. /* Clear the hash and free all individual items with the destructor
  44.    function.  After this call, the hash `hash' does not contain any
  45.    mappings. */
  46. void ws_hash_clear(WsHashPtr hash);
  47. #endif /* not WSHASH_H */