view lphobos/std/stdio.d @ 58:2c3cd3596187 trunk

[svn r62] Added support for TypeInfo _Array, _Function, _Pointer, _Delegate, _Enum Added initial support for CatExp aka 'a ~ b' Fixed global constant static arrays initialized with string literals Fixed casting any dynamic array to void* Fixed new expression with temporary storage Fixed alias declarations in function scope Fixed relational comparisons of pointers
author lindquist
date Thu, 25 Oct 2007 09:02:55 +0200
parents 77cdca8c210f
children 61615fa85940
line wrap: on
line source

module std.stdio;

import std.traits;

void _writef(T)(T t) {
  static if(is(T: Object)) _writef(t.toString()); else
  static if(is(T==char)) printf("%c", t); else
  static if(is(T: char[])) printf("%.*s", t.length, t.ptr); else
  static if(isArray!(T)) {
    _writef('[');
    if (t.length) _writef(t[0]);
    for (int i=1; i<t.length; ++i) { _writef(','); _writef(t[i]); }
    _writef(']');
  } else
  static if(is(T: int)) printf("%i", t); else
  static if(is(T: real)) printf("%f", t); else
  static assert(false, "Cannot print "~T.stringof);
}

void writef(T...)(T t) {
  foreach (v; t) _writef(v);
}
void writefln(T...)(T t) {
  writef(t, "\n");
}