Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

inthash.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *cr
00003  *cr            (C) Copyright 1995-2019 The Board of Trustees of the
00004  *cr                        University of Illinois
00005  *cr                         All Rights Reserved
00006  *cr
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  * RCS INFORMATION:
00011  *
00012  *      $RCSfile: inthash.h,v $
00013  *      $Author: johns $        $Locker:  $             $State: Exp $
00014  *      $Revision: 1.10 $      $Date: 2019/01/17 21:21:03 $
00015  *
00016  ***************************************************************************
00017  * DESCRIPTION:
00018  *   A simple hash table implementation for ints, contributed by John Stone,
00019  *   derived from his ray tracer code.
00020  * NOTES: - this can only used for _positive_ data values (HASH_FAIL is -1)
00021  *        - this code is slightly modified from the version in Tachyon
00022  *          so that both, the string hash and the int hash can be used.
00023  ***************************************************************************/
00024 #ifndef INTHASH_H
00025 #define INTHASH_H
00026 
00028 typedef struct inthash_t {
00029   struct inthash_node_t **bucket;        /* array of hash nodes */
00030   int size;                           /* size of the array */
00031   int entries;                        /* number of entries in table */
00032   int downshift;                      /* shift cound, used in hash function */
00033   int mask;                           /* used to select bits for hashing */
00034 } inthash_t;
00035 
00036 #define HASH_FAIL -1
00037 
00038 #if defined(VMDPLUGIN_STATIC)
00039 #define VMDEXTERNSTATIC static
00040 #include "inthash.c"
00041 #else
00042 
00043 #define VMDEXTERNSTATIC 
00044 
00045 #ifdef __cplusplus
00046 extern "C" {
00047 #endif
00048 
00050 void inthash_init(inthash_t *, int);
00051 
00053 int inthash_lookup(const inthash_t *, int);
00054 
00056 int inthash_insert(inthash_t *, int, int);
00057 
00059 int inthash_delete(inthash_t *, int);
00060 
00062 int inthash_entries(inthash_t *);
00063 
00065 void inthash_destroy(inthash_t *);
00066 
00068 char *inthash_stats(inthash_t *);
00069 
00070 #ifdef __cplusplus
00071 }
00072 #endif
00073 
00074 #endif
00075 
00076 #endif

Generated on Fri Apr 19 02:44:30 2024 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002