mirror of
https://github.com/RTimothyEdwards/netgen.git
synced 2026-08-28 17:05:45 +02:00
time warnings and errors. Removed the "-lazy" option from the Tcl load command, which is not needed when the stubs libraries are compiled in correctly, and which causes issues on some systems (e.g., Mac OS). Thanks to Matt Guthaus for the patch.
60 lines
2.0 KiB
C
60 lines
2.0 KiB
C
#ifndef _HASH_H
|
|
#define _HASH_H
|
|
|
|
struct hashlist {
|
|
char *name;
|
|
void *ptr;
|
|
struct hashlist *next;
|
|
};
|
|
|
|
struct hashdict {
|
|
int hashsize;
|
|
int hashfirstindex;
|
|
struct hashlist *hashfirstptr;
|
|
struct hashlist **hashtab;
|
|
};
|
|
|
|
|
|
extern void InitializeHashTable(struct hashdict *dict, int size);
|
|
extern int RecurseHashTable(struct hashdict *dict,
|
|
int (*func)(struct hashlist *elem));
|
|
extern int RecurseHashTableValue(struct hashdict *dict,
|
|
int (*func)(struct hashlist *elem, int), int);
|
|
extern struct nlist *RecurseHashTablePointer(struct hashdict *dict,
|
|
struct nlist *(*func)(struct hashlist *elem, void *),
|
|
void *pointer);
|
|
extern void HashDelete(char *name, struct hashdict *dict);
|
|
extern void HashIntDelete(char *name, int value, struct hashdict *dict);
|
|
extern void HashKill(struct hashdict *dict);
|
|
|
|
|
|
extern int CountHashTableEntries(struct hashlist *p);
|
|
extern int CountHashTableBinsUsed(struct hashlist *p);
|
|
|
|
/* these functions return a pointer to a hash list element */
|
|
extern struct hashlist *HashInstall(char *name, struct hashdict *dict);
|
|
extern struct hashlist *HashPtrInstall(char *name, void *ptr,
|
|
struct hashdict *dict);
|
|
extern struct hashlist *HashIntPtrInstall(char *name, int value, void *ptr,
|
|
struct hashdict *dict);
|
|
extern struct hashlist *HashInt2PtrInstall(char *name, int c, void *ptr,
|
|
struct hashdict *dict);
|
|
|
|
/* these functions return the ->ptr field of a struct hashlist */
|
|
extern void *HashLookup(char *s, struct hashdict *dict);
|
|
extern void *HashIntLookup(char *s, int i, struct hashdict *dict);
|
|
extern void *HashInt2Lookup(char *s, int c, struct hashdict *dict);
|
|
extern void *HashFirst(struct hashdict *dict);
|
|
extern void *HashNext(struct hashdict *dict);
|
|
|
|
extern unsigned long hashnocase(char *s, int hashsize);
|
|
extern unsigned long hash(char *s, int hashsize);
|
|
|
|
extern int (*matchfunc)(char *, char *);
|
|
/* matchintfunc() compares based on the name and the first */
|
|
/* entry of the pointer value, which is cast as an integer */
|
|
extern int (*matchintfunc)(char *, char *, int, int);
|
|
extern unsigned long (*hashfunc)(char *, int);
|
|
|
|
#endif /* _HASH_H */
|