1 #ifndef INCLUDED_UTIL_H_
2 #define INCLUDED_UTIL_H_
3 
4 #include <stdio.h>
5 
6     // initialization of error-count values: #times an error can be reported
7     // inside a function definition
8 #define ERRCOUNT    5
9 
10 typedef enum                        // update data.c when this enum changes
11 {
12     sem_noMain,
13     sem_mainNotVoid,
14     sem_multiplyDefined,
15     sem_funArgTypeMismatch,
16     sem_funNotDefined,
17     sem_noBreak,
18     sem_argCount,
19     sem_noContinue,
20     sem_zeroDiv,
21     sem_undefined,
22     sem_noModulo0,
23     sem_returnType,
24     sem_typeConflict,
25     sem_illegalType,
26     sem_lvalueNeeded,
27     sem_illegalArgCount,
28     sem_illegalCast,
29     sem_stringsRequired,
30 
31     semCOUNT
32 
33 } SEMANTIC_ERR;
34 
35 typedef struct MsgCount_
36 {
37     unsigned count;
38     char const *msg;
39 } MsgCount;
40 
41 
42 char const *util_sourceName(void);
43 char const *util_string(void);
44 
45 int         util_printf(char const *fmt, ...);  /* fill gu_lexstring */
46 
47 void        util_catString(char const *txt);
48 void        util_out(FILE *bin, void const *source, unsigned sourceSizeInBytes);
49 void        util_resetSemErr(void);
50 void        util_semantic(SEMANTIC_ERR type, ...);
51 void        util_setSourceName(char const *txt);
52 void        util_setString(char const *txt);
53 void        util_scan(char const *fmt, char const *text);
54 
55 #endif
56 
57 
58