22 #ifndef __HERMES_COMMON_MIXINS_H
23 #define __HERMES_COMMON_MIXINS_H
50 typedef void(*callbackFn)(
const char*);
54 void set_verbose_output(
bool to_set);
57 bool get_verbose_output()
const;
61 void set_verbose_callback(callbackFn callback);
64 callbackFn get_verbose_callback()
const;
70 static void info(
const char* msg, ...);
71 static void warn(
const char* msg, ...);
72 static void error(
const char* msg, ...);
75 Loggable(
bool verbose_output =
false, callbackFn verbose_callback = NULL);
77 void info(
const char* msg, ...)
const;
78 void info_if(
bool cond,
const char* msg, ...)
const;
79 void warn(
const char* msg, ...)
const;
80 void warn_if(
bool cond,
const char* msg, ...)
const;
81 void error(
const char* msg, ...)
const;
82 void error_if(
bool cond,
const char* msg, ...)
const;
85 void hermes_fwrite(
const void* ptr,
size_t size,
size_t nitems, FILE* stream)
const;
86 void hermes_fread(
void* ptr,
size_t size,
size_t nitems, FILE* stream)
const;
93 bool write_console(
const char code,
const char* text)
const;
96 class HERMES_API HermesLogEventInfo
99 HermesLogEventInfo(
const char code,
const char* log_file,
const char* src_function,
const char* src_file,
const int src_line);
101 const char* log_file;
102 const char* src_function;
103 const char* src_file;
107 HermesLogEventInfo* hermes_build_log_info(
char event)
const;
113 pthread_mutexattr_t mutex_attr;
114 pthread_mutex_t mutex;
120 pthread_mutexattr_init(&mutex_attr);
121 pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE);
122 pthread_mutex_init(&mutex, &mutex_attr);
127 pthread_mutex_destroy(&mutex);
128 pthread_mutexattr_destroy(&mutex_attr);
132 void enter() { pthread_mutex_lock(&mutex); };
135 void leave() { pthread_mutex_unlock(&mutex); };
138 static LoggerMonitor logger_monitor;
140 static std::map<std::string, bool> logger_written;
149 void hermes_log_message(
const char code,
const char* msg)
const;
156 callbackFn verbose_callback;
182 const std::string& name()
const;
185 double accumulated()
const;
188 std::string accumulated_str()
const;
195 std::string last_str()
const;
198 #ifdef WIN32 //Windows
199 typedef uint64_t SysTime;
202 typedef timespec SysTime;
204 const std::string period_name;
209 SysTime get_time()
const;
210 double period_in_seconds(
const SysTime& begin,
const SysTime& end)
const;
211 std::string to_string(
const double time)
const;
220 void set_global_integration_order(
unsigned int order);
221 bool global_integration_order_set;
222 unsigned int global_integration_order;
232 virtual void set_time(
double time);
233 virtual void set_time_step(
double time_step);
244 virtual void on_initialization();
245 virtual void on_step_begin();
246 virtual void on_step_end();
247 virtual void on_finish();