#include "include/LLog.h" #include #include #include #include "time.h" #include int timer_array_append(timer_array* array, lTimer timer) { if (array->count >= array->capacity) { if (array->capacity == 0) array->capacity = 8; else array->capacity *= 2; array->items = realloc(array->items, array->capacity * sizeof(*array->items)); } array->items[array->count++] = timer; return array->count - 1; } int create_timer(Logger* logger) { return timer_array_append(&logger->timers, (lTimer){}); } void start_timer(Logger* logger, int timer_id) { if (logger->timers.count < (timer_id + 1)) return; logger->timers.items[timer_id].time.start = time(NULL); } void stop_timer(Logger* logger, int timer_id) { if (logger->timers.count < (timer_id + 1)) return; logger->timers.items[timer_id].time.end = time(NULL); } lLogString lLogString_new(const char* fmt, ...) { va_list args; va_start(args, fmt); char temp_string[max_string_len]; vsnprintf(temp_string, max_string_len, fmt, args); va_end(args); lLogString str; str.len = strlen(temp_string); str.buf = malloc(str.len + 1); if (str.buf != NULL) { strcpy(str.buf, temp_string); } return str; }; void lLog(Logger logger, enum lLogLevel LOG_LEVEL, lLogString MESSAGE) { char* LOG_LEVEL_STRING = LOG_LEVEL == 0 ? "INFO" : LOG_LEVEL == 1 ? "WARNING" : LOG_LEVEL == 2 ? "ERROR" : LOG_LEVEL == 3 ? "DEBUG" : "invalid_log_level"; printf("[%s]: %.*s\n", LOG_LEVEL_STRING, (int)MESSAGE.len, MESSAGE.buf); }