+/**
+ * Macro for fatal error messages.
+ *
+ * This macro expands to a fatal error message output with the location in the source code where the error
+ * occurred.
+ */
+#define EVAF_FATAL_ERROR(...) \
+ do { \
+ eVaf::Common::iLogger::instance()->write( \
+ eVaf::Common::iLogger::Fatal, \
+ eVaf::Common::iLogger::instance()->printf(__VA_ARGS__), \
+ 0, \
+ eVaf::Common::iLogger::instance()->printf("%s:%s:%d", __FILE__, __FUNCTION__, __LINE__) \
+ ); \
+ } while (0)
+
+/**
+ * Macro for error messages.
+ *
+ * This macro expands to an error message output with the location in the source code where the error
+ * occurred.
+ */
+#define EVAF_ERROR(...) \
+ do { \
+ eVaf::Common::iLogger::instance()->write( \
+ eVaf::Common::iLogger::Error, \
+ eVaf::Common::iLogger::instance()->printf(__VA_ARGS__), \
+ 0, \
+ eVaf::Common::iLogger::instance()->printf("%s:%s:%d", __FILE__, __FUNCTION__, __LINE__) \
+ ); \
+ } while (0)
+
+/**
+ * Macro for warning messages.
+ *
+ * This macro expands to a warning message output with the location in the source code where the warning
+ * occurred.
+ */
+#define EVAF_WARNING(...) \
+ do { \
+ eVaf::Common::iLogger::instance()->write( \
+ eVaf::Common::iLogger::Warning, \
+ eVaf::Common::iLogger::instance()->printf(__VA_ARGS__), \
+ 0, \
+ eVaf::Common::iLogger::instance()->printf("%s:%s:%d", __FILE__, __FUNCTION__, __LINE__) \
+ ); \
+ } while (0)
+
+/**
+ * Macro for info messages.
+ *
+ * This macro expands to an info message output with the location in the source code where the message
+ * is output.
+ */
+#define EVAF_INFO(...) \
+ do { \
+ eVaf::Common::iLogger::instance()->write( \
+ eVaf::Common::iLogger::Info, \
+ eVaf::Common::iLogger::instance()->printf(__VA_ARGS__), \
+ 0, \
+ eVaf::Common::iLogger::instance()->printf("%s:%s:%d", __FILE__, __FUNCTION__, __LINE__) \
+ ); \
+ } while (0)
+
+/**
+ * Macro for debug messages.
+ *
+ * This macro expands to a debug message output with the location in the source code where the message
+ * is output. All the debug messages are supressed when the NDEBUG directive is defined.
+ */
+#ifndef NDEBUG
+# define EVAF_DEBUG(...) \
+ do { \
+ eVaf::Common::iLogger::instance()->write( \
+ eVaf::Common::iLogger::Debug, \
+ eVaf::Common::iLogger::instance()->printf(__VA_ARGS__), \
+ 0, \
+ eVaf::Common::iLogger::instance()->printf("%s:%s:%d", __FILE__, __FUNCTION__, __LINE__) \
+ ); \
+ } while (0)
+#else
+# define EVAF_DEBUG(...) \
+ do { } while (0)
+#endif
+