#ifndef LOG_H_ #define LOG_H_ #include #include #include #define LOG_ERROR(str) log_with_tag(stderr, __FILE__, __LINE__, "ERROR", (str)) #define LOG_ERRORF(fmt, ...) logf_with_tag(stderr, __FILE__, __LINE__, "ERROR", (fmt), __VA_ARGS__) #define LOG_FATAL(str) LOG_ERROR(str); exit(-1) #define LOG_FATALF(fmt, ...) LOG_ERRORF(fmt, __VA_ARGS__); exit(-1) #define LOG_FATAL_TODO(str) log_with_tag(stderr, __FILE__, __LINE__, "FATAL TODO", (str)); exit(-1) #define LOG_FATAL_TODOF(fmt, ...) logf_with_tag(stderr, __FILE__, __LINE__, "FATAL TODO", (fmt), __VA_ARGS__); exit(-1) void log_with_tag(FILE* out_file, char* file_name, size_t line, const char* tag, char* str); void logf_with_tag(FILE* out_file, char* file_name, size_t line, const char* tag, char* fmt, ...); #endif // LOG_H_