treelite
logging.h
1 
7 #ifndef TREELITE_LOGGING_H_
8 #define TREELITE_LOGGING_H_
9 
10 #include <dmlc/thread_local.h>
11 #include <iostream>
12 
13 namespace treelite {
14 
15 class LogCallbackRegistry {
16  public:
17  using Callback = void (*)(const char*);
18  LogCallbackRegistry()
19  : log_callback_([] (const char* msg) { std::cerr << msg << std::endl; }) {}
20  inline void Register(Callback log_callback) {
21  this->log_callback_ = log_callback;
22  }
23  inline Callback Get() const {
24  return log_callback_;
25  }
26  private:
27  Callback log_callback_;
28 };
29 
30 using LogCallbackRegistryStore = dmlc::ThreadLocalStore<LogCallbackRegistry>;
31 
32 } // namespace treelite
33 
34 #endif // TREELITE_LOGGING_H_