hash.h revision 7117f1b4
17117f1b4Smrg/**
27117f1b4Smrg * \file hash.h
37117f1b4Smrg * Generic hash table.
47117f1b4Smrg */
57117f1b4Smrg
67117f1b4Smrg/*
77117f1b4Smrg * Mesa 3-D graphics library
87117f1b4Smrg * Version:  6.5.1
97117f1b4Smrg *
107117f1b4Smrg * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
117117f1b4Smrg *
127117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a
137117f1b4Smrg * copy of this software and associated documentation files (the "Software"),
147117f1b4Smrg * to deal in the Software without restriction, including without limitation
157117f1b4Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
167117f1b4Smrg * and/or sell copies of the Software, and to permit persons to whom the
177117f1b4Smrg * Software is furnished to do so, subject to the following conditions:
187117f1b4Smrg *
197117f1b4Smrg * The above copyright notice and this permission notice shall be included
207117f1b4Smrg * in all copies or substantial portions of the Software.
217117f1b4Smrg *
227117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
237117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
247117f1b4Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
257117f1b4Smrg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
267117f1b4Smrg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
277117f1b4Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
287117f1b4Smrg */
297117f1b4Smrg
307117f1b4Smrg
317117f1b4Smrg#ifndef HASH_H
327117f1b4Smrg#define HASH_H
337117f1b4Smrg
347117f1b4Smrg
357117f1b4Smrg#include "glheader.h"
367117f1b4Smrg
377117f1b4Smrg
387117f1b4Smrgextern struct _mesa_HashTable *_mesa_NewHashTable(void);
397117f1b4Smrg
407117f1b4Smrgextern void _mesa_DeleteHashTable(struct _mesa_HashTable *table);
417117f1b4Smrg
427117f1b4Smrgextern void *_mesa_HashLookup(const struct _mesa_HashTable *table, GLuint key);
437117f1b4Smrg
447117f1b4Smrgextern void _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data);
457117f1b4Smrg
467117f1b4Smrgextern void _mesa_HashRemove(struct _mesa_HashTable *table, GLuint key);
477117f1b4Smrg
487117f1b4Smrgextern void
497117f1b4Smrg_mesa_HashDeleteAll(struct _mesa_HashTable *table,
507117f1b4Smrg                    void (*callback)(GLuint key, void *data, void *userData),
517117f1b4Smrg                    void *userData);
527117f1b4Smrg
537117f1b4Smrgextern void
547117f1b4Smrg_mesa_HashWalk(const struct _mesa_HashTable *table,
557117f1b4Smrg               void (*callback)(GLuint key, void *data, void *userData),
567117f1b4Smrg               void *userData);
577117f1b4Smrg
587117f1b4Smrgextern GLuint _mesa_HashFirstEntry(struct _mesa_HashTable *table);
597117f1b4Smrg
607117f1b4Smrgextern GLuint _mesa_HashNextEntry(const struct _mesa_HashTable *table, GLuint key);
617117f1b4Smrg
627117f1b4Smrgextern void _mesa_HashPrint(const struct _mesa_HashTable *table);
637117f1b4Smrg
647117f1b4Smrgextern GLuint _mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys);
657117f1b4Smrg
667117f1b4Smrgextern void _mesa_test_hash_functions(void);
677117f1b4Smrg
687117f1b4Smrg
697117f1b4Smrg#endif
70