Add basics for context-based Logger

This commit is contained in:
gingerBill
2018-10-20 13:02:30 +01:00
parent 72f4186b21
commit 099995e7dd
3 changed files with 39 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
package log
Level :: enum {
Debug,
Info,
Warning,
Error,
Fatal,
}
Option :: enum {
Level,
Time,
File,
Line,
Procedure,
}
Options :: bit_set[Option];
Logger_Proc :: #type proc(data: rawptr, level: Level, ident, text: string, options: Options, location := #caller_location);
Logger :: struct {
procedure: Logger_Proc,
data: rawptr,
}
nil_logger_proc :: proc(data: rawptr, level: Level, ident, text: string, options: Options, location := #caller_location) {
// Do nothing
}
nil_logger :: proc() -> Logger {
return Logger{nil_logger_proc, nil};
}
+4
View File
@@ -5,6 +5,7 @@ package runtime
import "core:os"
import "core:mem"
import "core:log"
// Naming Conventions:
// In general, Ada_Case for types and snake_case for values
@@ -193,6 +194,8 @@ Context :: struct {
assertion_failure_proc: Assertion_Failure_Proc,
logger: log.Logger,
user_data: any,
user_index: int,
@@ -321,6 +324,7 @@ __init_context :: proc "contextless" (c: ^Context) {
c.temp_allocator = mem.scratch_allocator(&global_scratch_allocator_data);
c.thread_id = os.current_thread_id();
c.assertion_failure_proc = default_assertion_failure_proc;
c.logger = log.nil_logger();
}
@(builtin)