ldc/tango/lib/compiler/llvmdc/util/console.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;