b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* x-hash.h -- basic hash table class
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync $Id$
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Permission is hereby granted, free of charge, to any person
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync obtaining a copy of this software and associated documentation files
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (the "Software"), to deal in the Software without restriction,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync including without limitation the rights to use, copy, modify, merge,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync publish, distribute, sublicense, and/or sell copies of the Software,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync and to permit persons to whom the Software is furnished to do so,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync subject to the following conditions:
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync The above copyright notice and this permission notice shall be
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync included in all copies or substantial portions of the Software.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DEALINGS IN THE SOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Except as contained in this notice, the name(s) of the above
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync copyright holders shall not be used in advertising or otherwise to
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync promote the sale, use or other dealings in this Software without
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync prior written authorization. */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-hash.h,v 1.1 2003/04/30 23:15:42 torrey Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef X_HASH_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_HASH_H 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct x_hash_table_struct x_hash_table;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef int (x_compare_fun) (const void *a, const void *b);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned int (x_hash_fun) (const void *k);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (x_destroy_fun) (void *x);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (x_hash_foreach_fun) (void *k, void *v, void *data);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* for X_PFX and X_EXTERN */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "x-list.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncX_EXTERN x_hash_table *X_PFX (hash_table_new) (x_hash_fun *hash,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync x_compare_fun *compare,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync x_destroy_fun *key_destroy,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync x_destroy_fun *value_destroy);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncX_EXTERN void X_PFX (hash_table_free) (x_hash_table *h);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncX_EXTERN unsigned int X_PFX (hash_table_size) (x_hash_table *h);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncX_EXTERN void X_PFX (hash_table_insert) (x_hash_table *h, void *k, void *v);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncX_EXTERN void X_PFX (hash_table_replace) (x_hash_table *h, void *k, void *v);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncX_EXTERN void X_PFX (hash_table_remove) (x_hash_table *h, void *k);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncX_EXTERN void *X_PFX (hash_table_lookup) (x_hash_table *h,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync void *k, void **k_ret);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncX_EXTERN void X_PFX (hash_table_foreach) (x_hash_table *h,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync x_hash_foreach_fun *fun,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync void *data);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif /* X_HASH_H */