#ifndef threaded_log_h
#define threaded_log_h
-#include "types.h"
-
-extern char log_thread_prefix;
-extern int DEBUG_LEVEL;
+#include <string>
+#include <ostream>
struct locked_ostream {
std::ostream & s;
locked_ostream && _log_prefix(locked_ostream && f, const string & file, const string & func);
locked_ostream && _log_member(locked_ostream && f, const void *ptr);
+int _log_debug_level();
lock _log_lock();
#define LOG_NONMEMBER _log_prefix(locked_ostream{std::cerr, _log_lock()}, __FILE__, __func__)
#define LOG _log_member(LOG_NONMEMBER, (const void *)this)
-#define IF_LEVEL(level) if(DEBUG_LEVEL >= abs(level))
+#define IF_LEVEL(level) if(_log_debug_level() >= abs(level))
#endif