add timer pause and resume functionality

This commit is contained in:
2026-05-20 21:54:49 -05:00
parent a025ecdae4
commit e0b58dc1be
3 changed files with 53 additions and 5 deletions

45
LLog.c
View File

@@ -57,12 +57,53 @@ int create_timer(Logger* logger) {
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);
lTimer* timer = &logger->timers.items[timer_id];
timer->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);
lTimer* timer = &logger->timers.items[timer_id];
// next property will never be set to 0 unless it is uninitialized
if (timer->next != 0) {
stop_timer(logger, timer->next);
} else {
timer->time.end = time(NULL);
}
}
void pause_timer(Logger* logger, int timer_id) {
if (logger->timers.count < (timer_id + 1)) return;
lTimer* timer = &logger->timers.items[timer_id];
stop_timer(logger, timer_id);
timer->next = create_timer(logger);
}
void resume_timer(Logger* logger, int timer_id) {
if (logger->timers.count < (timer_id + 1)) return;
lTimer* timer = &logger->timers.items[timer_id];
if (timer->next != 0) {
resume_timer(logger, logger->timers.items[timer_id].next);
} else {
start_timer(logger, timer_id);
}
}
double get_elapsed_time(Logger* logger, int timer_id) {
if (timer_id != 0) if (0) {}
if (logger->timers.count < (timer_id + 1)) return 0.0f;
lTimer* timer = &logger->timers.items[timer_id];
double current_elapsed = difftime(timer->time.end, timer->time.start);
if (timer->next != 0) {
return get_elapsed_time(logger, timer->next) + current_elapsed;
}
return current_elapsed;
}
lLogString* lLogString_new(const char* fmt, ...) {