123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*********************************************************************
- * Copyright 1993, UCAR/Unidata
- * See netcdf/COPYRIGHT file for copying and redistribution conditions.
- * $Header: /upc/share/CVS/netcdf-3/libncdap3/nchashmap.h,v 1.4 2009/09/23 22:26:08 dmh Exp $
- *********************************************************************/
- #ifndef NCHASHMAP_H
- #define NCHASHMAP_H 1
- #include "nclist.h"
- /* Define the type of the elements in the hashmap*/
- #if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__)
- #define EXTERNC extern "C"
- #else
- #define EXTERNC extern
- #endif
- typedef unsigned long nchashid;
- EXTERNC int nchashnull(ncelem);
- typedef struct NChashmap {
- int alloc;
- int size; /* # of pairs still in table*/
- NClist** table;
- } NChashmap;
- EXTERNC NChashmap* nchashnew(void);
- EXTERNC NChashmap* nchashnew0(int);
- EXTERNC int nchashfree(NChashmap*);
- /* Insert a (ncnchashid,ncelem) pair into the table*/
- /* Fail if already there*/
- EXTERNC int nchashinsert(NChashmap*, nchashid nchash, ncelem value);
- /* Insert a (nchashid,ncelem) pair into the table*/
- /* Overwrite if already there*/
- EXTERNC int nchashreplace(NChashmap*, nchashid nchash, ncelem value);
- /* lookup a nchashid and return found/notfound*/
- EXTERNC int nchashlookup(NChashmap*, nchashid nchash, ncelem* valuep);
- /* lookup a nchashid and return 0 or the value*/
- EXTERNC ncelem nchashget(NChashmap*, nchashid nchash);
- /* remove a nchashid*/
- EXTERNC int nchashremove(NChashmap*, nchashid nchash);
- /* Return the ith pair; order is completely arbitrary*/
- /* Can be expensive*/
- EXTERNC int nchashith(NChashmap*, int i, nchashid*, ncelem*);
- EXTERNC int nchashkeys(NChashmap* hm, nchashid** keylist);
- /* return the # of pairs in table*/
- #define nchashsize(hm) ((hm)?(hm)->size:0)
- #endif /*NCHASHMAP_H*/
|