From af50f683ceaad7ca9e2a9bd14e6788b0b5b64d5a Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Sat, 9 Nov 2013 21:09:42 +0100 Subject: [PATCH] Improve k_print_line support --- kernel/include/console.hpp | 12 ++++++++++-- kernel/include/enable_if.hpp | 16 ++++++++++++++++ kernel/src/console.cpp | 12 ------------ 3 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 kernel/include/enable_if.hpp diff --git a/kernel/include/console.hpp b/kernel/include/console.hpp index 4be78fff..38754986 100644 --- a/kernel/include/console.hpp +++ b/kernel/include/console.hpp @@ -23,7 +23,15 @@ void k_print(const char* string, uint64_t end); void k_print(uint64_t number); void k_printf(const char* fmt, ...); -void k_print_line(); -void k_print_line(const char* string); +template +typename enable_if<(sizeof...(Arguments) == 0), void>::type k_print_line(Arguments... args){ + k_print('\n'); +} + +template +typename enable_if<(sizeof...(Arguments) > 0), void>::type k_print_line(Arguments... args){ + k_print(args...); + k_print('\n'); +} #endif diff --git a/kernel/include/enable_if.hpp b/kernel/include/enable_if.hpp new file mode 100644 index 00000000..43d44a2a --- /dev/null +++ b/kernel/include/enable_if.hpp @@ -0,0 +1,16 @@ +#ifndef ENABLE_IF_H +#define ENABLE_IF_H + +template +struct enable_if {}; + +template +struct enable_if { typedef T type; }; + +template +struct dsable_if {}; + +template +struct disable_if { typedef T type; }; + +#endif diff --git a/kernel/src/console.cpp b/kernel/src/console.cpp index ae7298a4..9b76b4d7 100644 --- a/kernel/src/console.cpp +++ b/kernel/src/console.cpp @@ -62,18 +62,6 @@ long get_line(){ return current_line; } -void k_print_line(){ - current_column = 0; - ++current_line; -} - -void k_print_line(const char* string){ - k_print(string); - - current_column = 0; - ++current_line; -} - uint64_t digits(uint64_t number){ if(number < 10){ return 1;