Minor code clean-up

This commit is contained in:
gingerBill
2019-07-28 18:44:50 +01:00
parent 77734ea967
commit 162c87b1b8
2 changed files with 36 additions and 33 deletions
+36 -31
View File
@@ -11,30 +11,30 @@ Level :: enum {
} }
Option :: enum { Option :: enum {
Level, Level,
Date, Date,
Time, Time,
Short_File_Path, Short_File_Path,
Long_File_Path, Long_File_Path,
Line, Line,
Procedure, Procedure,
Terminal_Color Terminal_Color
} }
Options :: bit_set[Option]; Options :: bit_set[Option];
Full_Timestamp_Opts :: Options{ Full_Timestamp_Opts :: Options{
Option.Date, .Date,
Option.Time .Time
}; };
Location_Header_Opts :: Options{ Location_Header_Opts :: Options{
Option.Short_File_Path, .Short_File_Path,
Option.Long_File_Path, .Long_File_Path,
Option.Line, .Line,
Option.Procedure, .Procedure,
}; };
Location_File_Opts :: Options{ Location_File_Opts :: Options{
Option.Short_File_Path, .Short_File_Path,
Option.Long_File_Path .Long_File_Path
}; };
Logger_Proc :: #type proc(data: rawptr, level: Level, text: string, options: Options, location := #caller_location); Logger_Proc :: #type proc(data: rawptr, level: Level, text: string, options: Options, location := #caller_location);
@@ -42,30 +42,34 @@ Logger_Proc :: #type proc(data: rawptr, level: Level, text: string, options: Opt
Logger :: struct { Logger :: struct {
procedure: Logger_Proc, procedure: Logger_Proc,
data: rawptr, data: rawptr,
options: Options, options: Options,
} }
Multi_Logger_Data :: struct { Multi_Logger_Data :: struct {
loggers : []Logger, loggers : []Logger,
} }
create_multi_logger :: proc(logs: ..Logger) -> Logger { create_multi_logger :: proc(logs: ..Logger) -> Logger {
data := new(Multi_Logger_Data); data := new(Multi_Logger_Data);
data.loggers = make([]Logger, len(logs)); data.loggers = make([]Logger, len(logs));
copy(data.loggers, logs); copy(data.loggers, logs);
return Logger{multi_logger_proc, data, nil}; return Logger{multi_logger_proc, data, nil};
} }
destroy_multi_logger ::proc(log : ^Logger) { destroy_multi_logger :: proc(log : ^Logger) {
free(log.data); free(log.data);
log^ = nil_logger(); log^ = nil_logger();
} }
multi_logger_proc :: proc(logger_data: rawptr, level: Level, text: string, multi_logger_proc :: proc(logger_data: rawptr, level: Level, text: string,
options: Options, location := #caller_location) { options: Options, location := #caller_location) {
data := cast(^Multi_Logger_Data)logger_data; data := cast(^Multi_Logger_Data)logger_data;
if data.loggers == nil || len(data.loggers) == 0 do return; if data.loggers == nil || len(data.loggers) == 0 {
for log in data.loggers do log.procedure(log.data, level, text, log.options, location); return;
}
for log in data.loggers {
log.procedure(log.data, level, text, log.options, location);
}
} }
nil_logger_proc :: proc(data: rawptr, level: Level, text: string, options: Options, location := #caller_location) { nil_logger_proc :: proc(data: rawptr, level: Level, text: string, options: Options, location := #caller_location) {
@@ -76,6 +80,7 @@ nil_logger :: proc() -> Logger {
return Logger{nil_logger_proc, nil, nil}; return Logger{nil_logger_proc, nil, nil};
} }
// TODO(bill): Should these be redesigned so that they are do not rely upon `package fmt`?
debug :: proc(fmt_str : string, args : ..any, location := #caller_location) do logf(level=Level.Debug, fmt_str=fmt_str, args=args, location=location); debug :: proc(fmt_str : string, args : ..any, location := #caller_location) do logf(level=Level.Debug, fmt_str=fmt_str, args=args, location=location);
info :: proc(fmt_str : string, args : ..any, location := #caller_location) do logf(level=Level.Info, fmt_str=fmt_str, args=args, location=location); info :: proc(fmt_str : string, args : ..any, location := #caller_location) do logf(level=Level.Info, fmt_str=fmt_str, args=args, location=location);
warn :: proc(fmt_str : string, args : ..any, location := #caller_location) do logf(level=Level.Warning, fmt_str=fmt_str, args=args, location=location); warn :: proc(fmt_str : string, args : ..any, location := #caller_location) do logf(level=Level.Warning, fmt_str=fmt_str, args=args, location=location);
@@ -83,7 +88,7 @@ error :: proc(fmt_str : string, args : ..any, location := #caller_location) do l
fatal :: proc(fmt_str : string, args : ..any, location := #caller_location) do logf(level=Level.Fatal, fmt_str=fmt_str, args=args, location=location); fatal :: proc(fmt_str : string, args : ..any, location := #caller_location) do logf(level=Level.Fatal, fmt_str=fmt_str, args=args, location=location);
logf :: proc(level : Level, fmt_str : string, args : ..any, location := #caller_location) { logf :: proc(level : Level, fmt_str : string, args : ..any, location := #caller_location) {
logger := context.logger; logger := context.logger;
str := len(args) > 0 ? fmt.tprintf(fmt_str, ..args) : fmt.tprint(fmt_str); //NOTE(Hoej): While tprint isn't thread-safe, no logging is. str := len(args) > 0 ? fmt.tprintf(fmt_str, ..args) : fmt.tprint(fmt_str); //NOTE(Hoej): While tprint isn't thread-safe, no logging is.
logger.procedure(logger.data, level, str, logger.options, location); logger.procedure(logger.data, level, str, logger.options, location);
} }
-2
View File
@@ -1,7 +1,5 @@
package mem package mem
nil_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, nil_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
size, alignment: int, size, alignment: int,
old_memory: rawptr, old_size: int, flags: u64 = 0, loc := #caller_location) -> rawptr { old_memory: rawptr, old_size: int, flags: u64 = 0, loc := #caller_location) -> rawptr {