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  *
      9  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
     10  *
     11  * Permission is hereby granted, free of charge, to any person obtaining a
     12  * copy of this software and associated documentation files (the "Software"),
     13  * to deal in the Software without restriction, including without limitation
     14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     15  * and/or sell copies of the Software, and to permit persons to whom the
     16  * Software is furnished to do so, subject to the following conditions:
     17  *
     18  * The above copyright notice and this permission notice shall be included
     19  * in all copies or substantial portions of the Software.
     20  *
     21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     22  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
     25  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     27  * 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 _mesa_HashLockMutex(struct _mesa_HashTable *table);
     49 
     50 extern void _mesa_HashUnlockMutex(struct _mesa_HashTable *table);
     51 
     52 extern void *_mesa_HashLookupLocked(struct _mesa_HashTable *table, GLuint key);
     53 
     54 extern void _mesa_HashInsertLocked(struct _mesa_HashTable *table,
     55                                    GLuint key, void *data);
     56 
     57 extern void _mesa_HashRemoveLocked(struct _mesa_HashTable *table, GLuint key);
     58 
     59 extern void
     60 _mesa_HashDeleteAll(struct _mesa_HashTable *table,
     61                     void (*callback)(GLuint key, void *data, void *userData),
     62                     void *userData);
     63 
     64 extern void
     65 _mesa_HashWalk(const struct _mesa_HashTable *table,
     66                void (*callback)(GLuint key, void *data, void *userData),
     67                void *userData);
     68 
     69 extern void _mesa_HashPrint(const struct _mesa_HashTable *table);
     70 
     71 extern GLuint _mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys);
     72 
     73 extern GLuint
     74 _mesa_HashNumEntries(const struct _mesa_HashTable *table);
     75 
     76 extern void _mesa_test_hash_functions(void);
     77 
     78 
     79 #endif
     80