mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-12 22:14:54 +03:00
86 lines
2 KiB
D
86 lines
2 KiB
D
/*******************************************************************************
|
|
|
|
copyright: Copyright (c) 2004 Tango group. All rights reserved
|
|
|
|
license: BSD style: $(LICENSE)
|
|
|
|
version: Initial release: July 2006
|
|
|
|
|
|
Various low-level console oriented utilities
|
|
|
|
*******************************************************************************/
|
|
|
|
module util.console;
|
|
|
|
private import util.string;
|
|
|
|
version (Win32)
|
|
{
|
|
private extern (Windows) int GetStdHandle (int);
|
|
private extern (Windows) int WriteFile (int, char*, int, int*, void*);
|
|
}
|
|
|
|
else
|
|
|
|
version (Posix)
|
|
{
|
|
private extern (C) ptrdiff_t write (int, void*, size_t);
|
|
}
|
|
|
|
/+
|
|
// emit a char[] to the console. Note that Win32 does not handle utf8, but
|
|
// then neither does fprintf (stderr). This will handle redirection though.
|
|
// May need to remedy the utf8 issue
|
|
int console (char[] s)
|
|
{
|
|
version (Win32)
|
|
{
|
|
int count;
|
|
if (WriteFile (GetStdHandle(0xfffffff5), s.ptr, s.length, &count, null))
|
|
return count;
|
|
return -1;
|
|
}
|
|
else
|
|
version (Posix)
|
|
{
|
|
return write (2, s.ptr, s.length);
|
|
}
|
|
}
|
|
|
|
// emit an integer to the console
|
|
int console (uint i)
|
|
{
|
|
char[10] tmp = void;
|
|
|
|
return console (intToUtf8 (tmp, i));
|
|
}
|
|
+/
|
|
|
|
struct Console
|
|
{
|
|
Console opCall (char[] s)
|
|
{
|
|
version (Win32)
|
|
{
|
|
int count;
|
|
WriteFile (GetStdHandle(0xfffffff5), s.ptr, s.length, &count, null);
|
|
}
|
|
else
|
|
version (Posix)
|
|
{
|
|
write (2, s.ptr, s.length);
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
// emit an integer to the console
|
|
Console opCall (size_t i)
|
|
{
|
|
char[25] tmp = void;
|
|
|
|
return console (intToUtf8 (tmp, i));
|
|
}
|
|
}
|
|
|
|
Console console;
|