2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
3 ** See ../LICENSE for license information.
14 ** These numbers are not enums, since we need to extend it with all other
15 ** types. They index entries in cttable.
18 immut_typedef int cprim;
20 /*@constant int CTX_UNKNOWN;@*/
21 # define CTX_UNKNOWN 0
23 /*@constant int CTX_VOID;@*/
26 /*@constant int CTX_BOOL;@*/
29 /*@constant int CTX_UCHAR;@*/
30 # define CTX_UCHAR 3 /* unsigned char */
32 /*@constant int CTX_CHAR;@*/
35 extern bool cprim_isUnsignedChar (/*@sef@*/ cprim p_c);
36 # define cprim_isUnsignedChar(c) ((c) == CTX_UCHAR)
38 extern bool cprim_isSignedChar (/*@sef@*/ cprim p_c);
39 # define cprim_isSignedChar(c) ((c) == CTX_CHAR)
41 extern bool cprim_isAnyChar (/*@sef@*/ cprim p_c);
42 # define cprim_isAnyChar(c) ((c) >= CTX_UCHAR && (c) <= CTX_CHAR)
45 ** only a few combiniations of type qualifiers and base types are
46 ** recognized in the ANSI standard. Splint treats these as distinct
50 /*@constant int CTX_INT;@*/
53 /*@constant int CTX_UINT;@*/ /* unsigned int */
57 /*@constant int CTX_SINT;@*/ /* short int */
60 /*@constant int CTX_USINT;@*/ /* unsigned short int */
63 /*@constant int CTX_LINT;@*/ /* long int */
66 /*@constant int CTX_ULINT;@*/ /* unsigned long int */
69 /*@constant int CTX_LLINT;@*/ /* long long int (WG14/N843) */
72 /*@constant int CTX_ULLINT;@*/ /* unsigned long long int (WG14/N843) */
73 # define CTX_ULLINT 12
75 /*@constant int CTX_ANYINTEGRAL;@*/
76 # define CTX_ANYINTEGRAL 13
78 /*@constant int CTX_UNSIGNEDINTEGRAL;@*/
79 # define CTX_UNSIGNEDINTEGRAL 14
81 /*@constant int CTX_SIGNEDINTEGRAL;@*/
82 # define CTX_SIGNEDINTEGRAL 15
84 /*@constant int CTX_FLOAT;@*/
87 /*@constant int CTX_DOUBLE;@*/
88 # define CTX_DOUBLE 17
90 /*@constant int CTX_LDOUBLE;@*/ /* long double */
91 # define CTX_LDOUBLE 18
93 extern bool cprim_isAnyInt (/*@sef@*/ cprim p_c);
94 extern bool cprim_isAnyReal (/*@sef@*/ cprim p_c);
96 # define cprim_isAnyInt(c) ((c) >= CTX_INT && (c) <= CTX_SIGNEDINTEGRAL)
98 extern bool cprim_isAnyUnsignedInt (/*@sef@*/ cprim p_c);
99 # define cprim_isAnyUnsignedInt(c) ((c) == CTX_UINT || (c) == CTX_USINT \
100 || (c) == CTX_ULINT || (c) == CTX_ULLINT \
101 || (c) == CTX_UNSIGNEDINTEGRAL)
102 # define cprim_isAnyReal(c) ((c) >= CTX_FLOAT && (c) <= CTX_LDOUBLE)
104 /*@constant int CTX_LAST;@*/
105 # define CTX_LAST CTX_LDOUBLE
107 /*@constant cprim cprim_int@*/
108 # define cprim_int CTX_INT
110 extern bool cprim_equal (cprim, cprim);
111 # define cprim_equal(p1,p2) ((p1) == (p2))
113 extern bool cprim_closeEnough (cprim, cprim) /*@*/ ;
114 extern bool cprim_closeEnoughDeep (cprim, cprim) /*@*/ ;
115 extern /*@only@*/ cstring cprim_unparse (cprim) /*@*/ ;
116 extern cprim cprim_fromInt (int p_i);
117 extern bool cprim_isInt(cprim p_c);
118 extern int cprim_getExpectedBits (cprim p_c) /*@*/ ;
121 # error "Multiple include"