Convert hello.console to use a namespacing struct
This commit is contained in:
parent
bcec23ef89
commit
f904ec2b48
@ -7,7 +7,9 @@ import uefi;
|
||||
import hello.hello;
|
||||
import core.stdc.stdarg;
|
||||
|
||||
/**
|
||||
struct console
|
||||
{
|
||||
/**
|
||||
* Format a hexadecimal value to a string.
|
||||
*
|
||||
* @param s String buffer.
|
||||
@ -15,8 +17,8 @@ import core.stdc.stdarg;
|
||||
* @param ptr If true, always output all 16 digits, and separate the upper and
|
||||
* lower halves with an underscore.
|
||||
*/
|
||||
private size_t format_hex(CHAR16 * s, ulong v, bool ptr)
|
||||
{
|
||||
private static size_t format_hex(CHAR16 * s, ulong v, bool ptr)
|
||||
{
|
||||
string hex_chars = "0123456789ABCDEF";
|
||||
bool print = ptr;
|
||||
size_t si = 0u;
|
||||
@ -37,16 +39,16 @@ private size_t format_hex(CHAR16 * s, ulong v, bool ptr)
|
||||
}
|
||||
}
|
||||
return si;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Format a decimal value to a string.
|
||||
*
|
||||
* @param s String buffer.
|
||||
* @param v Value to format.
|
||||
*/
|
||||
private size_t format_dec(CHAR16 * s, ulong v)
|
||||
{
|
||||
private static size_t format_dec(CHAR16 * s, ulong v)
|
||||
{
|
||||
string dec_chars = "0123456789";
|
||||
bool print;
|
||||
char[20] buf;
|
||||
@ -62,16 +64,16 @@ private size_t format_dec(CHAR16 * s, ulong v)
|
||||
s[si] = buf[buf_i - si - 1u];
|
||||
}
|
||||
return buf_i;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Write a string to the console.
|
||||
*
|
||||
* @param s Format string.
|
||||
* @param args Variable arguments structure.
|
||||
*/
|
||||
void write(string s, va_list args)
|
||||
{
|
||||
public static void write(string s, va_list args)
|
||||
{
|
||||
__gshared static CHAR16[256] s16;
|
||||
size_t i = 0u;
|
||||
bool escape = false;
|
||||
@ -127,52 +129,53 @@ void write(string s, va_list args)
|
||||
}
|
||||
s16[i++] = 0u;
|
||||
st.ConOut.OutputString(st.ConOut, &s16[0]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Write a string to the console.
|
||||
*
|
||||
* @param s Format string.
|
||||
*/
|
||||
extern (C) void write(string s, ...)
|
||||
{
|
||||
public static extern (C) void write(string s, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, s);
|
||||
write(s, args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Write a string to the console.
|
||||
*
|
||||
* @param s Format string.
|
||||
*/
|
||||
extern (C) void writeln(string s, ...)
|
||||
{
|
||||
public static extern (C) void writeln(string s, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, s);
|
||||
write(s, args);
|
||||
write("\r\n", args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Write a message to press any key and wait for a key to be pressed.
|
||||
*/
|
||||
void wait_key()
|
||||
{
|
||||
public static void wait_key()
|
||||
{
|
||||
writeln("Press any key...");
|
||||
st.ConIn.Reset(st.ConIn, FALSE);
|
||||
EFI_INPUT_KEY key;
|
||||
while (st.ConIn.ReadKeyStroke(st.ConIn, &key) == EFI_NOT_READY)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Clear the console.
|
||||
*/
|
||||
void clear()
|
||||
{
|
||||
public static void clear()
|
||||
{
|
||||
st.ConOut.ClearScreen(st.ConOut);
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
module hello.hello;
|
||||
|
||||
import uefi;
|
||||
import console = hello.console;
|
||||
import hello.console;
|
||||
import hello.scratch;
|
||||
import hulk.bootinfo;
|
||||
import hulk.header;
|
||||
|
Loading…
x
Reference in New Issue
Block a user