Better print

This commit is contained in:
Baptiste Wicht 2013-11-09 21:27:55 +01:00
parent 843c95dd0c
commit b6317bbae1
4 changed files with 55 additions and 31 deletions

View File

@ -9,6 +9,7 @@
#define CONSOLE_H
#include "types.hpp"
#include "enable_if.hpp"
void set_column(long column);
long get_column();
@ -20,7 +21,12 @@ void wipeout();
void k_print(char key);
void k_print(const char* string);
void k_print(const char* string, uint64_t end);
void k_print(uint8_t number);
void k_print(uint16_t number);
void k_print(uint32_t number);
void k_print(uint64_t number);
void k_printf(const char* fmt, ...);
template<typename... Arguments>

View File

@ -8,7 +8,7 @@ template<class T>
struct enable_if<true, T> { typedef T type; };
template<bool B, class T = void>
struct dsable_if {};
struct disable_if {};
template<class T>
struct disable_if<false, T> { typedef T type; };

View File

@ -44,6 +44,44 @@ uint16_t make_vga_entry(char c, uint8_t color){
return c16 | color16 << 8;
}
template<typename N>
uint64_t digits(N number){
if(number < 10){
return 1;
}
uint64_t i = 0;
while(number != 0){
number /= 10;
++i;
}
return i;
}
template<int B, typename D>
void print_unsigned(D number){
if(number == 0){
k_print('0');
return;
}
char buffer[B];
int i = 0;
while(number != 0){
buffer[i++] = '0' + number % 10;
number /= 10;
}
--i;
for(; i >= 0; --i){
k_print(buffer[i]);
}
}
} //end of anonymous namespace
void set_column(long column){
@ -62,40 +100,20 @@ long get_line(){
return current_line;
}
uint64_t digits(uint64_t number){
if(number < 10){
return 1;
}
void k_print(uint8_t number){
print_unsigned<3>(number);
}
int i = 0;
void k_print(uint16_t number){
print_unsigned<5>(number);
}
while(number != 0){
number /= 10;
++i;
}
return i;
void k_print(uint32_t number){
print_unsigned<10>(number);
}
void k_print(uint64_t number){
if(number == 0){
k_print('0');
return;
}
char buffer[20];
int i = 0;
while(number != 0){
buffer[i++] = '0' + number % 10;
number /= 10;
}
--i;
for(; i >= 0; --i){
k_print(buffer[i]);
}
print_unsigned<20>(number);
}
void k_print(char key){

View File

@ -123,7 +123,7 @@ void fat32::ls(const disks::disk_descriptor& disk, const disks::partition_descri
k_print_line("File");
}
k_print_line(static_cast<uint64_t>(entry.file_size));
k_print_line(entry.file_size);
}
}
}