diff lphobos/std/stdio.d @ 94:61615fa85940 trunk

[svn r98] Added support for std.c.stdlib.alloca via pragma(LLVM_internal, "alloca"). Added support for array .sort and .reverse properties. Fixed some bugs with pointer arithmetic. Disabled some DMD AST optimizations that was messing things up, destroying valuable information. Added a KDevelop project file, this is what I use for coding LLVMDC now :) Other minor stuff.
author lindquist
date Mon, 12 Nov 2007 06:32:46 +0100
parents 2c3cd3596187
children 5825d48b27d1
line wrap: on
line diff
--- a/lphobos/std/stdio.d	Thu Nov 08 19:21:05 2007 +0100
+++ b/lphobos/std/stdio.d	Mon Nov 12 06:32:46 2007 +0100
@@ -3,23 +3,42 @@
 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);
+    static if (is(T == char)) {
+        printf("%c", t);
+    }
+    else static if (is(T : char[])) {
+        printf("%.*s", t.length, t.ptr);
+    }
+    else static if (is(T : long)) {
+        printf("%ld", t);
+    }
+    else static if (is(T : ulong)) {
+        printf("%lu", t);
+    }
+    else static if (is(T : real)) {
+        printf("%f", t);
+    }
+    else static if (is(T : Object)) {
+        _writef(t.toString());
+    }
+    else static if(isArray!(T)) {
+        _writef('[');
+        if (t.length) {
+            _writef(t[0]);
+            foreach(v; t[1..$]) {
+                _writef(','); _writef(v);
+            }
+        }
+        _writef(']');
+    }
+    else static assert(0, "Cannot writef:"~T.tostring);
 }
 
-void writef(T...)(T t) {
-  foreach (v; t) _writef(v);
+void writef(T...)(T t)
+{
+    foreach(v;t) _writef(v);
 }
-void writefln(T...)(T t) {
-  writef(t, "\n");
+void writefln(T...)(T t)
+{
+    writef(t, '\n');
 }