Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 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
58
_mesa_HashDeleteAll(struct _mesa_HashTable *table,
59
                    void (*callback)(GLuint key, void *data, void *userData),
60
                    void *userData);
61
 
62
extern struct _mesa_HashTable *
63
_mesa_HashClone(const struct _mesa_HashTable *table);
64
 
65
extern void
66
_mesa_HashWalk(const struct _mesa_HashTable *table,
67
               void (*callback)(GLuint key, void *data, void *userData),
68
               void *userData);
69
 
70
extern void _mesa_HashPrint(const struct _mesa_HashTable *table);
71
 
72
extern GLuint _mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys);
73
 
74
extern GLuint
75
_mesa_HashNumEntries(const struct _mesa_HashTable *table);
76
 
77
extern void _mesa_test_hash_functions(void);
78
 
79
 
80
#endif