PATH:
usr
/
include
/
bind9
/
isc
/* * Copyright (C) Internet Systems Consortium, Inc. ("ISC") * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * See the COPYRIGHT file distributed with this work for additional * information regarding copyright ownership. */ /* ! \file */ #ifndef ISC_HT_H #define ISC_HT_H 1 #include <string.h> #include <isc/types.h> #include <isc/result.h> typedef struct isc_ht isc_ht_t; typedef struct isc_ht_iter isc_ht_iter_t; /*% * Initialize hashtable at *htp, using memory context and size of (1<<bits) * * Requires: *\li 'htp' is not NULL and '*htp' is NULL. *\li 'mctx' is a valid memory context. *\li 'bits' >=1 and 'bits' <=32 * * Returns: *\li #ISC_R_NOMEMORY -- not enough memory to create pool *\li #ISC_R_SUCCESS -- all is well. */ isc_result_t isc_ht_init(isc_ht_t **htp, isc_mem_t *mctx, isc_uint8_t bits); /*% * Destroy hashtable, freeing everything * * Requires: * \li '*htp' is valid hashtable */ void isc_ht_destroy(isc_ht_t **htp); /*% * Add a node to hashtable, pointed by binary key 'key' of size 'keysize'; * set its value to 'value' * * Requires: *\li 'ht' is a valid hashtable * * Returns: *\li #ISC_R_NOMEMORY -- not enough memory to create pool *\li #ISC_R_EXISTS -- node of the same key already exists *\li #ISC_R_SUCCESS -- all is well. */ isc_result_t isc_ht_add(isc_ht_t *ht, const unsigned char *key, isc_uint32_t keysize, void *value); /*% * Find a node matching 'key'/'keysize' in hashtable 'ht'; * if found, set 'value' to its value * * Requires: * \li 'ht' is a valid hashtable * * Returns: * \li #ISC_R_SUCCESS -- success * \li #ISC_R_NOTFOUND -- key not found */ isc_result_t isc_ht_find(const isc_ht_t *ht, const unsigned char *key, isc_uint32_t keysize, void **valuep); /*% * Delete node from hashtable * * Requires: *\li ht is a valid hashtable * * Returns: *\li #ISC_R_NOTFOUND -- key not found *\li #ISC_R_SUCCESS -- all is well */ isc_result_t isc_ht_delete(isc_ht_t *ht, const unsigned char *key, isc_uint32_t keysize); /*% * Create an iterator for the hashtable; point '*itp' to it. * * Requires: *\li 'ht' is a valid hashtable *\li 'itp' is non NULL and '*itp' is NULL. */ isc_result_t isc_ht_iter_create(isc_ht_t *ht, isc_ht_iter_t **itp); /*% * Destroy the iterator '*itp', set it to NULL * * Requires: *\li 'itp' is non NULL and '*itp' is non NULL. */ void isc_ht_iter_destroy(isc_ht_iter_t **itp); /*% * Set an iterator to the first entry. * * Requires: *\li 'it' is non NULL. * * Returns: * \li #ISC_R_SUCCESS -- success * \li #ISC_R_NOMORE -- no data in the hashtable */ isc_result_t isc_ht_iter_first(isc_ht_iter_t *it); /*% * Set an iterator to the next entry. * * Requires: *\li 'it' is non NULL. * * Returns: * \li #ISC_R_SUCCESS -- success * \li #ISC_R_NOMORE -- end of hashtable reached */ isc_result_t isc_ht_iter_next(isc_ht_iter_t *it); /*% * Delete current entry and set an iterator to the next entry. * * Requires: *\li 'it' is non NULL. * * Returns: * \li #ISC_R_SUCCESS -- success * \li #ISC_R_NOMORE -- end of hashtable reached */ isc_result_t isc_ht_iter_delcurrent_next(isc_ht_iter_t *it); /*% * Set 'value' to the current value under the iterator * * Requires: *\li 'it' is non NULL. *\li 'valuep' is non NULL and '*valuep' is NULL. */ void isc_ht_iter_current(isc_ht_iter_t *it, void **valuep); /*% * Set 'key' and 'keysize to the current key and keysize for the value * under the iterator * * Requires: *\li 'it' is non NULL. *\li 'key' is non NULL and '*key' is NULL. *\li 'keysize' is non NULL. */ void isc_ht_iter_currentkey(isc_ht_iter_t *it, unsigned char **key, size_t *keysize); /*% * Returns the number of items in the hashtable. * * Requires: *\li 'ht' is a valid hashtable */ unsigned int isc_ht_count(isc_ht_t *ht); #endif
[-] netscope.h
[edit]
[-] taskpool.h
[edit]
[-] netdb.h
[edit]
[-] md5.h
[edit]
[-] file.h
[edit]
[-] version.h
[edit]
[-] int.h
[edit]
[-] sha2.h
[edit]
[-] region.h
[edit]
[-] aes.h
[edit]
[-] string.h
[edit]
[-] socket.h
[edit]
[-] keyboard.h
[edit]
[-] base32.h
[edit]
[-] bufferlist.h
[edit]
[-] iterated_hash.h
[edit]
[-] magic.h
[edit]
[-] tm.h
[edit]
[-] serial.h
[edit]
[-] errno2result.h
[edit]
[-] resource.h
[edit]
[-] stats.h
[edit]
[+]
..
[-] heap.h
[edit]
[-] base64.h
[edit]
[-] ratelimiter.h
[edit]
[-] stdtime.h
[edit]
[-] mutexblock.h
[edit]
[-] sockaddr.h
[edit]
[-] mem.h
[edit]
[-] platform.h
[edit]
[-] errno.h
[edit]
[-] regex.h
[edit]
[-] hex.h
[edit]
[-] result.h
[edit]
[-] radix.h
[edit]
[-] crc64.h
[edit]
[-] atomic.h
[edit]
[-] fsaccess.h
[edit]
[-] thread.h
[edit]
[-] stat.h
[edit]
[-] xml.h
[edit]
[-] boolean.h
[edit]
[-] ht.h
[edit]
[-] lang.h
[edit]
[-] offset.h
[edit]
[-] log.h
[edit]
[-] refcount.h
[edit]
[-] time.h
[edit]
[-] bind9.h
[edit]
[-] quota.h
[edit]
[-] httpd.h
[edit]
[-] strerror.h
[edit]
[-] hash.h
[edit]
[-] types.h
[edit]
[-] eventclass.h
[edit]
[-] hmacsha.h
[edit]
[-] pool.h
[edit]
[-] task.h
[edit]
[-] counter.h
[edit]
[-] msgs.h
[edit]
[-] stdlib.h
[edit]
[-] syslog.h
[edit]
[-] likely.h
[edit]
[-] sha1.h
[edit]
[-] timer.h
[edit]
[-] lfsr.h
[edit]
[-] safe.h
[edit]
[-] stdio.h
[edit]
[-] os.h
[edit]
[-] condition.h
[edit]
[-] rwlock.h
[edit]
[-] meminfo.h
[edit]
[-] symtab.h
[edit]
[-] mutex.h
[edit]
[-] print.h
[edit]
[-] backtrace.h
[edit]
[-] json.h
[edit]
[-] ondestroy.h
[edit]
[-] formatcheck.h
[edit]
[-] event.h
[edit]
[-] once.h
[edit]
[-] net.h
[edit]
[-] error.h
[edit]
[-] entropy.h
[edit]
[-] parseint.h
[edit]
[-] app.h
[edit]
[-] lib.h
[edit]
[-] assertions.h
[edit]
[-] commandline.h
[edit]
[-] msgcat.h
[edit]
[-] lex.h
[edit]
[-] hmacmd5.h
[edit]
[-] interfaceiter.h
[edit]
[-] netaddr.h
[edit]
[-] random.h
[edit]
[-] dir.h
[edit]
[-] list.h
[edit]
[-] util.h
[edit]
[-] queue.h
[edit]
[-] portset.h
[edit]
[-] deprecated.h
[edit]
[-] buffer.h
[edit]
[-] resultclass.h
[edit]