Mercurial > projects > ldc
view tango/lib/compiler/llvmdc/util/console.d @ 203:e881c9b1c738 trunk
[svn r219] Fixed: the tango/lib/gc/basic garbage collector now compiles and links into an executable (change in tango/lib/llvmdc-posix.mak), closes #5 .
Changed: removed the crappy realloc based dynamic memory runtime and started moving over to DMD style runtime support, part of moving to real GC.
Fixed: dynamic arrays now use GC runtime for allocating memory.
Fixed: new expression now use GC for allocating memory.
Changed: revamped the dynamic array support routines related to dynamic memory.
Fixed: assertions no longer create exsessive allocas.
Changed: misc. minor cleanups.
author | lindquist |
---|---|
date | Tue, 13 May 2008 14:42:09 +0200 |
parents | e984333d6ac6 |
children |
line wrap: on
line source
/******************************************************************************* 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;