#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 lLogString_array_append(lLogString_array* array, lLogString* string) { 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++] = string; 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 = calloc(1, sizeof(lLogString)); str->len = strlen(temp_string); str->buf = malloc(str->len + 1); if (str->buf != NULL) { strcpy(str->buf, temp_string); } return str; }; int 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); return lLogString_array_append(&logger->history, MESSAGE); }