]> andersk Git - splint.git/blame - src/Headers/rangeTable.h
Renamed truenull nullwhentrue and falsenull falsewhennull
[splint.git] / src / Headers / rangeTable.h
CommitLineData
d0e5b01f 1/*
2** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2000.
3** See ../LICENSE for license information.
4**
5*/
6/*
7** rangeTable.h
8*/
9
10# ifndef rangeTable_H
11# define rangeTable_H
12
13typedef /*@only@*/ sRefSet o_sRefSet;
14typedef /*@exposed@*/ sRef e_sRef;
15typedef struct rangeAt_ {
16 int max;
17 int min;
18} * rangeAt;
19
20struct _environmentTable
21{
22 int nelements
23 int nspace;
24 /*@reldef@*/ /*@only@*/ e_sRef * keys;
25 /*@reldef@*/ /*@only@*/ o_sRefSet * values;
26 /*@reldef@*/ /*@only@*/ rangeAt * rangeValues;
27
28}
29
30extern rangeAt_ getRange (key);
31extern boolean inRange (int, range);
32
33extern void setMinium (key, min);
34extern void setMaximum (key, min);
35
36struct _rangeTable
37{
38 int nelements;
39 int nspace;
40 /*@reldef@*/ /*@only@*/ e_sRef *keys;
41 /*@reldef@*/ /*@only@*/ o_sRefSet *values;
42/*@reldef@*/ /*@only@*/ rangeAt *ranges;
43
44} ;
45
0e41eb0e 46extern /*@unused@*/ /*@nullwhentrue@*/ bool rangeTable_isUndefined (rangeTable p_s);
47extern /*@unused@*/ /*@nullwhentrue@*/ bool
d0e5b01f 48 rangeTable_isEmpty (/*@sef@*/ rangeTable p_s);
0e41eb0e 49extern /*@falsewhennull@*/ bool rangeTable_isDefined (rangeTable p_s);
d0e5b01f 50
51/*@constant null rangeTable rangeTable_undefined; @*/
52# define rangeTable_undefined ((rangeTable) NULL)
53# define rangeTable_isDefined(s) ((s) != rangeTable_undefined)
54# define rangeTable_isUndefined(s) ((s) == rangeTable_undefined)
55# define rangeTable_isEmpty(s) (rangeTable_size(s) == 0)
56
57extern int rangeTable_size (/*@sef@*/ rangeTable p_s);
58# define rangeTable_size(s) (rangeTable_isDefined (s) ? (s)->nelements : 0)
59
60/*@iter rangeTable_elements (sef rangeTable t, yield exposed sRef key, yield exposed sRefSet values); @*/
61# define rangeTable_elements(t, m_key, m_value) \
62 { if (rangeTable_isDefined (t)) \
63 { int m_ind; sRef *m_keys = &((t)->keys[0]); \
64 sRefSet *m_values = &((t)->values[0]); \
65 for (m_ind = 0 ; m_ind < (t)->nelements; m_ind++) \
66 { sRef m_key = *(m_keys++); sRefSet m_value = *(m_values++);
67
68# define end_rangeTable_elements }}}
69
70extern rangeTable rangeTable_new (void) /*@*/ ;
71
72extern void rangeTable_clearRangees (rangeTable p_s, sRef p_sr)
73 /*@modifies p_s, p_sr@*/ ;
74
75extern /*@only@*/ sRefSet rangeTable_canRange (rangeTable p_s, sRef p_sr) /*@*/ ;
76extern rangeTable rangeTable_copy (rangeTable p_s) /*@*/ ;
77
78extern /*@only@*/ cstring rangeTable_unparse (rangeTable p_s) /*@*/ ;
79extern void rangeTable_free (/*@only@*/ rangeTable p_s) ;
80
81extern rangeTable
82 rangeTable_addMustRange (/*@returned@*/ rangeTable p_s, /*@exposed@*/ sRef p_sr, sRef p_al)
83 /*@modifies p_s@*/ ;
84
85extern rangeTable
86 rangeTable_levelUnion (/*@returned@*/ rangeTable p_t1, rangeTable p_t2, int p_level)
87 /*@modifies p_t1@*/ ;
88
89extern rangeTable
90 rangeTable_levelUnionNew (rangeTable p_t1, rangeTable p_t2, int p_level)
91 /*@modifies nothing*/ ;
92
93extern void rangeTable_checkGlobs (rangeTable p_t) /*@modifies g_msgstream@*/ ;
94extern /*@only@*/ sRefSet rangeTable_rangeedBy (rangeTable p_s, sRef p_sr) /*@*/ ;
95extern void rangeTable_fixSrefs (rangeTable p_s);
96extern rangeTable rangeTable_levelUnionSeq (/*@returned@*/ rangeTable p_t1,
97 /*@only@*/ rangeTable p_t2, int p_level);
98
99/*@constant int rangeTableBASESIZE; @*/
100# define rangeTableBASESIZE MIDBASESIZE
101
102# else
103# error "Multiple include"
104# endif
105
106
107
108
This page took 0.066773 seconds and 5 git commands to generate.