1/*********************************************************************
2 *   Copyright 1993, UCAR/Unidata
3 *   See netcdf/COPYRIGHT file for copying and redistribution conditions.
4 *   $Header$
5 *********************************************************************/
6#ifndef NCHASHMAP_H
7#define NCHASHMAP_H 1
8
9#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__)
10#define externC extern "C"
11#else
12#define externC extern
13#endif
14
15#include "nclist.h"
16
17/* Define the type of the elements in the hashmap*/
18typedef unsigned long nchashid;
19
20externC int nchashnull(void*);
21
22typedef struct NChashmap {
23  size_t alloc;
24  size_t size; /* # of pairs still in table*/
25  NClist** table;
26NChashmap;
27
28externC NChashmapnchashnew(void);
29externC NChashmapnchashnew0(size_t);
30externC int nchashfree(NChashmap*);
31
32/* Insert a (ncnchashid,void*) pair into the table*/
33/* Fail if already there*/
34externC int nchashinsert(NChashmap*, nchashid nchash, void* value);
35
36/* Insert a (nchashid,void*) pair into the table*/
37/* Overwrite if already there*/
38externC int nchashreplace(NChashmap*, nchashid nchash, void* value);
39
40/* lookup a nchashid and return found/notfound*/
41externC int nchashlookup(NChashmap*, nchashid nchash, void** valuep);
42
43/* lookup a nchashid and return 0 or the value*/
44externC void* nchashget(NChashmap*, nchashid nchash);
45
46/* remove a nchashid*/
47externC int nchashremove(NChashmap*, nchashid nchash);
48
49/* Return the ith pair; order is completely arbitrary*/
50/* Can be expensive*/
51externC int nchashith(NChashmap*, int inchashid*, void**);
52
53externC int nchashkeys(NChashmaphmnchashid** keylist);
54
55/* return the # of pairs in table*/
56#define nchashsize(hm) ((hm)?(hm)->size:0)
57
58#endif /*NCHASHMAP_H*/
59


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed