mirror of
https://github.com/wichtounet/thor-os.git
synced 2025-09-17 00:26:44 -04:00
Better print
This commit is contained in:
parent
843c95dd0c
commit
b6317bbae1
@ -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>
|
||||
|
@ -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; };
|
||||
|
@ -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){
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user