]> andersk Git - splint.git/blame - src/Headers/cprim.h
Updated copyrights
[splint.git] / src / Headers / cprim.h
CommitLineData
885824d3 1/*
c0de361f 2** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
885824d3 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
18immut_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
35extern bool cprim_isUnsignedChar (/*@sef@*/ cprim p_c);
36# define cprim_isUnsignedChar(c) ((c) == CTX_UCHAR)
37
38extern bool cprim_isSignedChar (/*@sef@*/ cprim p_c);
39# define cprim_isSignedChar(c) ((c) == CTX_CHAR)
40
41extern 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
1b8ae690 46** recognized in the ANSI standard. Splint treats these as distinct
885824d3 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
93extern bool cprim_isAnyInt (/*@sef@*/ cprim p_c);
94extern bool cprim_isAnyReal (/*@sef@*/ cprim p_c);
95
6fcd0b1e 96# define cprim_isAnyInt(c) ((c) >= CTX_INT && (c) <= CTX_SIGNEDINTEGRAL)
97
98extern 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)
885824d3 103
104/*@constant int CTX_LAST;@*/
105# define CTX_LAST CTX_LDOUBLE
106
107/*@constant cprim cprim_int@*/
108# define cprim_int CTX_INT
109
110extern bool cprim_equal (cprim, cprim);
111# define cprim_equal(p1,p2) ((p1) == (p2))
112
a0a162cd 113extern bool cprim_closeEnough (cprim, cprim) /*@*/ ;
114extern bool cprim_closeEnoughDeep (cprim, cprim) /*@*/ ;
115extern /*@only@*/ cstring cprim_unparse (cprim) /*@*/ ;
885824d3 116extern cprim cprim_fromInt (int p_i);
885824d3 117extern bool cprim_isInt(cprim p_c);
e5081f8c 118extern int cprim_getExpectedBits (cprim p_c) /*@*/ ;
885824d3 119
120# else
121# error "Multiple include"
122# endif
123
124
This page took 0.339951 seconds and 5 git commands to generate.