Line data Source code
1 : /* do not edit automatically generated by mc from M2ColorString. */
2 : /* M2ColorString.mod provides procedures for obtaining GCC color strings.
3 :
4 : Copyright (C) 2019-2026 Free Software Foundation, Inc.
5 : Contributed by Gaius Mulley <gaius@glam.ac.uk>.
6 :
7 : This file is part of GNU Modula-2.
8 :
9 : GNU Modula-2 is free software; you can redistribute it and/or modify
10 : it under the terms of the GNU General Public License as published by
11 : the Free Software Foundation; either version 3, or (at your option)
12 : any later version.
13 :
14 : GNU Modula-2 is distributed in the hope that it will be useful, but
15 : WITHOUT ANY WARRANTY; without even the implied warranty of
16 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 : General Public License for more details.
18 :
19 : You should have received a copy of the GNU General Public License
20 : along with GNU Modula-2; see the file COPYING3. If not see
21 : <http://www.gnu.org/licenses/>. */
22 :
23 : #include "config.h"
24 : #include "system.h"
25 : #include <stdbool.h>
26 : # if !defined (PROC_D)
27 : # define PROC_D
28 : typedef void (*PROC_t) (void);
29 : typedef struct { PROC_t proc; } PROC;
30 : # endif
31 :
32 : # if !defined (TRUE)
33 : # define TRUE (1==1)
34 : # endif
35 :
36 : #define _M2ColorString_C
37 :
38 : #include "GM2ColorString.h"
39 : # include "Gm2color.h"
40 : # include "GDynamicStrings.h"
41 : # include "GStrLib.h"
42 : # include "Glibc.h"
43 : # include "GSYSTEM.h"
44 :
45 : static bool EnableColor;
46 :
47 : /*
48 : SetEnableColor - sets the global variable to, b, and returns
49 : the previous value.
50 : */
51 :
52 : extern "C" bool M2ColorString_SetEnableColor (bool b);
53 :
54 : /*
55 : quoteOpen - adds an open quote to string, s.
56 : */
57 :
58 : extern "C" DynamicStrings_String M2ColorString_quoteOpen (DynamicStrings_String s);
59 :
60 : /*
61 : quoteClose - adds a close quote to string, s.
62 : */
63 :
64 : extern "C" DynamicStrings_String M2ColorString_quoteClose (DynamicStrings_String s);
65 :
66 : /*
67 : endColor - stops using color.
68 : */
69 :
70 : extern "C" DynamicStrings_String M2ColorString_endColor (DynamicStrings_String s);
71 :
72 : /*
73 : quoteColor - adds quote color to string, s.
74 : */
75 :
76 : extern "C" DynamicStrings_String M2ColorString_quoteColor (DynamicStrings_String s);
77 :
78 : /*
79 : errorColor - adds error color to string, s.
80 : */
81 :
82 : extern "C" DynamicStrings_String M2ColorString_errorColor (DynamicStrings_String s);
83 :
84 : /*
85 : warningColor - adds warning color to string, s.
86 : */
87 :
88 : extern "C" DynamicStrings_String M2ColorString_warningColor (DynamicStrings_String s);
89 :
90 : /*
91 : noteColor - adds note color to string, s.
92 : */
93 :
94 : extern "C" DynamicStrings_String M2ColorString_noteColor (DynamicStrings_String s);
95 :
96 : /*
97 : locusColor - adds locus color to string, s.
98 : */
99 :
100 : extern "C" DynamicStrings_String M2ColorString_locusColor (DynamicStrings_String s);
101 :
102 : /*
103 : insertColor - adds fixit-insert color to string, s.
104 : */
105 :
106 : extern "C" DynamicStrings_String M2ColorString_insertColor (DynamicStrings_String s);
107 :
108 : /*
109 : deleteColor - adds fixit-insert color to string, s.
110 : */
111 :
112 : extern "C" DynamicStrings_String M2ColorString_deleteColor (DynamicStrings_String s);
113 :
114 : /*
115 : filenameColor - adds filename color to string, s.
116 : */
117 :
118 : extern "C" DynamicStrings_String M2ColorString_filenameColor (DynamicStrings_String s);
119 :
120 : /*
121 : typeColor - adds type color to string, s.
122 : */
123 :
124 : extern "C" DynamicStrings_String M2ColorString_typeColor (DynamicStrings_String s);
125 :
126 : /*
127 : range1Color - adds type color to string, s.
128 : */
129 :
130 : extern "C" DynamicStrings_String M2ColorString_range1Color (DynamicStrings_String s);
131 :
132 : /*
133 : range2Color - adds type color to string, s.
134 : */
135 :
136 : extern "C" DynamicStrings_String M2ColorString_range2Color (DynamicStrings_String s);
137 :
138 : /*
139 : append - appends color string, name, to the end of string, s,
140 : and returns, s.
141 : */
142 :
143 : static DynamicStrings_String append (DynamicStrings_String s, const char *name_, unsigned int _name_high);
144 :
145 :
146 : /*
147 : append - appends color string, name, to the end of string, s,
148 : and returns, s.
149 : */
150 :
151 109827 : static DynamicStrings_String append (DynamicStrings_String s, const char *name_, unsigned int _name_high)
152 : {
153 109827 : DynamicStrings_String c;
154 109827 : char name[_name_high+1];
155 :
156 : /* make a local copy of each unbounded array. */
157 109827 : memcpy (name, name_, _name_high+1);
158 :
159 109827 : c = DynamicStrings_InitStringCharStar (reinterpret_cast <void *> (m2color_colorize_start (EnableColor, const_cast<void*> (static_cast<const void*>(name)), StrLib_StrLen ((const char *) name, _name_high))));
160 109827 : s = DynamicStrings_ConCat (s, c);
161 109827 : c = DynamicStrings_KillString (c);
162 109827 : return s;
163 : /* static analysis guarentees a RETURN statement will be used before here. */
164 : __builtin_unreachable ();
165 109827 : }
166 :
167 :
168 : /*
169 : SetEnableColor - sets the global variable to, b, and returns
170 : the previous value.
171 : */
172 :
173 27326 : extern "C" bool M2ColorString_SetEnableColor (bool b)
174 : {
175 27326 : bool previous;
176 :
177 27326 : previous = EnableColor;
178 27326 : EnableColor = b;
179 27326 : return previous;
180 : /* static analysis guarentees a RETURN statement will be used before here. */
181 : __builtin_unreachable ();
182 : }
183 :
184 :
185 : /*
186 : quoteOpen - adds an open quote to string, s.
187 : */
188 :
189 35216 : extern "C" DynamicStrings_String M2ColorString_quoteOpen (DynamicStrings_String s)
190 : {
191 35216 : return DynamicStrings_ConCat (append (s, (const char *) "quote", 5), DynamicStrings_Mark (DynamicStrings_InitStringCharStar (reinterpret_cast <void *> (m2color_open_quote ()))));
192 : /* static analysis guarentees a RETURN statement will be used before here. */
193 : __builtin_unreachable ();
194 : }
195 :
196 :
197 : /*
198 : quoteClose - adds a close quote to string, s.
199 : */
200 :
201 35216 : extern "C" DynamicStrings_String M2ColorString_quoteClose (DynamicStrings_String s)
202 : {
203 35216 : s = M2ColorString_endColor (s);
204 35216 : s = append (s, (const char *) "quote", 5);
205 35216 : s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringCharStar (reinterpret_cast <void *> (m2color_close_quote ()))));
206 35216 : s = M2ColorString_endColor (s);
207 35216 : return s;
208 : /* static analysis guarentees a RETURN statement will be used before here. */
209 : __builtin_unreachable ();
210 : }
211 :
212 :
213 : /*
214 : endColor - stops using color.
215 : */
216 :
217 139506 : extern "C" DynamicStrings_String M2ColorString_endColor (DynamicStrings_String s)
218 : {
219 139506 : DynamicStrings_String c;
220 :
221 139506 : c = DynamicStrings_InitStringCharStar (reinterpret_cast <void *> (m2color_colorize_stop (EnableColor)));
222 139506 : s = DynamicStrings_ConCat (s, c);
223 139506 : c = DynamicStrings_KillString (c);
224 139506 : return s;
225 : /* static analysis guarentees a RETURN statement will be used before here. */
226 : __builtin_unreachable ();
227 : }
228 :
229 :
230 : /*
231 : quoteColor - adds quote color to string, s.
232 : */
233 :
234 0 : extern "C" DynamicStrings_String M2ColorString_quoteColor (DynamicStrings_String s)
235 : {
236 0 : return append (s, (const char *) "quote", 5);
237 : /* static analysis guarentees a RETURN statement will be used before here. */
238 : __builtin_unreachable ();
239 : }
240 :
241 :
242 : /*
243 : errorColor - adds error color to string, s.
244 : */
245 :
246 11199 : extern "C" DynamicStrings_String M2ColorString_errorColor (DynamicStrings_String s)
247 : {
248 11199 : return append (s, (const char *) "error", 5);
249 : /* static analysis guarentees a RETURN statement will be used before here. */
250 : __builtin_unreachable ();
251 : }
252 :
253 :
254 : /*
255 : warningColor - adds warning color to string, s.
256 : */
257 :
258 26952 : extern "C" DynamicStrings_String M2ColorString_warningColor (DynamicStrings_String s)
259 : {
260 26952 : return append (s, (const char *) "warning", 7);
261 : /* static analysis guarentees a RETURN statement will be used before here. */
262 : __builtin_unreachable ();
263 : }
264 :
265 :
266 : /*
267 : noteColor - adds note color to string, s.
268 : */
269 :
270 59 : extern "C" DynamicStrings_String M2ColorString_noteColor (DynamicStrings_String s)
271 : {
272 59 : return append (s, (const char *) "note", 4);
273 : /* static analysis guarentees a RETURN statement will be used before here. */
274 : __builtin_unreachable ();
275 : }
276 :
277 :
278 : /*
279 : locusColor - adds locus color to string, s.
280 : */
281 :
282 1185 : extern "C" DynamicStrings_String M2ColorString_locusColor (DynamicStrings_String s)
283 : {
284 1185 : return append (s, (const char *) "locus", 5);
285 : /* static analysis guarentees a RETURN statement will be used before here. */
286 : __builtin_unreachable ();
287 : }
288 :
289 :
290 : /*
291 : insertColor - adds fixit-insert color to string, s.
292 : */
293 :
294 0 : extern "C" DynamicStrings_String M2ColorString_insertColor (DynamicStrings_String s)
295 : {
296 0 : return append (s, (const char *) "fixit-insert", 12);
297 : /* static analysis guarentees a RETURN statement will be used before here. */
298 : __builtin_unreachable ();
299 : }
300 :
301 :
302 : /*
303 : deleteColor - adds fixit-insert color to string, s.
304 : */
305 :
306 0 : extern "C" DynamicStrings_String M2ColorString_deleteColor (DynamicStrings_String s)
307 : {
308 0 : return append (s, (const char *) "fixit-delete", 12);
309 : /* static analysis guarentees a RETURN statement will be used before here. */
310 : __builtin_unreachable ();
311 : }
312 :
313 :
314 : /*
315 : filenameColor - adds filename color to string, s.
316 : */
317 :
318 0 : extern "C" DynamicStrings_String M2ColorString_filenameColor (DynamicStrings_String s)
319 : {
320 0 : return append (s, (const char *) "diff-filename", 13);
321 : /* static analysis guarentees a RETURN statement will be used before here. */
322 : __builtin_unreachable ();
323 : }
324 :
325 :
326 : /*
327 : typeColor - adds type color to string, s.
328 : */
329 :
330 0 : extern "C" DynamicStrings_String M2ColorString_typeColor (DynamicStrings_String s)
331 : {
332 0 : return append (s, (const char *) "type", 4);
333 : /* static analysis guarentees a RETURN statement will be used before here. */
334 : __builtin_unreachable ();
335 : }
336 :
337 :
338 : /*
339 : range1Color - adds type color to string, s.
340 : */
341 :
342 0 : extern "C" DynamicStrings_String M2ColorString_range1Color (DynamicStrings_String s)
343 : {
344 0 : return append (s, (const char *) "range1", 6);
345 : /* static analysis guarentees a RETURN statement will be used before here. */
346 : __builtin_unreachable ();
347 : }
348 :
349 :
350 : /*
351 : range2Color - adds type color to string, s.
352 : */
353 :
354 0 : extern "C" DynamicStrings_String M2ColorString_range2Color (DynamicStrings_String s)
355 : {
356 0 : return append (s, (const char *) "range2", 6);
357 : /* static analysis guarentees a RETURN statement will be used before here. */
358 : __builtin_unreachable ();
359 : }
360 :
361 0 : extern "C" void _M2_M2ColorString_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
362 : {
363 0 : EnableColor = true;
364 0 : }
365 :
366 0 : extern "C" void _M2_M2ColorString_fini (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
367 : {
368 0 : }
|