]>
Commit | Line | Data |
---|---|---|
885824d3 | 1 | /* |
28bf4b0b | 2 | ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001. |
885824d3 | 3 | ** See ../LICENSE for license information. |
4 | ** | |
5 | */ | |
6 | /* | |
7 | ** qual.h | |
8 | ** | |
9 | ** representation of type qualifiers | |
10 | */ | |
11 | ||
12 | # ifndef QUALH | |
13 | # define QUALH | |
14 | ||
15 | /* | |
16 | ** just use tokens to represent type qualifiers | |
17 | ** (tokens are defined in cgrammar.y) | |
18 | */ | |
19 | ||
28bf4b0b | 20 | typedef enum { |
21 | QU_UNKNOWN = 0, | |
885824d3 | 22 | QU_CONST, QU_VOLATILE, QU_INLINE, |
23 | QU_EXTERN, QU_STATIC, QU_AUTO, QU_REGISTER, | |
24 | QU_SHORT, QU_LONG, QU_SIGNED, QU_UNSIGNED, | |
25 | QU_OUT, QU_IN, | |
26 | QU_ONLY, QU_IMPONLY, | |
27 | QU_TEMP, QU_SHARED, QU_KEEP, QU_KEPT, QU_PARTIAL, QU_SPECIAL, | |
28bf4b0b | 28 | QU_NULL, QU_RELNULL, QU_ISNULL, |
29 | QU_NULLTERMINATED, | |
11ed4f45 | 30 | QU_SETBUFFERSIZE, |
885824d3 | 31 | QU_EXPOSED, QU_RETURNED, QU_OBSERVER, QU_UNIQUE, |
32 | QU_OWNED, QU_DEPENDENT, QU_RELDEF, | |
33 | QU_YIELD, | |
34 | QU_NEVEREXIT, QU_EXITS, QU_MAYEXIT, QU_TRUEEXIT, QU_FALSEEXIT, | |
35 | QU_UNUSED, QU_EXTERNAL, QU_SEF, | |
36 | QU_NOTNULL, | |
37 | QU_ABSTRACT, QU_CONCRETE, | |
38 | QU_MUTABLE, QU_IMMUTABLE, | |
39 | QU_REFCOUNTED, QU_REFS, QU_NEWREF, QU_KILLREF, QU_TEMPREF, | |
40 | QU_TRUENULL, QU_FALSENULL, | |
41 | QU_CHECKED, QU_UNCHECKED, QU_CHECKEDSTRICT, QU_CHECKMOD, | |
42 | QU_UNDEF, QU_KILLED, | |
43 | QU_PRINTFLIKE, QU_SCANFLIKE, QU_MESSAGELIKE, | |
28bf4b0b | 44 | QU_USERANNOT, |
885824d3 | 45 | QU_LAST |
28bf4b0b | 46 | } quenum; |
47 | ||
48 | immut_typedef struct { | |
49 | quenum kind; | |
50 | /*@observer@*/ /*@null@*/ annotationInfo info; /* for QU_USERANNOT only */ | |
51 | } *qual; | |
52 | ||
53 | extern /*@only@*/ cstring qual_dump (qual) ; | |
54 | extern qual qual_undump (char **p_s) /*@modifies *p_s@*/ ; | |
55 | ||
885824d3 | 56 | |
57 | /* | |
58 | ** qualifiers correspond to tokens in the grammar: | |
59 | ** | |
60 | ** standard C qualifiers: | |
61 | ** QCONST QVOLATILE QINLINE QEXTERN QSTATIC QAUTO QREGISTER | |
62 | ** QSHORT QLONG QSIGNED QUNSIGNED | |
63 | ** augmented LCL qualifiers: | |
64 | ** QOUT QONLY QTEMP QSHARED QUNIQUE QYIELD | |
1ac6313d | 65 | ** QEXITS QMAYEXIT QNULLTERMINATED |
885824d3 | 66 | */ |
67 | ||
68 | extern qual qual_fromInt (int p_q) /*@*/ ; | |
69 | extern /*@observer@*/ cstring qual_unparse (qual p_q) /*@*/ ; | |
70 | ||
28bf4b0b | 71 | extern bool qual_match (qual p_q1, qual p_q2) /*@*/ ; |
885824d3 | 72 | |
73 | extern bool qual_isUnknown (qual) /*@*/ ; | |
74 | extern bool qual_isTrueNull (qual) /*@*/ ; | |
75 | extern bool qual_isFalseNull (qual) /*@*/ ; | |
76 | extern bool qual_isOwned (qual) /*@*/ ; | |
77 | extern bool qual_isDependent (qual) /*@*/ ; | |
78 | extern bool qual_isRefCounted (qual) /*@*/ ; | |
79 | extern bool qual_isRefs (qual) /*@*/ ; | |
80 | extern bool qual_isNewRef (qual) /*@*/ ; | |
81 | extern bool qual_isKillRef (qual) /*@*/ ; | |
82 | extern bool qual_isTempRef (qual) /*@*/ ; | |
83 | extern bool qual_isLong (qual) /*@*/ ; | |
84 | extern bool qual_isShort (qual) /*@*/ ; | |
85 | extern bool qual_isSigned (qual) /*@*/ ; | |
86 | extern bool qual_isUnsigned (qual) /*@*/ ; | |
87 | extern bool qual_isUnique (qual) /*@*/ ; | |
88 | extern bool qual_isExits (qual) /*@*/ ; | |
89 | extern bool qual_isMayExit (qual) /*@*/ ; | |
90 | extern bool qual_isNeverExit (qual) /*@*/ ; | |
91 | extern bool qual_isTrueExit (qual) /*@*/ ; | |
92 | extern bool qual_isFalseExit (qual) /*@*/ ; | |
93 | extern bool qual_isConst (qual) /*@*/ ; | |
94 | extern bool qual_isVolatile (qual) /*@*/ ; | |
95 | extern bool qual_isInline (qual) /*@*/ ; | |
96 | extern bool qual_isExtern (qual) /*@*/ ; | |
97 | extern bool qual_isStatic (qual) /*@*/ ; | |
98 | extern bool qual_isAuto (qual) /*@*/ ; | |
99 | extern bool qual_isRegister (qual) /*@*/ ; | |
100 | extern bool qual_isOut (qual) /*@*/ ; | |
101 | extern bool qual_isIn (qual) /*@*/ ; | |
102 | extern bool qual_isYield (qual) /*@*/ ; | |
103 | extern bool qual_isOnly (qual) /*@*/ ; | |
104 | extern bool qual_isImpOnly (qual) /*@*/ ; | |
105 | extern bool qual_isPartial (qual) /*@*/ ; | |
106 | extern bool qual_isSpecial (qual) /*@*/ ; | |
107 | extern bool qual_isKeep (qual) /*@*/ ; | |
108 | extern bool qual_isKept (qual) /*@*/ ; | |
109 | extern bool qual_isTemp (qual) /*@*/ ; | |
110 | extern bool qual_isShared (qual) /*@*/ ; | |
111 | extern bool qual_isRelDef (qual) /*@*/ ; | |
112 | extern bool qual_isChecked (qual) /*@*/ ; | |
113 | extern bool qual_isCheckMod (qual) /*@*/ ; | |
114 | extern bool qual_isCheckedStrict (qual) /*@*/ ; | |
115 | extern bool qual_isUnchecked (qual) /*@*/ ; | |
116 | extern bool qual_isNull (qual) /*@*/ ; | |
28bf4b0b | 117 | extern bool qual_isIsNull (qual) /*@*/ ; |
885824d3 | 118 | extern bool qual_isRelNull (qual) /*@*/ ; |
119 | extern bool qual_isNotNull (qual) /*@*/ ; | |
120 | extern bool qual_isReturned (qual) /*@*/ ; | |
121 | extern bool qual_isExposed (qual) /*@*/ ; | |
122 | extern bool qual_isObserver (qual) /*@*/ ; | |
123 | extern bool qual_isUnused (qual) /*@*/ ; | |
124 | extern bool qual_isExternal (qual) /*@*/ ; | |
125 | extern bool qual_isSef (qual) /*@*/ ; | |
126 | extern bool qual_isAbstract (qual) /*@*/ ; | |
127 | extern bool qual_isConcrete (qual) /*@*/ ; | |
128 | extern bool qual_isMutable (qual) /*@*/ ; | |
129 | extern bool qual_isImmutable (qual) /*@*/ ; | |
130 | extern bool qual_isNullPred (/*@sef@*/ qual) /*@*/ ; | |
131 | extern bool qual_isRefQual (/*@sef@*/ qual) /*@*/ ; | |
132 | extern bool qual_isUndef (/*@sef@*/ qual) /*@*/ ; | |
133 | extern bool qual_isKilled (/*@sef@*/ qual) /*@*/ ; | |
134 | extern /*@unused@*/ bool qual_isTypeQual (/*@sef@*/ qual) /*@*/ ; | |
135 | extern /*@unused@*/ bool qual_isControlQual (/*@sef@*/ qual) /*@*/ ; | |
136 | extern /*@unused@*/ bool qual_isStorageClass (/*@sef@*/ qual) /*@*/ ; | |
137 | extern bool qual_isCQual (/*@sef@*/ qual) /*@*/ ; | |
138 | extern bool qual_isAllocQual (/*@sef@*/ qual) /*@*/ ; | |
139 | extern bool qual_isGlobalQual (/*@sef@*/ qual) /*@*/ ; | |
140 | extern bool qual_isImplied (/*@sef@*/ qual) /*@*/ ; | |
141 | extern bool qual_isExQual (/*@sef@*/ qual) /*@*/ ; | |
142 | extern bool qual_isAliasQual (/*@sef@*/ qual) /*@*/ ; | |
28bf4b0b | 143 | extern bool qual_isPrintfLike (/*@sef@*/ qual) /*@*/ ; |
144 | extern bool qual_isScanfLike (/*@sef@*/ qual) /*@*/ ; | |
145 | extern bool qual_isMessageLike (/*@sef@*/ qual) /*@*/ ; | |
146 | extern bool qual_isMetaState (/*@sef@*/ qual) /*@*/ ; | |
147 | extern bool qual_isNullTerminated( /*@sef@*/ qual ) /*@*/ ; | |
148 | ||
149 | extern bool qual_isMemoryAllocation (/*@sef@*/ qual) /*@*/ ; | |
150 | # define qual_isMemoryAllocation(q) \ | |
151 | (qual_isOnly (q) || qual_isShared (q) || \ | |
152 | qual_isDependent (q) || qual_isOwned (q)) | |
885824d3 | 153 | |
28bf4b0b | 154 | extern bool qual_isSharing (/*@sef@*/ qual) /*@*/ ; |
155 | # define qual_isSharing(q) \ | |
156 | (qual_isObserver (q) || qual_isExposed (q)) | |
885824d3 | 157 | |
28bf4b0b | 158 | extern /*@observer@*/ annotationInfo qual_getAnnotationInfo (qual) /*@*/ ; |
159 | ||
160 | # define qual_isUnknown(q) ((q)->kind == QU_UNKNOWN) | |
161 | # define qual_isTrueNull(q) ((q)->kind == QU_TRUENULL) | |
162 | # define qual_isFalseNull(q) ((q)->kind == QU_FALSENULL) | |
163 | # define qual_isOwned(q) ((q)->kind == QU_OWNED) | |
164 | # define qual_isDependent(q) ((q)->kind == QU_DEPENDENT) | |
165 | # define qual_isRefCounted(q) ((q)->kind == QU_REFCOUNTED) | |
166 | # define qual_isRefs(q) ((q)->kind == QU_REFS) | |
167 | # define qual_isNewRef(q) ((q)->kind == QU_NEWREF) | |
168 | # define qual_isKillRef(q) ((q)->kind == QU_KILLREF) | |
169 | # define qual_isTempRef(q) ((q)->kind == QU_TEMPREF) | |
170 | # define qual_isLong(q) ((q)->kind == QU_LONG) | |
171 | # define qual_isShort(q) ((q)->kind == QU_SHORT) | |
172 | # define qual_isSigned(q) ((q)->kind == QU_SIGNED) | |
173 | # define qual_isUnsigned(q) ((q)->kind == QU_UNSIGNED) | |
174 | # define qual_isUnique(q) ((q)->kind == QU_UNIQUE) | |
175 | # define qual_isExits(q) ((q)->kind == QU_EXITS) | |
176 | # define qual_isMayExit(q) ((q)->kind == QU_MAYEXIT) | |
177 | # define qual_isNeverExit(q) ((q)->kind == QU_NEVEREXIT) | |
178 | # define qual_isTrueExit(q) ((q)->kind == QU_TRUEEXIT) | |
179 | # define qual_isFalseExit(q) ((q)->kind == QU_FALSEEXIT) | |
180 | # define qual_isConst(q) ((q)->kind == QU_CONST) | |
181 | # define qual_isVolatile(q) ((q)->kind == QU_VOLATILE) | |
182 | # define qual_isInline(q) ((q)->kind == QU_INLINE) | |
183 | # define qual_isExtern(q) ((q)->kind == QU_EXTERN) | |
184 | # define qual_isStatic(q) ((q)->kind == QU_STATIC) | |
185 | # define qual_isAuto(q) ((q)->kind == QU_AUTO) | |
186 | # define qual_isRegister(q) ((q)->kind == QU_REGISTER) | |
187 | # define qual_isOut(q) ((q)->kind == QU_OUT) | |
188 | # define qual_isIn(q) ((q)->kind == QU_IN) | |
189 | # define qual_isYield(q) ((q)->kind == QU_YIELD) | |
190 | # define qual_isOnly(q) ((q)->kind == QU_ONLY) | |
191 | # define qual_isImpOnly(q) ((q)->kind == QU_IMPONLY) | |
192 | # define qual_isPartial(q) ((q)->kind == QU_PARTIAL) | |
193 | # define qual_isSpecial(q) ((q)->kind == QU_SPECIAL) | |
194 | # define qual_isKeep(q) ((q)->kind == QU_KEEP) | |
195 | # define qual_isKept(q) ((q)->kind == QU_KEPT) | |
196 | # define qual_isTemp(q) ((q)->kind == QU_TEMP) | |
197 | # define qual_isShared(q) ((q)->kind == QU_SHARED) | |
198 | # define qual_isRelDef(q) ((q)->kind == QU_RELDEF) | |
199 | # define qual_isNull(q) ((q)->kind == QU_NULL) | |
200 | # define qual_isIsNull(q) ((q)->kind == QU_ISNULL) | |
201 | # define qual_isRelNull(q) ((q)->kind == QU_RELNULL) | |
202 | # define qual_isNotNull(q) ((q)->kind == QU_NOTNULL) | |
203 | # define qual_isReturned(q) ((q)->kind == QU_RETURNED) | |
204 | # define qual_isExposed(q) ((q)->kind == QU_EXPOSED) | |
205 | # define qual_isObserver(q) ((q)->kind == QU_OBSERVER) | |
206 | # define qual_isUnused(q) ((q)->kind == QU_UNUSED) | |
207 | # define qual_isExternal(q) ((q)->kind == QU_EXTERNAL) | |
208 | # define qual_isSef(q) ((q)->kind == QU_SEF) | |
209 | # define qual_isAbstract(q) ((q)->kind == QU_ABSTRACT) | |
210 | # define qual_isConcrete(q) ((q)->kind == QU_CONCRETE) | |
211 | # define qual_isMutable(q) ((q)->kind == QU_MUTABLE) | |
212 | # define qual_isImmutable(q) ((q)->kind == QU_IMMUTABLE) | |
213 | # define qual_isChecked(q) ((q)->kind == QU_CHECKED) | |
214 | # define qual_isCheckMod(q) ((q)->kind == QU_CHECKMOD) | |
215 | # define qual_isCheckedStrict(q) ((q)->kind == QU_CHECKEDSTRICT) | |
216 | # define qual_isUnchecked(q) ((q)->kind == QU_UNCHECKED) | |
217 | # define qual_isUndef(q) ((q)->kind == QU_UNDEF) | |
218 | # define qual_isKilled(q) ((q)->kind == QU_KILLED) | |
219 | # define qual_isPrintfLike(q) ((q)->kind == QU_PRINTFLIKE) | |
220 | # define qual_isScanfLike(q) ((q)->kind == QU_SCANFLIKE) | |
221 | # define qual_isMessageLike(q) ((q)->kind == QU_MESSAGELIKE) | |
222 | # define qual_isMetaState(q) ((q)->kind == QU_USERANNOT) | |
223 | ||
224 | # define qual_isNullTerminated(q) ((q)->kind == QU_NULLTERMINATED) | |
225 | ||
226 | extern qual qual_createPlain (quenum) /*@*/ ; | |
227 | extern qual qual_createMetaState (annotationInfo) /*@*/ ; | |
885824d3 | 228 | extern qual qual_createTrueNull (void) /*@*/ ; |
229 | extern qual qual_createFalseNull (void) /*@*/ ; | |
230 | extern qual qual_createRefCounted (void) /*@*/ ; | |
231 | extern qual qual_createRefs (void) /*@*/ ; | |
232 | extern qual qual_createNewRef (void) /*@*/ ; | |
233 | extern qual qual_createKillRef (void) /*@*/ ; | |
234 | extern qual qual_createTempRef (void) /*@*/ ; | |
235 | extern qual qual_createNotNull (void) /*@*/ ; | |
236 | extern qual qual_createAbstract (void) /*@*/ ; | |
237 | extern qual qual_createConcrete (void) /*@*/ ; | |
238 | extern qual qual_createMutable (void) /*@*/ ; | |
239 | extern qual qual_createImmutable (void) /*@*/ ; | |
240 | extern qual qual_createShort (void) /*@*/ ; | |
241 | extern qual qual_createLong (void) /*@*/ ; | |
242 | extern qual qual_createSigned (void) /*@*/ ; | |
243 | extern qual qual_createUnsigned (void) /*@*/ ; | |
244 | extern qual qual_createUnique (void) /*@*/ ; | |
245 | extern qual qual_createMayExit (void) /*@*/ ; | |
246 | extern qual qual_createExits (void) /*@*/ ; | |
247 | extern qual qual_createNeverExit (void) /*@*/ ; | |
248 | extern qual qual_createFalseExit (void) /*@*/ ; | |
249 | extern qual qual_createTrueExit (void) /*@*/ ; | |
250 | extern qual qual_createConst (void) /*@*/ ; | |
251 | extern qual qual_createVolatile (void) /*@*/ ; | |
252 | extern qual qual_createInline (void) /*@*/ ; | |
253 | extern qual qual_createExtern (void) /*@*/ ; | |
254 | extern qual qual_createStatic (void) /*@*/ ; | |
255 | extern qual qual_createAuto (void) /*@*/ ; | |
256 | extern qual qual_createRegister (void) /*@*/ ; | |
257 | extern qual qual_createOut (void) /*@*/ ; | |
258 | extern qual qual_createIn (void) /*@*/ ; | |
259 | extern qual qual_createYield (void) /*@*/ ; | |
260 | extern qual qual_createOnly (void) /*@*/ ; | |
261 | extern qual qual_createOwned (void) /*@*/ ; | |
262 | extern qual qual_createDependent (void) /*@*/ ; | |
263 | extern qual qual_createRelDef (void) /*@*/ ; | |
264 | extern qual qual_createImpOnly (void) /*@*/ ; | |
265 | extern qual qual_createPartial (void) /*@*/ ; | |
266 | extern qual qual_createSpecial (void) /*@*/ ; | |
267 | extern qual qual_createKeep (void) /*@*/ ; | |
268 | extern qual qual_createKept (void) /*@*/ ; | |
269 | extern qual qual_createTemp (void) /*@*/ ; | |
270 | extern qual qual_createShared (void) /*@*/ ; | |
28bf4b0b | 271 | extern qual qual_createNull (void) /*@*/ ; |
272 | extern qual qual_createIsNull (void) /*@*/ ; | |
885824d3 | 273 | extern qual qual_createRelNull (void) /*@*/ ; |
274 | extern qual qual_createReturned (void) /*@*/ ; | |
275 | extern qual qual_createExposed (void) /*@*/ ; | |
276 | extern qual qual_createObserver (void) /*@*/ ; | |
277 | extern qual qual_createUnused (void) /*@*/ ; | |
278 | extern qual qual_createExternal (void) /*@*/ ; | |
279 | extern qual qual_createSef (void) /*@*/ ; | |
280 | extern qual qual_createChecked (void) /*@*/ ; | |
281 | extern qual qual_createCheckMod (void) /*@*/ ; | |
282 | extern qual qual_createUnchecked (void) /*@*/ ; | |
283 | extern qual qual_createCheckedStrict (void) /*@*/ ; | |
284 | extern qual qual_createUndef (void) /*@*/ ; | |
285 | extern qual qual_createKilled (void) /*@*/ ; | |
1ac6313d | 286 | extern qual qual_createNullTerminated (void) /*@*/ ; |
885824d3 | 287 | |
885824d3 | 288 | extern qual qual_createUnknown (void) /*@*/ ; |
28bf4b0b | 289 | # define qual_createUnknown() (qual_createPlain (QU_UNKNOWN)) |
885824d3 | 290 | |
291 | extern qual qual_createPrintfLike (void) /*@*/ ; | |
292 | extern qual qual_createScanfLike (void) /*@*/ ; | |
293 | extern qual qual_createMessageLike (void) /*@*/ ; | |
294 | ||
28bf4b0b | 295 | # define qual_createPrintfLike() (qual_createPlain (QU_PRINTFLIKE)) |
296 | # define qual_createScanfLike() (qual_createPlain (QU_SCANFLIKE)) | |
297 | # define qual_createMessageLike() (qual_createPlain (QU_MESSAGELIKE)) | |
298 | ||
299 | # define qual_createTrueNull() qual_createPlain (QU_TRUENULL) | |
300 | # define qual_createFalseNull() qual_createPlain (QU_FALSENULL) | |
301 | # define qual_createRefCounted() qual_createPlain (QU_REFCOUNTED) | |
302 | # define qual_createRefs() qual_createPlain (QU_REFS) | |
303 | # define qual_createNewRef() qual_createPlain (QU_NEWREF) | |
304 | # define qual_createKillRef() qual_createPlain (QU_KILLREF) | |
305 | # define qual_createTempRef() qual_createPlain (QU_TEMPREF) | |
306 | # define qual_createNotNull() qual_createPlain (QU_NOTNULL) | |
307 | # define qual_createAbstract() qual_createPlain (QU_ABSTRACT) | |
308 | # define qual_createConcrete() qual_createPlain (QU_CONCRETE) | |
309 | # define qual_createMutable() qual_createPlain (QU_MUTABLE) | |
310 | # define qual_createImmutable() qual_createPlain (QU_IMMUTABLE) | |
311 | # define qual_createShort() qual_createPlain (QU_SHORT) | |
312 | # define qual_createLong() qual_createPlain (QU_LONG) | |
313 | # define qual_createSigned() qual_createPlain (QU_SIGNED) | |
314 | # define qual_createUnsigned() qual_createPlain (QU_UNSIGNED) | |
315 | # define qual_createUnique() qual_createPlain (QU_UNIQUE) | |
316 | # define qual_createMayExit() qual_createPlain (QU_MAYEXIT) | |
317 | # define qual_createExits() qual_createPlain (QU_EXITS) | |
318 | # define qual_createNeverExit() qual_createPlain (QU_NEVEREXIT) | |
319 | # define qual_createTrueExit() qual_createPlain (QU_TRUEEXIT) | |
320 | # define qual_createFalseExit() qual_createPlain (QU_FALSEEXIT) | |
321 | # define qual_createConst() qual_createPlain (QU_CONST) | |
322 | # define qual_createVolatile() qual_createPlain (QU_VOLATILE) | |
323 | # define qual_createInline() qual_createPlain (QU_INLINE) | |
324 | # define qual_createExtern() qual_createPlain (QU_EXTERN) | |
325 | # define qual_createStatic() qual_createPlain (QU_STATIC) | |
326 | # define qual_createAuto() qual_createPlain (QU_AUTO) | |
327 | # define qual_createRegister() qual_createPlain (QU_REGISTER) | |
328 | # define qual_createOut() qual_createPlain (QU_OUT) | |
329 | # define qual_createIn() qual_createPlain (QU_IN) | |
330 | # define qual_createYield() qual_createPlain (QU_YIELD) | |
331 | # define qual_createOnly() qual_createPlain (QU_ONLY) | |
332 | # define qual_createOwned() qual_createPlain (QU_OWNED) | |
333 | # define qual_createDependent() qual_createPlain (QU_DEPENDENT) | |
334 | # define qual_createRelDef() qual_createPlain (QU_RELDEF) | |
335 | # define qual_createImpOnly() qual_createPlain (QU_IMPONLY) | |
336 | # define qual_createPartial() qual_createPlain (QU_PARTIAL) | |
337 | # define qual_createSpecial() qual_createPlain (QU_SPECIAL) | |
338 | # define qual_createKeep() qual_createPlain (QU_KEEP) | |
339 | # define qual_createKept() qual_createPlain (QU_KEPT) | |
340 | # define qual_createTemp() qual_createPlain (QU_TEMP) | |
341 | # define qual_createShared() qual_createPlain (QU_SHARED) | |
342 | # define qual_createNull() qual_createPlain (QU_NULL) | |
343 | # define qual_createIsNull() qual_createPlain (QU_ISNULL) | |
344 | # define qual_createRelNull() qual_createPlain (QU_RELNULL) | |
345 | # define qual_createReturned() qual_createPlain (QU_RETURNED) | |
346 | # define qual_createExposed() qual_createPlain (QU_EXPOSED) | |
347 | # define qual_createObserver() qual_createPlain (QU_OBSERVER) | |
348 | # define qual_createUnused() qual_createPlain (QU_UNUSED) | |
349 | # define qual_createExternal() qual_createPlain (QU_EXTERNAL) | |
350 | # define qual_createSef() qual_createPlain (QU_SEF) | |
351 | # define qual_createChecked() qual_createPlain (QU_CHECKED) | |
352 | # define qual_createCheckMod() qual_createPlain (QU_CHECKMOD) | |
353 | # define qual_createCheckedStrict() qual_createPlain (QU_CHECKEDSTRICT) | |
354 | # define qual_createUnchecked() qual_createPlain (QU_UNCHECKED) | |
355 | # define qual_createUndef() qual_createPlain (QU_UNDEF) | |
356 | # define qual_createKilled() qual_createPlain (QU_KILLED) | |
885824d3 | 357 | |
28bf4b0b | 358 | |
359 | # define qual_createNullTerminated() qual_createPlain (QU_NULLTERMINATED) | |
360 | //# define qual_createSetBufferSize() qual_createPlain (QU_SETBUFFERSIZE) | |
361 | ||
362 | ||
363 | ||
364 | /* start modifications */ | |
365 | //extern bool qual_isNullTerminated (qual p_q) ; | |
366 | //extern bool qual_isBufQualifier (qual p_q) ; | |
367 | /* end modifications */ | |
368 | ||
369 | /* start modifications */ | |
370 | /* This is used to check if we the qualifier matches any of the | |
371 | len/size/nullterminated types */ | |
372 | ||
373 | extern bool qual_isBufQualifier(/*@sef@*/ qual) /*@*/; | |
374 | ||
375 | # define qual_isBufQualifier(q) \ | |
376 | (qual_isNullTerminated(q)) | |
377 | ||
378 | /* end of modification/s */ | |
885824d3 | 379 | |
380 | extern bool qual_isGlobCheck (/*@sef@*/ qual p_q) /*@*/ ; | |
381 | # define qual_isGlobCheck(q) \ | |
382 | (qual_isChecked (q) || qual_isCheckMod (q) \ | |
383 | || qual_isUnchecked (q) || qual_isCheckedStrict (q)) | |
384 | ||
385 | # define qual_isNullPred(q) \ | |
386 | (qual_isTrueNull (q) || qual_isFalseNull (q)) | |
387 | ||
388 | # define qual_isRefQual(q) \ | |
389 | (qual_isRefCounted(q) || qual_isRefs(q) || qual_isNewRef (q) || \ | |
390 | qual_isKillRef (q) || qual_isTempRef (q)) | |
391 | ||
28bf4b0b | 392 | extern bool qual_isNullStateQual (/*@sef@*/ qual) /*@*/ ; |
393 | # define qual_isNullStateQual(q) \ | |
394 | (qual_isNull (q) || qual_isIsNull (q) || qual_isRelNull (q) \ | |
395 | || qual_isNotNull (q)) | |
396 | ||
885824d3 | 397 | # define qual_isTypeQual(q) \ |
398 | (qual_isAbstract(q) || qual_isMutable(q) || qual_isImmutable(q)) | |
399 | ||
400 | # define qual_isControlQual(q) (qual_isExits(q) || qual_isMayExit (q)) | |
401 | # define qual_isStorageClass(q) (qual_isExtern(q) || qual_isStatic(q)) | |
402 | # define qual_isCQual(q) \ | |
403 | (qual_isAuto(q) || qual_isRegister(q) || qual_isInline(q) \ | |
404 | || qual_isConst(q) || qual_isVolatile(q) || qual_isShort(q) \ | |
405 | || qual_isLong (q) || qual_isSigned (q) || qual_isUnsigned (q)) | |
406 | ||
407 | # define qual_isAllocQual(q) \ | |
408 | (qual_isOut (q) || qual_isIn (q) || qual_isSpecial (q) \ | |
409 | || qual_isPartial (q) || qual_isRelDef (q)) | |
410 | ||
411 | # define qual_isGlobalQual(q) \ | |
412 | (qual_isUndef(q) || qual_isKilled (q)) | |
413 | ||
414 | # define qual_isImplied(q) (qual_isImpOnly(q)) | |
885824d3 | 415 | # define qual_isExQual(q) (qual_isExposed (q) || qual_isObserver (q)) |
416 | ||
417 | # define qual_isAliasQual(q) \ | |
418 | (qual_isOnly(q) || qual_isImpOnly(q) || qual_isTemp(q) \ | |
419 | || qual_isOwned (q) || qual_isShared (q) || qual_isUnique (q) \ | |
420 | || qual_isDependent (q) || qual_isKeep (q) || qual_isKept (q)) | |
421 | ||
422 | extern bool qual_isExitQual (/*@sef@*/ qual p_q) /*@*/ ; | |
423 | # define qual_isExitQual(q) \ | |
424 | (qual_isExits (q) || qual_isNeverExit (q) || qual_isMayExit (q) \ | |
425 | || qual_isTrueExit (q) || qual_isFalseExit (q)) | |
426 | ||
427 | # else | |
428 | # error "Multiple include" | |
429 | # endif | |
430 | ||
431 | ||
28bf4b0b | 432 | |
433 | ||
434 |