mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
Postgres95 1.01 Distribution - Virgin Sources
This commit is contained in:
47
src/backend/lib/hasht.c
Normal file
47
src/backend/lib/hasht.c
Normal file
@@ -0,0 +1,47 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* hasht.c--
|
||||
* hash table related functions that are not directly supported
|
||||
* by the hashing packages under utils/hash.
|
||||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/lib/Attic/hasht.c,v 1.1.1.1 1996/07/09 06:21:29 scrappy Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#include "c.h"
|
||||
#include "utils/memutils.h"
|
||||
#include "utils/elog.h"
|
||||
#include "utils/hsearch.h"
|
||||
#include "lib/hasht.h"
|
||||
|
||||
/* -----------------------------------
|
||||
* HashTableWalk
|
||||
*
|
||||
* call function on every element in hashtable
|
||||
* one extra argument, arg may be supplied
|
||||
* -----------------------------------
|
||||
*/
|
||||
void
|
||||
HashTableWalk(HTAB *hashtable, HashtFunc function, int arg)
|
||||
{
|
||||
long *hashent;
|
||||
long *data;
|
||||
int keysize;
|
||||
|
||||
keysize = hashtable->hctl->keysize;
|
||||
(void)hash_seq((HTAB *)NULL);
|
||||
while ((hashent = hash_seq(hashtable)) != (long *) TRUE) {
|
||||
if (hashent == NULL)
|
||||
elog(FATAL, "error in HashTableWalk.");
|
||||
/*
|
||||
* XXX the corresponding hash table insertion does NOT
|
||||
* LONGALIGN -- make sure the keysize is ok
|
||||
*/
|
||||
data = (long *) LONGALIGN((char*) hashent + keysize);
|
||||
(*function)(data, arg);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user