GCC Middle and Back End API Reference
libgdiagnostics++.h
Go to the documentation of this file.
1/* A C++ wrapper API around libgdiagnostics.h for emitting diagnostics.
2 Copyright (C) 2023-2025 Free Software Foundation, Inc.
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it
7under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 3, or (at your option)
9any later version.
10
11GCC is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
19
20#ifndef LIBGDIAGNOSTICSPP_H
21#define LIBGDIAGNOSTICSPP_H
22
23#include "libgdiagnostics.h"
24
25namespace libgdiagnostics {
26
29
30class file;
33class execution_path;
34class group;
35class manager;
36class diagnostic;
37
38/* Wrapper around a borrowed diagnostic_text_sink *. */
39
69
70/* Wrapper around a diagnostic_file *. */
71
72class file
73{
74public:
75 file () : m_inner (nullptr) {}
77 file (const file &other) : m_inner (other.m_inner) {}
78 file &operator= (const file &other) { m_inner = other.m_inner; return *this; }
79
80 void set_buffered_content (const char *data, size_t sz);
81
83};
84
85/* Wrapper around a const diagnostic_physical_location *. */
86
88{
89public:
90 physical_location () : m_inner (nullptr) {}
91
93 : m_inner (location)
94 {}
95
96 file get_file () const;
97
99};
100
101/* Wrapper around a const diagnostic_logical_location *. */
102
104{
105public:
106 logical_location () : m_inner (nullptr) {}
107
109 : m_inner (logical_loc)
110 {}
111
112 operator bool() { return m_inner != nullptr; }
113
114 // Various accessors
117 const char *get_short_name () const;
118 const char *get_fully_qualified_name () const;
119 const char *get_decorated_name () const;
120
121 bool operator== (const logical_location &other) const
122 {
123 return m_inner == other.m_inner;
124 }
125
126 bool operator!= (const logical_location &other) const
127 {
128 return m_inner != other.m_inner;
129 }
130
132};
133
134/* RAII class around a diagnostic_execution_path *. */
135
137{
138public:
139 execution_path () : m_inner (nullptr), m_owned (false) {}
140
144
149
150 execution_path (const execution_path &other) = delete;
151 execution_path &operator= (const execution_path &other) = delete;
152
154 : m_inner (other.m_inner),
155 m_owned (other.m_owned)
156 {
157 other.m_inner = nullptr;
158 other.m_owned = false;
159 }
160
162 {
163 m_inner = other.m_inner;
164 m_owned = other.m_owned;
165 other.m_inner = nullptr;
166 other.m_owned = false;
167 return *this;
168 }
169
175
177 add_event (physical_location physical_loc,
178 logical_location logical_loc,
179 unsigned stack_depth,
180 const char *fmt, ...)
182
184 add_event_va (physical_location physical_loc,
185 logical_location logical_loc,
186 unsigned stack_depth,
187 const char *fmt,
188 va_list *args)
190
193};
194
195/* RAII class for starting/ending a group within a diagnostic_manager. */
196
197class group
198{
199public:
200 group (manager &mgr);
201 ~group ();
202
203private:
205};
206
207/* Wrapper around a diagnostic *. */
208
210{
211public:
213
214 void
215 set_cwe (unsigned cwe_id);
216
217 void
218 add_rule (const char *title, const char *url);
219
220 void
221 set_location (physical_location loc);
222
223 void
224 add_location (physical_location loc);
225
226 void
227 add_location_with_label (physical_location loc,
228 const char *text);
229
230 void
231 set_logical_location (logical_location loc);
232
233 void
234 add_fix_it_hint_insert_before (physical_location loc,
235 const char *addition);
236 void
237 add_fix_it_hint_insert_after (physical_location loc,
238 const char *addition);
239 void
240 add_fix_it_hint_replace (physical_location loc,
241 const char *replacement);
242 void
243 add_fix_it_hint_delete (physical_location loc);
244
245 void
246 take_execution_path (execution_path path);
247
248 void
249 finish (const char *fmt, ...)
252
253 void
254 finish_va (const char *fmt, va_list *args)
257
259};
260
261/* Wrapper around a diagnostic_manager *, possibly with ownership. */
262
264{
265public:
268 m_owned (true)
269 {
270 }
271 manager (diagnostic_manager *inner, bool owned)
272 : m_inner (inner),
273 m_owned (owned)
274 {
275 }
277 {
278 if (m_owned)
280 }
281
282 manager (const manager &other) = delete;
283 manager (manager &&other)
284 : m_inner (other.m_inner),
285 m_owned (other.m_owned)
286 {
287 other.m_inner = nullptr;
288 }
289
290 void
291 set_tool_name (const char *value)
292 {
294 }
295
296 void
297 set_full_name (const char *value)
298 {
300 }
301
302 void
303 set_version_string (const char *value)
304 {
306 }
307
308 void
309 set_version_url (const char *value)
310 {
312 }
313
315 add_text_sink (FILE *dst_stream,
316 enum diagnostic_colorize colorize)
317 {
318 return text_sink
319 (diagnostic_manager_add_text_sink (m_inner, dst_stream, colorize));
320 }
321
322 void
323 add_sarif_sink (FILE *dst_stream,
324 file main_input_file,
325 enum diagnostic_sarif_version version)
326 {
328 main_input_file.m_inner,
329 version);
330 }
331
332 void
333 write_patch (FILE *dst_stream)
334 {
336 }
337
338 /* Location management. */
339
340 file
341 new_file (const char *name,
342 const char *sarif_source_language)
345
346 void
348 FILE *out);
349
352
355 line_num_t line_num,
356 column_num_t column_num);
357
360 physical_location loc_start,
361 physical_location loc_end);
362
363 void
365 FILE *out);
366
369 logical_location parent,
370 const char *short_name,
371 const char *fully_qualified_name,
372 const char *decorated_name);
373
374 void
376 FILE *out);
377
380
383
384
387};
388
389// Implementation
390
391// class file
392
393inline void
394file::set_buffered_content (const char *data, size_t sz)
395{
397}
398
399// class physical_location
400
401inline file
406
407// class logical_location
408
410logical_location::get_kind () const
411{
412 // m_inner must be non-null
414}
415
416inline logical_location
417logical_location::get_parent () const
418{
419 if (m_inner)
421 else
422 return nullptr;
423}
424
425inline const char *
426logical_location::get_short_name () const
427{
428 if (m_inner)
430 else
431 return nullptr;
432}
433
434inline const char *
435logical_location::get_fully_qualified_name () const
436{
437 if (m_inner)
439 else
440 return nullptr;
441}
442
443inline const char *
444logical_location::get_decorated_name () const
445{
446 if (m_inner)
448 else
449 return nullptr;
450}
451
452// class execution_path
453
456 logical_location logical_loc,
457 unsigned stack_depth,
458 const char *fmt, ...)
459{
460 va_list args;
461 va_start (args, fmt);
462 diagnostic_event_id result = add_event_va (physical_loc,
463 logical_loc,
464 stack_depth,
465 fmt, &args);
466 va_end (args);
467
468 return result;
469}
470
473 logical_location logical_loc,
474 unsigned stack_depth,
475 const char *fmt,
476 va_list *args)
477{
479 physical_loc.m_inner,
480 logical_loc.m_inner,
481 stack_depth,
482 fmt,
483 args);
484}
485
486// class group
487
488inline
490: m_mgr (mgr)
491{
493}
494
495inline
500
501// class diagnostic
502
503inline void
504diagnostic::set_cwe (unsigned cwe_id)
505{
506 diagnostic_set_cwe (m_inner, cwe_id);
507}
508
509inline void
510diagnostic::add_rule (const char *title, const char *url)
511{
512 diagnostic_add_rule (m_inner, title, url);
513}
514
515inline void
520
521inline void
527
528inline void
533
534inline void
539
540inline void
541diagnostic::add_fix_it_hint_insert_before (physical_location loc,
542 const char *addition)
543{
545 loc.m_inner,
546 addition);
547}
548
549inline void
550diagnostic::add_fix_it_hint_insert_after (physical_location loc,
551 const char *addition)
552{
554 loc.m_inner,
555 addition);
556}
557
558inline void
559diagnostic::add_fix_it_hint_replace (physical_location loc,
560 const char *replacement)
561{
563 loc.m_inner,
565}
566
567inline void
568diagnostic::add_fix_it_hint_delete (physical_location loc)
569{
571 loc.m_inner);
572}
573
574inline void
581
582inline void
583diagnostic::finish (const char *fmt, ...)
584{
585 va_list ap;
586 va_start (ap, fmt);
588 va_end (ap);
589}
590
591inline void
592diagnostic::finish_va (const char *fmt, va_list *args)
593{
594 diagnostic_finish_va (m_inner, fmt, args);
595}
596
597// class manager
598
599inline file
600manager::new_file (const char *name,
601 const char *sarif_source_language)
602{
603 return file
604 (diagnostic_manager_new_file (m_inner, name, sarif_source_language));
605}
606
616
619 line_num_t line_num,
620 column_num_t column_num)
621{
622 return physical_location
624 f.m_inner,
625 line_num,
626 column_num));
627}
628
631 physical_location loc_start,
632 physical_location loc_end)
633{
634 return physical_location
636 loc_caret.m_inner,
637 loc_start.m_inner,
638 loc_end.m_inner));
639}
640
641inline void
649inline logical_location
651 logical_location parent,
652 const char *short_name,
653 const char *fully_qualified_name,
654 const char *decorated_name)
655{
656 return logical_location
658 kind,
659 parent.m_inner,
660 short_name,
661 fully_qualified_name,
662 decorated_name));
663}
664
665inline void
673
674inline execution_path
679
680inline diagnostic
685
686} // namespace libgdiagnostics
687
688#endif // #ifndef LIBGDIAGNOSTICSPP_H
Definition genoutput.cc:150
Definition libgdiagnostics++.h:210
diagnostic(::diagnostic *d)
Definition libgdiagnostics++.h:212
void void ::diagnostic *const m_inner
Definition libgdiagnostics++.h:258
Definition libgdiagnostics++.h:137
execution_path(const diagnostic_execution_path *path)
Definition libgdiagnostics++.h:145
execution_path()
Definition libgdiagnostics++.h:139
diagnostic_event_id diagnostic_event_id add_event_va(physical_location physical_loc, logical_location logical_loc, unsigned stack_depth, const char *fmt, va_list *args) LIBGDIAGNOSTICS_PARAM_GCC_FORMAT_STRING(5
Definition libgdiagnostics++.h:472
execution_path(const execution_path &other)=delete
diagnostic_event_id diagnostic_event_id diagnostic_execution_path * m_inner
Definition libgdiagnostics++.h:191
execution_path(execution_path &&other)
Definition libgdiagnostics++.h:153
execution_path & operator=(const execution_path &other)=delete
bool m_owned
Definition libgdiagnostics++.h:192
diagnostic_event_id add_event(physical_location physical_loc, logical_location logical_loc, unsigned stack_depth, const char *fmt,...) LIBGDIAGNOSTICS_PARAM_GCC_FORMAT_STRING(5
Definition libgdiagnostics++.h:455
~execution_path()
Definition libgdiagnostics++.h:170
execution_path(diagnostic_execution_path *path)
Definition libgdiagnostics++.h:141
Definition libgdiagnostics++.h:73
file(diagnostic_file *file)
Definition libgdiagnostics++.h:76
file(const file &other)
Definition libgdiagnostics++.h:77
file & operator=(const file &other)
Definition libgdiagnostics++.h:78
void set_buffered_content(const char *data, size_t sz)
Definition libgdiagnostics++.h:394
diagnostic_file * m_inner
Definition libgdiagnostics++.h:82
file()
Definition libgdiagnostics++.h:75
Definition libgdiagnostics++.h:198
manager & m_mgr
Definition libgdiagnostics++.h:204
group(manager &mgr)
Definition libgdiagnostics++.h:489
~group()
Definition libgdiagnostics++.h:496
Definition libgdiagnostics++.h:104
const char * get_decorated_name() const
Definition libgdiagnostics++.h:444
const diagnostic_logical_location * m_inner
Definition libgdiagnostics++.h:131
logical_location(const diagnostic_logical_location *logical_loc)
Definition libgdiagnostics++.h:108
bool operator==(const logical_location &other) const
Definition libgdiagnostics++.h:121
const char * get_short_name() const
Definition libgdiagnostics++.h:426
enum diagnostic_logical_location_kind_t get_kind() const
Definition libgdiagnostics++.h:410
const char * get_fully_qualified_name() const
Definition libgdiagnostics++.h:435
bool operator!=(const logical_location &other) const
Definition libgdiagnostics++.h:126
logical_location get_parent() const
Definition libgdiagnostics++.h:417
logical_location()
Definition libgdiagnostics++.h:106
Definition libgdiagnostics++.h:264
manager(diagnostic_manager *inner, bool owned)
Definition libgdiagnostics++.h:271
execution_path new_execution_path()
Definition libgdiagnostics++.h:675
~manager()
Definition libgdiagnostics++.h:276
manager(manager &&other)
Definition libgdiagnostics++.h:283
physical_location new_location_from_file_and_line(file f, diagnostic_line_num_t line_num)
Definition libgdiagnostics++.h:608
diagnostic_manager * m_inner
Definition libgdiagnostics++.h:385
manager()
Definition libgdiagnostics++.h:266
void set_tool_name(const char *value)
Definition libgdiagnostics++.h:291
physical_location new_location_from_file_line_column(file f, line_num_t line_num, column_num_t column_num)
Definition libgdiagnostics++.h:618
void debug_dump(file f, FILE *out)
diagnostic begin_diagnostic(enum diagnostic_level level)
Definition libgdiagnostics++.h:681
file new_file(const char *name, const char *sarif_source_language) LIBGDIAGNOSTICS_PARAM_CAN_BE_NULL(3)
Definition libgdiagnostics++.h:600
manager(const manager &other)=delete
physical_location new_location_from_range(physical_location loc_caret, physical_location loc_start, physical_location loc_end)
Definition libgdiagnostics++.h:630
void set_version_string(const char *value)
Definition libgdiagnostics++.h:303
void write_patch(FILE *dst_stream)
Definition libgdiagnostics++.h:333
logical_location new_logical_location(enum diagnostic_logical_location_kind_t kind, logical_location parent, const char *short_name, const char *fully_qualified_name, const char *decorated_name)
Definition libgdiagnostics++.h:650
text_sink add_text_sink(FILE *dst_stream, enum diagnostic_colorize colorize)
Definition libgdiagnostics++.h:315
void add_sarif_sink(FILE *dst_stream, file main_input_file, enum diagnostic_sarif_version version)
Definition libgdiagnostics++.h:323
bool m_owned
Definition libgdiagnostics++.h:386
void set_version_url(const char *value)
Definition libgdiagnostics++.h:309
void set_full_name(const char *value)
Definition libgdiagnostics++.h:297
Definition libgdiagnostics++.h:88
file get_file() const
Definition libgdiagnostics++.h:402
const diagnostic_physical_location * m_inner
Definition libgdiagnostics++.h:98
physical_location()
Definition libgdiagnostics++.h:90
physical_location(const diagnostic_physical_location *location)
Definition libgdiagnostics++.h:92
Definition libgdiagnostics++.h:41
void set_labelled_source_colorization_enabled(int value)
Definition libgdiagnostics++.h:61
void set_source_printing_enabled(int value)
Definition libgdiagnostics++.h:49
void set_colorize(enum diagnostic_colorize colorize)
Definition libgdiagnostics++.h:55
diagnostic_text_sink * m_inner
Definition libgdiagnostics++.h:67
text_sink(diagnostic_text_sink *inner)
Definition libgdiagnostics++.h:43
static struct path_prefix cpath path
Definition collect2.cc:514
void diagnostic_manager_release(diagnostic_manager *diag_mgr)
Definition libgdiagnostics.cc:1275
const char * diagnostic_logical_location_get_short_name(const diagnostic_logical_location *loc)
Definition libgdiagnostics.cc:1964
void diagnostic_manager_set_full_name(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1295
diagnostic_text_sink * diagnostic_manager_add_text_sink(diagnostic_manager *diag_mgr, FILE *dst_stream, enum diagnostic_colorize colorize)
Definition libgdiagnostics.cc:1331
const diagnostic_logical_location * diagnostic_manager_new_logical_location(diagnostic_manager *diag_mgr, enum diagnostic_logical_location_kind_t kind, const diagnostic_logical_location *parent, const char *short_name, const char *fully_qualified_name, const char *decorated_name)
Definition libgdiagnostics.cc:1548
void diagnostic_add_location(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:1726
void diagnostic_add_fix_it_hint_delete(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:1811
void diagnostic_manager_write_patch(diagnostic_manager *diag_mgr, FILE *dst_stream)
Definition libgdiagnostics.cc:1414
enum diagnostic_logical_location_kind_t diagnostic_logical_location_get_kind(const diagnostic_logical_location *loc)
Definition libgdiagnostics.cc:1948
void diagnostic_manager_add_sarif_sink(diagnostic_manager *diag_mgr, FILE *dst_stream, const diagnostic_file *main_input_file, enum diagnostic_sarif_version version)
Definition libgdiagnostics.cc:1381
void diagnostic_text_sink_set_labelled_source_colorization_enabled(diagnostic_text_sink *text_sink, int value)
Definition libgdiagnostics.cc:1369
const diagnostic_logical_location * diagnostic_logical_location_get_parent(const diagnostic_logical_location *loc)
Definition libgdiagnostics.cc:1956
void diagnostic_manager_end_group(diagnostic_manager *diag_mgr)
Definition libgdiagnostics.cc:1671
const diagnostic_physical_location * diagnostic_manager_new_location_from_range(diagnostic_manager *diag_mgr, const diagnostic_physical_location *loc_caret, const diagnostic_physical_location *loc_start, const diagnostic_physical_location *loc_end)
Definition libgdiagnostics.cc:1503
void diagnostic_add_rule(diagnostic *diag, const char *title, const char *url)
Definition libgdiagnostics.cc:1702
diagnostic * diagnostic_begin(diagnostic_manager *diag_mgr, enum diagnostic_level level)
Definition libgdiagnostics.cc:1680
void diagnostic_text_sink_set_colorize(diagnostic_text_sink *text_sink, enum diagnostic_colorize colorize)
Definition libgdiagnostics.cc:1358
diagnostic_manager * diagnostic_manager_new(void)
Definition libgdiagnostics.cc:1267
void diagnostic_set_location(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:1714
void diagnostic_add_fix_it_hint_insert_before(diagnostic *diag, const diagnostic_physical_location *loc, const char *addition)
Definition libgdiagnostics.cc:1763
void diagnostic_manager_debug_dump_logical_location(const diagnostic_manager *diag_mgr, const diagnostic_logical_location *loc, FILE *out)
Definition libgdiagnostics.cc:1565
diagnostic_event_id diagnostic_execution_path_add_event_va(diagnostic_execution_path *path, const diagnostic_physical_location *physical_loc, const diagnostic_logical_location *logical_loc, unsigned stack_depth, const char *gmsgid, va_list *args)
Definition libgdiagnostics.cc:1887
const char * diagnostic_logical_location_get_fully_qualified_name(const diagnostic_logical_location *loc)
Definition libgdiagnostics.cc:1972
diagnostic_file * diagnostic_physical_location_get_file(const diagnostic_physical_location *physical_loc)
Definition libgdiagnostics.cc:1937
const diagnostic_physical_location * diagnostic_manager_new_location_from_file_line_column(diagnostic_manager *diag_mgr, const diagnostic_file *file, diagnostic_line_num_t line_num, diagnostic_column_num_t column_num)
Definition libgdiagnostics.cc:1487
void diagnostic_manager_set_version_url(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1319
void diagnostic_file_set_buffered_content(diagnostic_file *file, const char *buf, size_t sz)
Definition libgdiagnostics.cc:1439
void diagnostic_set_logical_location(diagnostic *diag, const diagnostic_logical_location *logical_loc)
Definition libgdiagnostics.cc:1752
void diagnostic_add_fix_it_hint_replace(diagnostic *diag, const diagnostic_physical_location *loc, const char *replacement)
Definition libgdiagnostics.cc:1795
void diagnostic_manager_debug_dump_location(const diagnostic_manager *diag_mgr, const diagnostic_physical_location *loc, FILE *out)
Definition libgdiagnostics.cc:1518
void diagnostic_manager_set_version_string(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1307
void diagnostic_add_location_with_label(diagnostic *diag, const diagnostic_physical_location *loc, const char *text)
Definition libgdiagnostics.cc:1738
diagnostic_file * diagnostic_manager_new_file(diagnostic_manager *diag_mgr, const char *name, const char *sarif_source_language)
Definition libgdiagnostics.cc:1426
void diagnostic_manager_begin_group(diagnostic_manager *diag_mgr)
Definition libgdiagnostics.cc:1662
void diagnostic_manager_set_tool_name(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1283
void diagnostic_set_cwe(diagnostic *diag, unsigned cwe_id)
Definition libgdiagnostics.cc:1691
void diagnostic_finish_va(diagnostic *diag, const char *gmsgid, va_list *args)
Definition libgdiagnostics.cc:1920
const char * diagnostic_logical_location_get_decorated_name(const diagnostic_logical_location *loc)
Definition libgdiagnostics.cc:1980
void diagnostic_execution_path_release(diagnostic_execution_path *path)
Definition libgdiagnostics.cc:1856
void diagnostic_add_fix_it_hint_insert_after(diagnostic *diag, const diagnostic_physical_location *loc, const char *addition)
Definition libgdiagnostics.cc:1779
void diagnostic_text_sink_set_source_printing_enabled(diagnostic_text_sink *text_sink, int value)
Definition libgdiagnostics.cc:1347
const diagnostic_physical_location * diagnostic_manager_new_location_from_file_and_line(diagnostic_manager *diag_mgr, const diagnostic_file *file, diagnostic_line_num_t linenum)
Definition libgdiagnostics.cc:1474
diagnostic_execution_path * diagnostic_manager_new_execution_path(diagnostic_manager *manager)
Definition libgdiagnostics.cc:1834
void diagnostic_take_execution_path(diagnostic *diag, diagnostic_execution_path *path)
Definition libgdiagnostics.cc:1844
#define LIBGDIAGNOSTICS_PARAM_CAN_BE_NULL(ARG_NUM)
Definition libgdiagnostics.h:50
int diagnostic_event_id
Definition libgdiagnostics.h:231
#define LIBGDIAGNOSTICS_PARAM_GCC_FORMAT_STRING(FMT_ARG_NUM, ARGS_ARG_NUM)
Definition libgdiagnostics.h:53
#define LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(ARG_NUM)
Definition libgdiagnostics.h:47
diagnostic_logical_location_kind_t
Definition libgdiagnostics.h:163
unsigned int diagnostic_line_num_t
Definition libgdiagnostics.h:148
diagnostic_sarif_version
Definition libgdiagnostics.h:90
diagnostic_colorize
Definition libgdiagnostics.h:81
unsigned int diagnostic_column_num_t
Definition libgdiagnostics.h:149
diagnostic_level
Definition libgdiagnostics.h:219
struct diagnostic diagnostic
Definition libgdiagnostics.h:216
logical_location_manager::key logical_location
Definition logical-location.h:173
Definition libgdiagnostics++.h:25
diagnostic_line_num_t line_num_t
Definition libgdiagnostics++.h:27
diagnostic_column_num_t column_num_t
Definition libgdiagnostics++.h:28
static void const char va_list ap
Definition read-md.cc:205
Definition libgdiagnostics.cc:846
Definition libgdiagnostics.cc:109
Definition libgdiagnostics.cc:166
Definition libgdiagnostics.cc:430
Definition libgdiagnostics.cc:142
Definition libgdiagnostics.cc:221
void add_location_with_label(const diagnostic_physical_location *loc, const char *text)
Definition libgdiagnostics.cc:954
void set_cwe(unsigned cwe_id)
Definition libgdiagnostics.cc:928
void set_location(const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:941
void take_execution_path(diagnostic_execution_path *path)
Definition libgdiagnostics.cc:986
void add_location(const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:947
void add_rule(const char *title, const char *url)
Definition libgdiagnostics.cc:933
void set_logical_location(const diagnostic_logical_location *logical_loc)
Definition libgdiagnostics.cc:966
Definition reload.cc:154
#define true
Definition system.h:887
#define false
Definition system.h:888
#define bool
Definition system.h:886