core  array_cache  math  swrast  swrast_setup  tnl  tnl_dd 
Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

hash.h File Reference

Generic hash table. More...

#include "glheader.h"

Functions

_mesa_HashTable_mesa_NewHashTable (void)
 Create a new hash table. More...

void _mesa_DeleteHashTable (struct _mesa_HashTable *table)
 Delete a hash table. More...

void_mesa_HashLookup (const struct _mesa_HashTable *table, GLuint key)
 Lookup an entry in the hash table. More...

void _mesa_HashInsert (struct _mesa_HashTable *table, GLuint key, void *data)
 Insert into the hash table. More...

void _mesa_HashRemove (struct _mesa_HashTable *table, GLuint key)
 Remove an entry from the hash table. More...

GLuint _mesa_HashFirstEntry (struct _mesa_HashTable *table)
 Get the key of the "first" entry in the hash table. More...

void _mesa_HashPrint (const struct _mesa_HashTable *table)
 Dump contents of hash table for debugging. More...

GLuint _mesa_HashFindFreeKeyBlock (struct _mesa_HashTable *table, GLuint numKeys)
 Find a block of adjacent unused hash keys. More...


Detailed Description

Generic hash table.


Function Documentation

void _mesa_DeleteHashTable struct _mesa_HashTable   table
 

Delete a hash table.

Parameters:
table  the hash table to delete.
Frees each entry on the hash table and then the hash table structure itself.

GLuint _mesa_HashFindFreeKeyBlock struct _mesa_HashTable   table,
GLuint    numKeys
 

Find a block of adjacent unused hash keys.

Parameters:
table  the hash table.
numKeys  number of keys needed.
Returns:
Starting key of free block or 0 if failure.
If there are enough free keys between the maximum key existing in the table (_mesa_HashTable::MaxKey) and the maximum key possible, then simply return the adjacent key. Otherwise do a full search for a free key block in the allowable key range.

GLuint _mesa_HashFirstEntry struct _mesa_HashTable   table
 

Get the key of the "first" entry in the hash table.

This is used in the course of deleting all display lists when a context is destroyed.

Parameters:
table  the hash table
Returns:
key for the "first" entry in the hash table.
While holding the lock, walks through all table positions until finding the first entry of the first non-empty one.

void _mesa_HashInsert struct _mesa_HashTable   table,
GLuint    key,
void   data
 

Insert into the hash table.

If an entry with this key already exists we'll replace the existing entry.

Parameters:
table  the hash table.
key  the key (not zero).
data  pointer to user data.
While holding the hash table's lock, walk through the hash entry list replacing the data if a matching key is found, or inserts a new table entry otherwise.

void* _mesa_HashLookup const struct _mesa_HashTable   table,
GLuint    key
 

Lookup an entry in the hash table.

Parameters:
table  the hash table.
key  the key.
Returns:
pointer to user's data or NULL if key not in table
Walks through the hash entry until finding the matching key.

void _mesa_HashPrint const struct _mesa_HashTable   table
 

Dump contents of hash table for debugging.

Parameters:
table  the hash table.

void _mesa_HashRemove struct _mesa_HashTable   table,
GLuint    key
 

Remove an entry from the hash table.

Parameters:
table  the hash table.
key  key of entry to remove.
While holding the hash table's lock, searches the entry with the matching key and unlinks it.

struct _mesa_HashTable* _mesa_NewHashTable void   
 

Create a new hash table.

Returns:
pointer to a new, empty hash table.


Generated on Sun May 16 15:55:11 2004 for Mesa Core by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001