gamescope/src/log.hpp

35 lines
923 B
C++
Raw Normal View History

2021-08-25 15:20:11 +00:00
#pragma once
#ifdef __GNUC__
#define ATTRIB_PRINTF(start, end) __attribute__((format(printf, start, end)))
#else
#define ATTRIB_PRINTF(start, end)
#endif
enum LogPriority {
LOG_SILENT,
LOG_ERROR,
2021-08-25 15:20:11 +00:00
LOG_INFO,
LOG_DEBUG,
};
class LogScope {
const char *name;
enum LogPriority priority;
bool has(enum LogPriority priority);
2021-08-25 15:20:11 +00:00
void vprintf(enum LogPriority priority, const char *fmt, va_list args) ATTRIB_PRINTF(3, 0);
void vlogf(enum LogPriority priority, const char *fmt, va_list args) ATTRIB_PRINTF(3, 0);
2021-08-25 16:16:44 +00:00
void logf(enum LogPriority priority, const char *fmt, ...) ATTRIB_PRINTF(3, 4);
2021-08-25 15:20:11 +00:00
public:
LogScope(const char *name);
LogScope(const char *name, enum LogPriority priority);
2021-08-25 16:09:39 +00:00
2021-08-25 15:20:11 +00:00
void errorf(const char *fmt, ...) ATTRIB_PRINTF(2, 3);
void infof(const char *fmt, ...) ATTRIB_PRINTF(2, 3);
void debugf(const char *fmt, ...) ATTRIB_PRINTF(2, 3);
void errorf_errno(const char *fmt, ...) ATTRIB_PRINTF(2, 3);
};