KaliVeda
Toolkit for HIC analysis
KVError.h
1 #pragma once
2 
3 #include "Varargs.h"
4 #include "TError.h"
5 #include "TClass.h"
6 #include <iostream>
7 
57 namespace KVError
58 {
63  template<typename UserClass>
65  {
66  void DoError(int level, const char *location, const char *fmt, va_list va) const
67  {
68  ::ErrorHandler(level, Form("%s::%s", UserClass::Class_Name(), location), fmt, va);
69  }
70  public:
71  void Info(const char* location, const char*fmt, va_list va) const
72  {
73  // colourised warnings (blue) !
74  fprintf(stderr, "%s", "\033[1;38;5;33m");
75  DoError(kInfo, location, fmt, va);
76  fprintf(stderr, "%s", "\033[0m");
77  }
78  void Warning(const char* location, const char*fmt, va_list va) const
79  {
80  // colourised warnings (orange) !
81  fprintf(stderr, "%s", "\033[1;38;5;214m");
82  DoError(kWarning, location, fmt, va);
83  fprintf(stderr, "%s", "\033[0m");
84  }
85  void Error(const char* location, const char*fmt, va_list va) const
86  {
87  // colourised errors (red) !
88  fprintf(stderr, "%s", "\033[1;38;5;9m");
89  DoError(kError, location, fmt, va);
90  fprintf(stderr, "%s", "\033[0m");
91  }
92  };
93 
94  template<typename UserClass>
95  std::enable_if_t<std::is_class_v<UserClass>,colour_error_handler<UserClass>>
96  make_handler(const UserClass&)
97  {
99  }
100 
101  template<typename UserClass>
102  std::enable_if_t<std::is_class_v<UserClass>,colour_error_handler<UserClass>>
103  make_handler(UserClass*)
104  {
106  }
107 
108  template<typename UserClass>
109  std::enable_if_t<std::is_class_v<UserClass>,colour_error_handler<UserClass>>
110  make_handler(const UserClass*)
111  {
113  }
114 
115  template<typename UserClass>
116  void Error(UserClass p, const char* location, const char* va_(fmt), ...)
117  {
118  auto q = make_handler(p);
119  va_list ap;
120  va_start(ap, va_(fmt));
121  q.Error(location, va_(fmt), ap);
122  va_end(ap);
123  }
124  template<typename UserClass>
125  void Warning(UserClass p, const char* location, const char* va_(fmt), ...)
126  {
127  auto q = make_handler(p);
128  va_list ap;
129  va_start(ap, va_(fmt));
130  q.Warning(location, va_(fmt), ap);
131  va_end(ap);
132  }
133  template<typename UserClass>
134  void Info(UserClass p, const char* location, const char* va_(fmt), ...)
135  {
136  auto q = make_handler(p);
137  va_list ap;
138  va_start(ap, va_(fmt));
139  q.Info(location, va_(fmt), ap);
140  va_end(ap);
141  }
142 }
winID h TVirtualViewer3D TVirtualGLPainter p
float * q
char * Form(const char *fmt,...)
#define va_(arg)
void Warning(const char *location, const char *fmt, va_list va) const
Definition: KVError.h:78
void Info(const char *location, const char *fmt, va_list va) const
Definition: KVError.h:71
void DoError(int level, const char *location, const char *fmt, va_list va) const
Definition: KVError.h:66
void Error(const char *location, const char *fmt, va_list va) const
Definition: KVError.h:85
Provides colourised versions of the standard ROOT informational/warning/error messages.
void Error(UserClass p, const char *location, const char *va_(fmt),...)
Definition: KVError.h:116
std::enable_if_t< std::is_class_v< UserClass >, colour_error_handler< UserClass > > make_handler(const UserClass &)
Definition: KVError.h:96
void Warning(UserClass p, const char *location, const char *va_(fmt),...)
Definition: KVError.h:125
void Info(UserClass p, const char *location, const char *va_(fmt),...)
Definition: KVError.h:134
const int kWarning
const int kInfo
const int kError