NEURON
logger.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <fmt/printf.h>
4 
5 extern int (*nrnpy_pr_stdoe_callback)(int, char*);
6 
7 template <typename... Args>
8 int Fprintf(FILE* stream, const char* fmt, Args... args) {
9  if (nrnpy_pr_stdoe_callback && (stream == stdout || stream == stderr)) {
10  std::string message = fmt::sprintf(fmt, std::forward<Args>(args)...);
11  nrnpy_pr_stdoe_callback(stream == stdout ? 1 : 2, message.data());
12  return message.size();
13  }
14  return fmt::fprintf(stream, fmt, args...);
15 }
16 
17 template <typename... Args>
18 int Printf(const char* fmt, Args... args) {
20  std::string message = fmt::sprintf(fmt, std::forward<Args>(args)...);
21  nrnpy_pr_stdoe_callback(1, message.data());
22  return message.size();
23  }
24  return fmt::printf(fmt, args...);
25 }
printf
Definition: extdef.h:5
int(* nrnpy_pr_stdoe_callback)(int, char *)
Definition: fileio.cpp:811
int Fprintf(FILE *stream, const char *fmt, Args... args)
Definition: logger.hpp:8
int Printf(const char *fmt, Args... args)
Definition: logger.hpp:18