]>
Commit | Line | Data |
---|---|---|
c906108c SS |
1 | /* This file is part of the program psim. |
2 | ||
3 | Copyright (C) 1994-1995, Andrew Cagney <[email protected]> | |
4 | ||
5 | This program is free software; you can redistribute it and/or modify | |
6 | it under the terms of the GNU General Public License as published by | |
3fd725ef | 7 | the Free Software Foundation; either version 3 of the License, or |
c906108c SS |
8 | (at your option) any later version. |
9 | ||
10 | This program is distributed in the hope that it will be useful, | |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | GNU General Public License for more details. | |
14 | ||
15 | You should have received a copy of the GNU General Public License | |
51b318de | 16 | along with this program; if not, see <http://www.gnu.org/licenses/>. |
c906108c SS |
17 | |
18 | */ | |
19 | ||
20 | ||
21 | /* LF: Line Numbered Output Stream */ | |
22 | ||
69ff2dac MF |
23 | #include "ansidecl.h" |
24 | ||
c906108c SS |
25 | typedef struct _lf lf; |
26 | ||
27 | typedef enum { | |
28 | lf_is_h, | |
29 | lf_is_c, | |
30 | lf_is_text, | |
31 | } lf_file_type; | |
32 | ||
33 | ||
34 | typedef enum { | |
35 | lf_include_references, | |
36 | lf_omit_references, | |
37 | } lf_file_references; | |
38 | ||
39 | ||
40 | /* Open the file NAME for writing. REAL_NAME is to be included in any | |
41 | line number outputs. The output of line number information can be | |
42 | suppressed with LINE_NUMBERS */ | |
43 | ||
44 | extern lf *lf_open | |
fc3579da MF |
45 | (const char *name, |
46 | const char *real_name, | |
c906108c SS |
47 | lf_file_references file_references, |
48 | lf_file_type type, | |
49 | const char *program); | |
50 | ||
51 | extern void lf_close | |
52 | (lf *file); | |
53 | ||
54 | ||
55 | /* Basic output functions */ | |
56 | ||
57 | extern int lf_putchr | |
58 | (lf *file, | |
59 | const char ch); | |
60 | ||
61 | extern int lf_putstr | |
62 | (lf *file, | |
63 | const char *string); | |
64 | ||
65 | extern int lf_putint | |
66 | (lf *file, | |
67 | int decimal); | |
68 | ||
69 | extern int lf_putbin | |
70 | (lf *file, | |
71 | int decimal, | |
72 | int width); | |
73 | ||
74 | extern int lf_printf | |
75 | (lf *file, | |
76 | const char *fmt, | |
69ff2dac | 77 | ...) ATTRIBUTE_PRINTF_2; |
c906108c SS |
78 | |
79 | ||
80 | /* Indentation control. | |
81 | ||
82 | lf_indent_suppress suppresses indentation on the next line (current | |
83 | line if that has not yet been started) */ | |
84 | ||
85 | extern void lf_indent_suppress | |
86 | (lf *file); | |
87 | ||
88 | extern void lf_indent | |
89 | (lf *file, | |
90 | int delta); | |
91 | ||
92 | ||
93 | /* Print generic text: */ | |
94 | ||
95 | ||
96 | extern int lf_print__gnu_copyleft | |
97 | (lf *file); | |
98 | ||
99 | extern int lf_print__file_start | |
100 | (lf *file); | |
101 | ||
102 | extern int lf_print__this_file_is_empty | |
103 | (lf *file); | |
104 | ||
105 | extern int lf_print__file_finish | |
106 | (lf *file); | |
107 | ||
108 | extern int lf_print__internal_reference | |
109 | (lf *file); | |
110 | ||
111 | extern int lf_print__external_reference | |
112 | (lf *file, | |
113 | int line_nr, | |
114 | const char *file_name); | |
115 | ||
116 | extern int lf_print__ucase_filename | |
117 | (lf *file); | |
118 | ||
119 | /* Tab prefix is suppressed */ | |
120 | ||
121 | extern int lf_print__c_code | |
122 | (lf *file, | |
123 | const char *code); | |
124 | ||
125 | ||
126 | extern int lf_print_function_type | |
127 | (lf *file, | |
128 | const char *type, | |
129 | const char *prefix, | |
130 | const char *trailing_space); |