]> andersk Git - splint.git/blame - src/Headers/genericTable.h
Fixes after removing -unrecogcomments flag for make splintme.
[splint.git] / src / Headers / genericTable.h
CommitLineData
28bf4b0b 1/*
c0de361f 2** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
28bf4b0b 3** See ../LICENSE for license information.
4**
5*/
6/*
7** genericTable.h
8*/
9
10# ifndef GHTABLE_H
11# define GHTABLE_H
12
13/*@constant int GHBUCKET_BASESIZE; @*/
14# define GHBUCKET_BASESIZE 2
15
16/* in forwardTypes:
17 abst_typedef null struct _genericTable *genericTable;
18*/
19
517a2db3 20/*:private:*/ typedef struct
28bf4b0b 21{
22 /*@only@*/ cstring key;
23 /*@only@*/ void *val;
24} *ghentry;
25
26typedef /*@only@*/ ghentry o_ghentry;
27
28typedef /*@null@*/ struct
29{
30 int size;
31 int nspace;
32 /*@only@*/ o_ghentry *entries;
33} *ghbucket;
34
35typedef /*@only@*/ ghbucket o_ghbucket;
36
37struct s_genericTable
38{
39 int size;
40 int nentries;
41 /*@only@*/ o_ghbucket *buckets;
42} ;
43
44/*@constant null genericTable genericTable_undefined; @*/
45# define genericTable_undefined ((genericTable) NULL)
46
0e41eb0e 47extern /*@falsewhennull@*/ bool genericTable_isDefined(genericTable) /*@*/ ;
28bf4b0b 48# define genericTable_isDefined(p_h) ((p_h) != genericTable_undefined)
49
0e41eb0e 50extern /*@nullwhentrue@*/ /*@unused@*/ bool genericTable_isUndefined(genericTable) /*@*/ ;
28bf4b0b 51# define genericTable_isUndefined(p_h) ((p_h) == genericTable_undefined)
52
53extern /*@only@*/ genericTable genericTable_create (int p_size);
54
55extern int genericTable_size (genericTable p_h);
56
57extern void genericTable_insert (genericTable p_h, /*@only@*/ cstring p_key,
58 /*@only@*/ void *p_value);
59extern /*@null@*/ /*@exposed@*/ void *genericTable_lookup (genericTable p_h, cstring p_key);
60
61extern bool genericTable_contains (genericTable p_h, cstring p_key) /*@*/ ;
62
63extern /*@unused@*/ /*@only@*/ cstring genericTable_stats (genericTable p_h);
64extern void genericTable_free (/*@only@*/ genericTable p_h);
65extern void genericTable_remove (genericTable p_h, cstring p_key) /*@modifies p_h@*/ ;
66
67extern /*@unused@*/ void genericTable_update (genericTable p_h, cstring p_key,
68 /*@only@*/ void *p_newval) /*@modifies p_h@*/ ;
69
70/*@iter genericTable_elements (sef genericTable p_g, yield exposed cstring m_key, yield exposed void *m_el)@*/
71
72# define genericTable_elements(p_g, m_key, m_el) \
73 { int m_ind; if (genericTable_isDefined (p_g)) \
74 { for (m_ind = 0 ; m_ind < (p_g)->size; m_ind++) \
75 { ghbucket m_hb; m_hb = (p_g)->buckets[m_ind]; \
76 if (m_hb != NULL) { \
77 int m_j; \
78 for (m_j = 0; m_j < (m_hb)->size; m_j++) { \
79 cstring m_key; void *m_el; m_key = (m_hb)->entries[m_j]->key; \
80 m_el = (m_hb)->entries[m_j]->val;
81# define end_genericTable_elements }}}}}
82
83
84# else
85# error "Multiple include"
86# endif
87
88
89
90
91
92
93
94
95
96
97
98
99
This page took 0.080096 seconds and 5 git commands to generate.