Home | History | Annotate | Download | only in main
      1 /**
      2  * \file hash.h
      3  * Generic hash table.
      4  */
      5 
      6 /*
      7  * Mesa 3-D graphics library
      8  * Version:  6.5.1
      9  *
     10  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
     11  *
     12  * Permission is hereby granted, free of charge, to any person obtaining a
     13  * copy of this software and associated documentation files (the "Software"),
     14  * to deal in the Software without restriction, including without limitation
     15  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     16  * and/or sell copies of the Software, and to permit persons to whom the
     17  * Software is furnished to do so, subject to the following conditions:
     18  *
     19  * The above copyright notice and this permission notice shall be included
     20  * in all copies or substantial portions of the Software.
     21  *
     22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     23  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     24  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     25  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
     26  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
     27  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     28  */
     29 
     30 
     31 #ifndef HASH_H
     32 #define HASH_H
     33 
     34 
     35 #include "glheader.h"
     36 
     37 
     38 extern struct _mesa_HashTable *_mesa_NewHashTable(void);
     39 
     40 extern void _mesa_DeleteHashTable(struct _mesa_HashTable *table);
     41 
     42 extern void *_mesa_HashLookup(struct _mesa_HashTable *table, GLuint key);
     43 
     44 extern void _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data);
     45 
     46 extern void _mesa_HashRemove(struct _mesa_HashTable *table, GLuint key);
     47 
     48 extern void
     49 _mesa_HashDeleteAll(struct _mesa_HashTable *table,
     50                     void (*callback)(GLuint key, void *data, void *userData),
     51                     void *userData);
     52 
     53 extern void
     54 _mesa_HashWalk(const struct _mesa_HashTable *table,
     55                void (*callback)(GLuint key, void *data, void *userData),
     56                void *userData);
     57 
     58 extern GLuint _mesa_HashFirstEntry(struct _mesa_HashTable *table);
     59 
     60 extern GLuint _mesa_HashNextEntry(const struct _mesa_HashTable *table, GLuint key);
     61 
     62 extern void _mesa_HashPrint(const struct _mesa_HashTable *table);
     63 
     64 extern GLuint _mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys);
     65 
     66 extern GLuint
     67 _mesa_HashNumEntries(const struct _mesa_HashTable *table);
     68 
     69 extern void _mesa_test_hash_functions(void);
     70 
     71 
     72 #endif
     73