25 #include "casadi_common.hpp"
26 #include "casadi_logger.hpp"
28 #ifdef CASADI_WITH_THREAD
29 #ifdef CASADI_WITH_THREAD_MINGW
30 #include <mingw.mutex.h>
38 #ifdef CASADI_WITH_THREAD
39 std::mutex mutex_logger;
43 #ifdef CASADI_WITH_THREAD
44 std::lock_guard<std::mutex> lock(mutex_logger);
50 #ifdef CASADI_WITH_THREAD
51 std::lock_guard<std::mutex> lock(mutex_logger);
76 int casadi_printf(
const char *fmt, ...) {
82 size_t buf_sz =
sizeof(buf);
83 char* buf_dyn =
nullptr;
85 casadi_int n = vsnprintf(buf, buf_sz, fmt, args);
87 if (n>
static_cast<casadi_int
>(buf_sz)) {
88 buf_sz =
static_cast<size_t>(n+1);
89 buf_dyn =
new char[buf_sz];
90 n = vsnprintf(buf_dyn, buf_sz, fmt, args);
93 if (n>=0)
casadi::uout() << (buf_dyn ? buf_dyn : buf) << std::flush;
static void(* writeFun)(const char *s, std::streamsize num, bool error)
Print warnings, can be redefined.
static void FlushThreadSafe(bool error)
static void flushDefault(bool error)
By default, flush std::cout or std::cerr.
static void writeDefault(const char *s, std::streamsize num, bool error)
By default, print to std::cout or std::cerr.
static void WriteFunThreadSafe(const char *s, std::streamsize num, bool error)
static void(* flush)(bool error)
Flush buffers.