GNU Octave  4.4.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
Logger.cc
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 2011-2018 Michael Goffioul
4 
5 This file is part of Octave.
6 
7 Octave is free software: you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11 
12 Octave is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with Octave; see the file COPYING. If not, see
19 <https://www.gnu.org/licenses/>.
20 
21 */
22 
23 #if defined (HAVE_CONFIG_H)
24 # include "config.h"
25 #endif
26 
27 #include <QMutex>
28 #include <QMutexLocker>
29 #include <QProcessEnvironment>
30 
31 #include <cstdio>
32 
33 #include "Logger.h"
34 
35 namespace QtHandles
36 {
37 
38  Logger *Logger::s_instance = nullptr;
39  QMutex *Logger::s_mutex = nullptr;
40 
42  : m_debugEnabled (false)
43  {
44  QProcessEnvironment pe (QProcessEnvironment::systemEnvironment ());
45 
46  if (pe.value ("QTHANDLES_DEBUG", "0") != "0")
47  m_debugEnabled = true;
48  }
49 
51  { }
52 
53  Logger*
55  {
56  if (! s_instance)
57  {
58  s_instance = new Logger ();
59  s_mutex = new QMutex ();
60  }
61 
62  return s_instance;
63  }
64 
65 #define STATIC_LOGGER(fun) \
66  void Logger::fun (const char *fmt, ...) \
67  { \
68  QMutexLocker lock (s_mutex); \
69  va_list vl; \
70  va_start (vl, fmt); \
71  instance ()->fun ## V (fmt, vl); \
72  va_end (vl); \
73  }
74 
76 
77  void
78  Logger::debugV (const char *fmt, va_list arg)
79  {
80  if (m_debugEnabled)
81  {
82  vfprintf (stderr, fmt, arg);
83  fprintf (stderr, "\n");
84  }
85  }
86 
87 }
#define STATIC_LOGGER(fun)
Definition: Logger.cc:65
void debugV(const char *fmt, va_list arg)
Definition: Logger.cc:78
static Logger * instance(void)
Definition: Logger.cc:54
octave_value arg
Definition: pr-output.cc:3244
static bool debug
is false
Definition: cellfun.cc:400
static Logger * s_instance
Definition: Logger.h:41
static QMutex * s_mutex
Definition: Logger.h:42
bool m_debugEnabled
Definition: Logger.h:39