mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-13 14:36:18 +03:00

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.
44 lines
889 B
D
44 lines
889 B
D
module std.stdio;
|
|
|
|
import std.traits;
|
|
|
|
void _writef(T)(T t) {
|
|
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 writefln(T...)(T t)
|
|
{
|
|
writef(t, '\n');
|
|
}
|