]> andersk Git - splint.git/blob - src/Headers/flags.h
Fixed -help <mode> bug.
[splint.git] / src / Headers / flags.h
1 /*
2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
3 ** See ../LICENSE for license information.
4 **
5 */
6 # ifndef FLAGS_H
7 # define FLAGS_H
8
9
10 typedef enum 
11 {
12   FK_ABSTRACT, FK_ANSI, FK_BEHAVIOR, FK_BOUNDS,
13   FK_COMMENTS, FK_COMPLETE, FK_CONTROL, FK_DEBUG, FK_DECL,
14   FK_SYNCOMMENTS, FK_HINTS, FK_SYSTEMFUNCTIONS, FK_ITS4,
15   FK_DEF, FK_DIRECT, FK_DISPLAY, FK_EFFECT, FK_EXPORT,
16   FK_EXPOSURE, 
17   FK_EXTENSIBLE,
18   FK_FORMAT, FK_GLOBAL, FK_GLOBALS, FK_HEADERS,
19   FK_HELP, FK_IGNORERET, FK_INIT, FK_ITER, FK_LIBS, FK_LIMITS,
20   FK_MACROS, FK_MEMORY, FK_MODIFIES, FK_NAMES, FK_NONE,
21   FK_NULL, FK_OPS, FK_PRED, FK_PREPROC, FK_SECRET,
22   FK_SUPPRESS, FK_SYNTAX, FK_TYPE, FK_TYPEEQ, FK_NUMBERS, 
23   FK_POINTER, FK_UNRECOG, FK_USE, FK_BOOL, FK_ALIAS, 
24   FK_PROTOS, FK_SPEC, 
25   FK_IMPLICIT, FK_FILES, FK_ERRORS, FK_UNSPEC, 
26   FK_SPEED, FK_PARAMS, FK_DEAD, FK_SECURITY,
27   FK_LEAK, FK_ARRAY, FK_OBSOLETE, FK_PREFIX, FK_WARNUSE
28 } flagkind;
29
30 extern void listAllCategories (void);
31 extern void printAlphaFlags (void);
32 extern void printAllFlags (bool p_desc, bool p_full);
33 extern void printFlagManual (bool p_html);
34
35 extern void flagcode_recordError (flagcode p_f);
36 extern void flagcode_recordSuppressed (flagcode p_f);
37 extern int flagcode_numReported (flagcode p_f);
38 extern bool flagcode_isNamePrefixFlag (flagcode p_f);
39
40 extern /*@only@*/ cstring  describeFlag (cstring p_flagname);
41
42 extern flagcode flags_identifyFlag (cstring p_s) /*@modifies g_warningstream@*/ ;
43 extern flagcode flags_identifyFlagQuiet (cstring p_s) /*@modifies nothing@*/ ;
44
45 extern void flags_setValueFlag (flagcode p_opt, /*@only@*/ cstring p_arg);
46 extern void flags_setStringFlag (flagcode p_opt, /*@only@*/ cstring p_arg);
47
48 extern /*@observer@*/ cstring flagcode_unparse (flagcode p_code) /*@*/ ;
49 extern int flagcode_valueIndex (flagcode p_f) /*@*/ ;
50 extern int flagcode_stringIndex (flagcode p_f) /*@*/ ;
51
52 extern int flagcode_priority (flagcode p_code) /*@*/ ;
53
54 extern bool flagcode_equal (flagcode p_code1, flagcode p_code2) /*@*/ ;
55 # define flagcode_equal(c1, c2) ((c1) == (c2))
56
57 extern /*@observer@*/ cstring flagcodeHint (flagcode p_f);
58
59 extern flagkind identifyCategory (cstring p_s) /*@*/ ;
60 extern void printCategory (flagkind p_kind) /*@modifies g_warningstream@*/ ;
61
62 extern bool flagcode_isInvalid (flagcode p_f) /*@*/ ;
63 # define flagcode_isInvalid(f) ((f) == INVALID_FLAG)
64
65 extern bool flagcode_isSkip (flagcode p_f) /*@*/ ;
66 # define flagcode_isSkip(f) ((f) == SKIP_FLAG)
67
68 extern bool flagcode_isModeName (flagcode p_f) /*@*/ ;
69 # define flagcode_isModeName(f) ((f) == MODENAME_FLAG)
70
71 extern bool flagcode_isValid (flagcode p_f) /*@*/ ;
72 # define flagcode_isValid(f) ((f) != INVALID_FLAG)
73
74 extern bool flagcode_isPassThrough (/*@sef@*/ flagcode p_f);
75 # define flagcode_isPassThrough(f) ((f) == FLG_DEFINE || (f) == FLG_UNDEFINE)
76
77 extern bool flagcode_isLibraryFlag (/*@sef@*/ flagcode p_f);
78 # define flagcode_isLibraryFlag(f) \
79    ((f) == FLG_POSIXLIB || (f) == FLG_POSIXSTRICTLIB \
80     || (f) == FLG_UNIXLIB || (f) == FLG_UNIXSTRICTLIB \
81     || (f) == FLG_STRICTLIB || (f) == FLG_NOLIB \
82     || (f) == FLG_ANSILIB)
83
84 extern bool flagcode_isWarnUseFlag (/*@sef@*/ flagcode p_f);
85 # define flagcode_isWarnUseFlag(f) \
86    ((f) == FLG_BUFFEROVERFLOW || (f) == FLG_BUFFEROVERFLOWHIGH)
87
88 extern bool flagcode_hasNumber (flagcode p_f) /*@*/ ;
89 extern bool flagcode_hasChar (flagcode p_f) /*@*/ ;
90 extern bool flagcode_hasString (flagcode p_f) /*@*/ ;
91 extern bool flagcode_hasArgument (flagcode p_f) /*@*/ ;
92
93 /*@constant observer cstring DEFAULT_MODE;@*/
94 # define DEFAULT_MODE (cstring_makeLiteralTemp ("standard"))
95
96 extern bool flags_isModeName (cstring p_s) /*@*/ ;
97 extern /*@only@*/ cstring describeModes (void) /*@modifies g_messagestream@*/ ;
98 extern /*@only@*/ cstring describeMode (/*@observer@*/ cstring mode) /*@*/ ;
99 extern void summarizeErrors (void) /*@modifies g_messagestream@*/ ;
100
101 extern bool flagcode_isNameChecksFlag (flagcode p_f) /*@*/ ;
102 extern bool flagcode_isIdemFlag (flagcode p_f) /*@*/ ;
103 extern bool flagcode_isModeFlag (flagcode p_f) /*@*/ ;
104 extern bool flagcode_isSpecialFlag (flagcode p_f) /*@*/ ;
105 extern bool flagcode_isGlobalFlag (flagcode p_f) /*@*/ ;
106 extern bool flagcode_isMessageControlFlag (flagcode p_f) /*@*/ ;
107 extern bool flagcode_isHelpFlag (flagcode p_f) /*@*/ ;
108
109 extern void flags_initMod (void) /*@modifies internalState@*/ ;
110
111 extern void
112 flags_processFlags (bool p_inCommandLine, 
113                     fileIdList p_xfiles,
114                     fileIdList p_cfiles,
115                     fileIdList p_lclfiles,
116                     fileIdList p_mtfiles,
117                     cstringList *p_passThroughArgs,
118                     int p_argc, 
119                     /*@null@*/ char **p_argv)
120      /*@requires maxRead(p_argv) >= (p_argc - 1) @*/
121      /* returns true if normal, false if execution should exit */ ;
122
123 # else
124 # error "Multiple include"
125 # endif
126
127
128
129
130
131
132
133
134
135
136
137
138
This page took 0.052784 seconds and 5 git commands to generate.