diff options
Diffstat (limited to 'src/printutils.cc')
-rw-r--r-- | src/printutils.cc | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/printutils.cc b/src/printutils.cc index 37092fa..a8192ca 100644 --- a/src/printutils.cc +++ b/src/printutils.cc @@ -3,13 +3,13 @@ #include <stdio.h> std::list<std::string> print_messages_stack; -OutputHandlerFunc *outputhandler = NULL; -void *outputhandler_data = NULL; +std::function<void(std::string)> default_outputhandler = [](std::string msg) { + fprintf(stderr, "%s\n", msg.c_str()); +}; +std::function<void(std::string)> outputhandler = default_outputhandler; -void set_output_handler(OutputHandlerFunc *newhandler, void *userdata) -{ +void set_output_handler(std::function<void(std::string)> newhandler) { outputhandler = newhandler; - outputhandler_data = userdata; } void print_messages_push() @@ -44,11 +44,7 @@ void PRINT(const std::string &msg) void PRINT_NOCACHE(const std::string &msg) { if (msg.empty()) return; - if (!outputhandler) { - fprintf(stderr, "%s\n", msg.c_str()); - } else { - outputhandler(msg, outputhandler_data); - } + outputhandler(msg); } std::string two_digit_exp_format( std::string doublestr ) |