]> andersk Git - splint.git/blob - src/Headers/misc.h
*** empty log message ***
[splint.git] / src / Headers / misc.h
1 /*
2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
3 ** See ../LICENSE for license information.
4 **
5 */
6 /*
7 ** misc.h
8 **
9 ** (general.c)
10 */
11
12 # ifndef MISC_H
13 # define MISC_H
14
15 # ifndef NOLCL
16 # include "lclMisc.h"
17 # endif
18
19 extern void assertSet (/*@special@*/ /*@sef@*/ /*@unused@*/ void *p_x) 
20    /*@sets p_x, *p_x@*/ ;
21 # define assertSet(x) ;
22
23 extern void assertDefined (/*@sef@*/ /*@unused@*/ void *p_x) ;
24 # define assertDefined(x) ;
25
26
27 /*@-czechfcns@*/
28 extern int size_toInt (size_t p_x) /*@*/ ;
29 extern long size_toLong (size_t p_x) /*@*/ ;
30 extern size_t size_fromInt (int p_x) /*@*/ ;
31 extern int longUnsigned_toInt (long unsigned int p_x) /*@*/ ;
32 extern int long_toInt (long p_x) /*@*/ ;
33 extern long unsigned longUnsigned_fromInt (int p_x) /*@*/ ;
34 /*@=czechfcns@*/
35
36 /* string functions */
37
38 typedef /*@concrete@*/ char *mstring;
39 typedef /*@observer@*/ char *ob_mstring;
40 typedef /*@observer@*/ /*@null@*/ char *bn_mstring;
41
42 extern /*@unused@*/ /*@notnull@*/ /*@observer@*/ char *
43   mstring_safePrint (/*@returned@*/ /*@null@*/ mstring p_s) /*@*/ ;
44 extern char *mstring_spaces (int p_n) /*@*/ ;
45 extern char *mstring_concat  (const char *p_s1, const char *p_s2) /*@*/ ;
46 extern char *mstring_concatFree (/*@only@*/ char *p_s1, /*@only@*/ char *p_s2) /*@modifies *p_s1, *p_s2*/ ;
47 extern char *mstring_concatFree1 (/*@only@*/ char *p_s1, const char *p_s2);
48 extern char *mstring_append (/*@only@*/ char *p_s1, char p_c);
49 extern char *mstring_copy (/*@null@*/ char *p_s1) /*@*/ ;
50 extern bool mstring_equalPrefix (const char *p_c1, const char *p_c2) /*@*/ ;
51 extern bool mstring_equal (/*@null@*/ const char *p_s1, /*@null@*/ const char *p_s2) /*@*/ ;
52 extern bool mstring_containsChar (const char *p_s, char p_c) /*@*/ ;
53
54 extern int mstring_length (/*@sef@*/ /*@null@*/ char *p_s) /*@*/ ;
55 # define mstring_length(s) \
56   (((s) != NULL) ? size_toInt (strlen (s)) : 0)
57
58 extern /*@falsenull@*/ bool mstring_isDefined (/*@sef@*/ /*@null@*/ char *p_s) /*@*/ ;
59 # define mstring_isDefined(s) ((s) != NULL)
60
61 extern /*@truenull@*/ bool mstring_isEmpty (/*@sef@*/ /*@null@*/ char *p_s) /*@*/ ;
62 # define mstring_isEmpty(s) (mstring_length(s) == 0)
63
64 extern void mstring_markFree (/*@owned@*/ char *p_s) /*@modifies *p_s;@*/ ;
65
66 extern /*@notnull@*/ /*@only@*/ char *mstring_create (int p_n) /*@*/ ;
67 extern /*@notnull@*/ /*@only@*/ char *mstring_createEmpty (void) /*@*/ ;
68
69 extern void mstring_free (/*@out@*/ /*@only@*/ /*@null@*/ char *p_s);
70 # define mstring_free(s) sfree(s)
71
72 # define mstring_createEmpty() mstring_create(0)
73
74 extern int int_compare (/*@sef@*/ int p_x, /*@sef@*/ int p_y) /*@*/ ;
75 # define int_compare(x,y) (((x) > (y)) ? 1 : (((x) < (y)) ? -1 : 0))
76
77 /*@-macroparams@*/
78 /*@-macrofcndecl@*/ /* works for lots of types */
79 # define generic_compare(x,y) (((x) > (y)) ? 1 : (((x) < (y)) ? -1 : 0)) 
80 /*@=macrofcndecl@*/
81 /*@=macroparams@*/
82
83 /*@notfunction@*/
84 # define GET(s) ((s *)smalloc(sizeof(s)))
85
86 /*@-czechfcns@*/
87 extern bool isHeaderFile (cstring) /*@*/ ;
88
89 extern void fputline (FILE *p_out, char *p_s) /*@modifies p_out@*/;
90
91 extern int int_log (int p_x) /*@*/ ;
92
93 extern char char_fromInt (int p_x) /*@*/ ;
94
95 extern /*@exposed@*/ cstring removePreDirs (cstring p_s);
96
97 /* These are defined by the bison library (?) */
98 extern /*@external@*/ int isatty (int);
99 extern /*@external@*/ int yywrap (void);
100 /*@=czechfcns@*/
101
102 # else
103 # error "Multiple include"
104 # endif
105
106
107
108
109
This page took 0.127899 seconds and 5 git commands to generate.