]> andersk Git - splint.git/blob - src/Headers/cprim.h
a0eb0d82a8bca53520477536e2760a19852de0fa
[splint.git] / src / Headers / cprim.h
1 /*
2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
3 ** See ../LICENSE for license information.
4 **
5 */
6 /*
7 ** cprim.h
8 */
9
10 # ifndef CPRIM_H
11 # define CPRIM_H
12
13 /*
14 ** These numbers are not enums, since we need to extend it with all other 
15 ** types.  They index entries in cttable.
16 */
17
18 immut_typedef int cprim;
19
20 /*@constant int CTX_UNKNOWN;@*/
21 # define CTX_UNKNOWN 0
22
23 /*@constant int CTX_VOID;@*/
24 # define CTX_VOID    1
25
26 /*@constant int CTX_BOOL;@*/
27 # define CTX_BOOL    2
28
29 /*@constant int CTX_UCHAR;@*/
30 # define CTX_UCHAR   3 /* unsigned char */
31
32 /*@constant int CTX_CHAR;@*/
33 # define CTX_CHAR    4
34
35 extern bool cprim_isUnsignedChar (/*@sef@*/ cprim p_c);
36 # define cprim_isUnsignedChar(c) ((c) == CTX_UCHAR)
37
38 extern bool cprim_isSignedChar (/*@sef@*/ cprim p_c);
39 # define cprim_isSignedChar(c) ((c) == CTX_CHAR)
40
41 extern bool cprim_isAnyChar (/*@sef@*/ cprim p_c);
42 # define cprim_isAnyChar(c) ((c) >= CTX_UCHAR && (c) <= CTX_CHAR)
43
44 /*
45 ** only a few combiniations of type qualifiers and base types are
46 ** recognized in the ANSI standard.  Splint treats these as distinct
47 ** types.
48 */
49
50 /*@constant int CTX_INT;@*/
51 # define CTX_INT      5
52
53 /*@constant int CTX_UINT;@*/ /* unsigned int */
54 # define CTX_UINT     6
55
56
57 /*@constant int CTX_SINT;@*/ /* short int */
58 # define CTX_SINT     7 
59
60 /*@constant int CTX_USINT;@*/ /* unsigned short int */
61 # define CTX_USINT    8 
62
63 /*@constant int CTX_LINT;@*/ /* long int */
64 # define CTX_LINT     9 
65
66 /*@constant int CTX_ULINT;@*/ /* unsigned long int */  
67 # define CTX_ULINT   10 
68
69 /*@constant int CTX_LLINT;@*/ /* long long int (WG14/N843) */  
70 # define CTX_LLINT   11 
71
72 /*@constant int CTX_ULLINT;@*/ /* unsigned long long int (WG14/N843) */  
73 # define CTX_ULLINT   12
74
75 /*@constant int CTX_ANYINTEGRAL;@*/
76 # define CTX_ANYINTEGRAL 13
77
78 /*@constant int CTX_UNSIGNEDINTEGRAL;@*/
79 # define CTX_UNSIGNEDINTEGRAL 14
80
81 /*@constant int CTX_SIGNEDINTEGRAL;@*/
82 # define CTX_SIGNEDINTEGRAL 15
83
84 /*@constant int CTX_FLOAT;@*/
85 # define CTX_FLOAT 16
86
87 /*@constant int CTX_DOUBLE;@*/
88 # define CTX_DOUBLE 17
89
90 /*@constant int CTX_LDOUBLE;@*/ /* long double */
91 # define CTX_LDOUBLE 18 
92
93 extern bool cprim_isAnyInt (/*@sef@*/ cprim p_c);
94 extern bool cprim_isAnyReal (/*@sef@*/ cprim p_c);
95
96 # define cprim_isAnyInt(c) ((c) >= CTX_INT && (c) <= CTX_SIGNEDINTEGRAL)
97 # define cprim_isAnyReal(c) ((c) >= CTX_FLOAT && (c) <= CTX_LDOUBLE)
98
99 /*@constant int CTX_LAST;@*/
100 # define CTX_LAST CTX_LDOUBLE
101
102 /*@constant cprim cprim_int@*/
103 # define cprim_int CTX_INT
104
105 extern bool cprim_equal (cprim, cprim);
106 # define cprim_equal(p1,p2) ((p1) == (p2))
107
108 extern bool cprim_closeEnough (cprim, cprim) /*@*/ ;
109 extern bool cprim_closeEnoughDeep (cprim, cprim) /*@*/ ;
110 extern /*@only@*/ cstring cprim_unparse (cprim) /*@*/ ;
111 extern cprim cprim_fromInt (int p_i);
112
113 extern bool cprim_isInt(cprim p_c);
114
115 # else
116 # error "Multiple include"
117 # endif
118
119
This page took 0.168788 seconds and 3 git commands to generate.