mirror of
https://github.com/wichtounet/thor-os.git
synced 2025-09-18 09:04:49 -04:00
Better print
This commit is contained in:
parent
843c95dd0c
commit
b6317bbae1
@ -9,6 +9,7 @@
|
|||||||
#define CONSOLE_H
|
#define CONSOLE_H
|
||||||
|
|
||||||
#include "types.hpp"
|
#include "types.hpp"
|
||||||
|
#include "enable_if.hpp"
|
||||||
|
|
||||||
void set_column(long column);
|
void set_column(long column);
|
||||||
long get_column();
|
long get_column();
|
||||||
@ -20,7 +21,12 @@ void wipeout();
|
|||||||
void k_print(char key);
|
void k_print(char key);
|
||||||
void k_print(const char* string);
|
void k_print(const char* string);
|
||||||
void k_print(const char* string, uint64_t end);
|
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_print(uint64_t number);
|
||||||
|
|
||||||
void k_printf(const char* fmt, ...);
|
void k_printf(const char* fmt, ...);
|
||||||
|
|
||||||
template<typename... Arguments>
|
template<typename... Arguments>
|
||||||
|
@ -8,7 +8,7 @@ template<class T>
|
|||||||
struct enable_if<true, T> { typedef T type; };
|
struct enable_if<true, T> { typedef T type; };
|
||||||
|
|
||||||
template<bool B, class T = void>
|
template<bool B, class T = void>
|
||||||
struct dsable_if {};
|
struct disable_if {};
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
struct disable_if<false, T> { typedef T type; };
|
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;
|
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
|
} //end of anonymous namespace
|
||||||
|
|
||||||
void set_column(long column){
|
void set_column(long column){
|
||||||
@ -62,40 +100,20 @@ long get_line(){
|
|||||||
return current_line;
|
return current_line;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t digits(uint64_t number){
|
void k_print(uint8_t number){
|
||||||
if(number < 10){
|
print_unsigned<3>(number);
|
||||||
return 1;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
int i = 0;
|
void k_print(uint16_t number){
|
||||||
|
print_unsigned<5>(number);
|
||||||
|
}
|
||||||
|
|
||||||
while(number != 0){
|
void k_print(uint32_t number){
|
||||||
number /= 10;
|
print_unsigned<10>(number);
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void k_print(uint64_t number){
|
void k_print(uint64_t number){
|
||||||
if(number == 0){
|
print_unsigned<20>(number);
|
||||||
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]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void k_print(char key){
|
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("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