]> andersk Git - splint.git/blame - src/Headers/cprim.h
Renamed lclintMacros.nf splintMacros.nf
[splint.git] / src / Headers / cprim.h
CommitLineData
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** 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
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
105extern bool cprim_equal (cprim, cprim);
106# define cprim_equal(p1,p2) ((p1) == (p2))
107
a0a162cd 108extern bool cprim_closeEnough (cprim, cprim) /*@*/ ;
109extern bool cprim_closeEnoughDeep (cprim, cprim) /*@*/ ;
110extern /*@only@*/ cstring cprim_unparse (cprim) /*@*/ ;
885824d3 111extern cprim cprim_fromInt (int p_i);
112
113extern bool cprim_isInt(cprim p_c);
114
115# else
116# error "Multiple include"
117# endif
118
119
This page took 0.093444 seconds and 5 git commands to generate.