Line data Source code
1 : /* Utilities for implementing "dump" functions for the diagnostics subsystem.
2 : Copyright (C) 2025-2026 Free Software Foundation, Inc.
3 : Contributed by David Malcolm <dmalcolm@redhat.com>.
4 :
5 : This file is part of GCC.
6 :
7 : GCC is free software; you can redistribute it and/or modify it under
8 : the terms of the GNU General Public License as published by the Free
9 : Software Foundation; either version 3, or (at your option) any later
10 : version.
11 :
12 : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13 : WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 : FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 : for more details.
16 :
17 : You should have received a copy of the GNU General Public License
18 : along with GCC; see the file COPYING3. If not see
19 : <http://www.gnu.org/licenses/>. */
20 :
21 :
22 : #include "config.h"
23 : #include "system.h"
24 : #include "coretypes.h"
25 : #include "diagnostics/logging.h"
26 :
27 : namespace diagnostics {
28 : namespace logging {
29 :
30 0 : logger::logger (output_file outfile)
31 0 : : m_outfile (std::move (outfile)),
32 0 : m_log_depth (0)
33 : {
34 0 : }
35 :
36 : void
37 0 : logger::log_printf (const char *fmt, ...)
38 : {
39 0 : emit_indent ();
40 :
41 0 : va_list ap;
42 0 : va_start (ap, fmt);
43 0 : vfprintf (get_stream (), fmt, ap);
44 0 : va_end (ap);
45 :
46 0 : emit_newline ();
47 0 : }
48 :
49 : void
50 0 : logger::log_bool_return (const char *function_name, bool retval)
51 : {
52 0 : log_printf ("%s <- %s",
53 : retval ? "true" : "false",
54 : function_name);
55 0 : }
56 :
57 : /* Emit indentation to OUTFILE for the start of a log line. */
58 :
59 : void
60 0 : logger::emit_indent () const
61 : {
62 0 : fprintf (get_stream (), "%*s", get_indent (), "");
63 0 : }
64 :
65 : void
66 0 : logger::emit_newline () const
67 : {
68 0 : fputc ('\n', get_stream ());
69 0 : }
70 :
71 : } // namespace logging {
72 : } // namespace diagnostics
|