changeset 362:5b585873fec2

remove TANGOSVN for 0.99.8
author Frank Benoit <benoit@tionex.de>
date Sat, 04 Apr 2009 21:14:54 +0200
parents fd2409fb852e
children 5f6d9bb33a53
files dwt/dwthelper/InflaterInputStream.d dwt/dwthelper/utils.d dwt/dwthelper/utils.d.orig
diffstat 3 files changed, 8 insertions(+), 1067 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/dwthelper/InflaterInputStream.d	Tue Jan 27 10:15:27 2009 +0100
+++ b/dwt/dwthelper/InflaterInputStream.d	Sat Apr 04 21:14:54 2009 +0200
@@ -12,11 +12,7 @@
         pragma(link,"zlib");
     }
 }
-version(TANGOSVN){
-    import tango.io.device.Conduit;
-} else {
-    import tango.io.Conduit;
-}
+import tango.io.device.Conduit;
 
 class InputStreamWrapper : tango.io.model.IConduit.InputStream {
 
--- a/dwt/dwthelper/utils.d	Tue Jan 27 10:15:27 2009 +0100
+++ b/dwt/dwthelper/utils.d	Sat Apr 04 21:14:54 2009 +0200
@@ -59,6 +59,11 @@
     public override hash_t toHash(){
         return (typeid(T[])).getHash(&array);
     }
+    static if( is( T == char[] )){
+        public override char[] toString(){
+            return array;
+        }
+    }
 }
 
 class ValueWrapperT(T) : ValueWrapper {
@@ -482,8 +487,8 @@
     return res.length;
 }
 
-alias tango.text.convert.Utf.toString16 toString16;
-alias tango.text.convert.Utf.toString toString;
+//alias tango.text.convert.Utf.toString16 toString16;
+//alias tango.text.convert.Utf.toString toString;
 
 int getRelativeCodePointOffset( String str, int startIndex, int searchRelCp ){
     return getAbsoluteCodePointOffset( str, startIndex, searchRelCp ) - startIndex;
--- a/dwt/dwthelper/utils.d.orig	Tue Jan 27 10:15:27 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1060 +0,0 @@
-/**
- * Authors: Frank Benoit <keinfarbton@googlemail.com>
- */
-module dwt.dwthelper.utils;
-
-public import dwt.dwthelper.System;
-public import Math = tango.math.Math;
-
-public import tango.core.Exception : IllegalArgumentException, IOException;
-
-import tango.io.Stdout;
-import tango.io.Print;
-static import tango.stdc.stringz;
-static import tango.text.Util;
-static import tango.text.Text;
-import tango.text.Unicode;
-import tango.text.convert.Utf;
-import tango.core.Exception;
-import tango.stdc.stdlib : exit;
-
-import tango.util.log.Trace;
-import tango.text.UnicodeData;
-static import tango.util.collection.model.Seq;
-
-alias char[] String;
-alias tango.text.Text.Text!(char) StringBuffer;
-
-void implMissing( String file, uint line ){
-    Stderr.formatln( "implementation missing in file {} line {}", file, line );
-    Stderr.formatln( "exiting ..." );
-    exit(1);
-}
-
-abstract class ArrayWrapper{
-}
-abstract class ValueWrapper{
-}
-
-class ArrayWrapperT(T) : ArrayWrapper {
-    public T[] array;
-    public this( T[] data ){
-        array = data;
-    }
-    public override int opEquals( Object o ){
-        if( auto other = cast(ArrayWrapperT!(T))o){
-            return array == other.array;
-        }
-        return false;
-    }
-    public override hash_t toHash(){
-        return (typeid(T[])).getHash(&array);
-    }
-}
-
-class ValueWrapperT(T) : ValueWrapper {
-    public T value;
-    public this( T data ){
-        value = data;
-    }
-    static if( is(T==class) || is(T==interface)){
-        public int opEquals( Object other ){
-            if( auto o = cast(ValueWrapperT!(T))other ){
-                return value == o.value;
-            }
-            if( auto o = cast(T)other ){
-                if( value is o ){
-                    return true;
-                }
-                if( value is null || o is null ){
-                    return false;
-                }
-                return value == o;
-            }
-            return false;
-        }
-    }
-    else{
-        public int opEquals( Object other ){
-            if( auto o = cast(ValueWrapperT!(T))other ){
-                return value == o.value;
-            }
-            return false;
-        }
-        public int opEquals( T other ){
-            return value == other;
-        }
-    }
-    public override hash_t toHash(){
-        return (typeid(T)).getHash(&value);
-    }
-}
-
-class Boolean : ValueWrapperT!(bool) {
-    public static Boolean TRUE;
-    public static Boolean FALSE;
-
-    static this(){
-        TRUE  = new Boolean(true);
-        FALSE = new Boolean(false);
-    }
-    public this( bool v ){
-        super(v);
-    }
-
-    alias ValueWrapperT!(bool).opEquals opEquals;
-    public int opEquals( int other ){
-        return value == ( other !is 0 );
-    }
-    public int opEquals( Object other ){
-        if( auto o = cast(Boolean)other ){
-            return value == o.value;
-        }
-        return false;
-    }
-    public bool booleanValue(){
-        return value;
-    }
-    public static Boolean valueOf( String s ){
-        if( s == "yes" || s == "true" ){
-            return TRUE;
-        }
-        return FALSE;
-    }
-    public static Boolean valueOf( bool b ){
-        return b ? TRUE : FALSE;
-    }
-}
-
-alias Boolean    ValueWrapperBool;
-
-
-class Byte : ValueWrapperT!(byte) {
-    public static byte parseByte( String s ){
-        try{
-            int res = tango.text.convert.Integer.parse( s );
-            if( res < byte.min || res > byte.max ){
-                throw new NumberFormatException( "out of range" );
-            }
-            return res;
-        }
-        catch( IllegalArgumentException e ){
-            throw new NumberFormatException( e );
-        }
-    }
-    this( byte value ){
-        super( value );
-    }
-}
-alias Byte ValueWrapperByte;
-
-
-class Integer : ValueWrapperT!(int) {
-
-    public static const int MIN_VALUE = 0x80000000;
-    public static const int MAX_VALUE = 0x7fffffff;
-    public static const int SIZE = 32;
-
-    public this ( int value ){
-        super( value );
-    }
-
-    public this ( String s ){
-        super(parseInt(s));
-    }
-
-    public static String toString( int i, int radix ){
-        switch( radix ){
-        case 2:
-            return toBinaryString(i);
-        case 8:
-            return toOctalString(i);
-        case 10:
-            return toString(i);
-        case 16:
-            return toHexString(i);
-        default:
-            implMissing( __FILE__, __LINE__ );
-            return null;
-        }
-    }
-
-    public static String toHexString( int i ){
-        return tango.text.convert.Integer.toString(i, "x" );
-    }
-
-    public static String toOctalString( int i ){
-        return tango.text.convert.Integer.toString(i, "o" );
-    }
-
-    public static String toBinaryString( int i ){
-        return tango.text.convert.Integer.toString(i, "b" );
-    }
-
-    public static String toString( int i ){
-        return tango.text.convert.Integer.toString(i);
-    }
-
-    public static int parseInt( String s, int radix ){
-        try{
-            return tango.text.convert.Integer.toLong( s, radix );
-        }
-        catch( IllegalArgumentException e ){
-            throw new NumberFormatException( e );
-        }
-    }
-
-    public static int parseInt( String s ){
-        try{
-            return tango.text.convert.Integer.toLong( s );
-        }
-        catch( IllegalArgumentException e ){
-            throw new NumberFormatException( e );
-        }
-    }
-
-    public static Integer valueOf( String s, int radix ){
-        implMissing( __FILE__, __LINE__ );
-        return null;
-    }
-
-    public static Integer valueOf( String s ){
-        return valueOf( parseInt(s));
-    }
-
-    public static Integer valueOf( int i ){
-        return new Integer(i);
-    }
-
-    public byte byteValue(){
-        return cast(byte)value;
-    }
-
-    public short shortValue(){
-        return cast(short)value;
-    }
-
-    public int intValue(){
-        return value;
-    }
-
-    public long longValue(){
-        return cast(long)value;
-    }
-
-    public float floatValue(){
-        return cast(float)value;
-    }
-
-    public double doubleValue(){
-        return cast(double)value;
-    }
-
-    public override  hash_t toHash(){
-        return intValue();
-    }
-
-    public override String toString(){
-        return tango.text.convert.Integer.toString( value );
-    }
-}
-alias Integer ValueWrapperInt;
-
-class Double : ValueWrapperT!(double) {
-    public static double MAX_VALUE = double.max;
-    public static double MIN_VALUE = double.min;
-    this( double value ){
-        super(value);
-    }
-    this( String str ){
-        implMissing( __FILE__, __LINE__ );
-        super(0.0);
-    }
-    public double doubleValue(){
-        return value;
-    }
-    public static String toString( double value ){
-        implMissing( __FILE__, __LINE__ );
-        return null;
-    }
-}
-
-class Float : ValueWrapperT!(float) {
-
-    public static float POSITIVE_INFINITY = (1.0f / 0.0f);
-    public static float NEGATIVE_INFINITY = ((-1.0f) / 0.0f);
-    public static float NaN = (0.0f / 0.0f);
-    public static float MAX_VALUE = 3.4028235e+38f;
-    public static float MIN_VALUE = 1.4e-45f;
-    public static int SIZE = 32;
-
-    this( float value ){
-        super(value);
-    }
-    this( String str ){
-        implMissing( __FILE__, __LINE__ );
-        super(0.0);
-    }
-    public float floatValue(){
-        return value;
-    }
-    public static String toString( float value ){
-        implMissing( __FILE__, __LINE__ );
-        return null;
-    }
-    public static float parseFloat( String s ){
-        try{
-            return tango.text.convert.Float.toFloat( s );
-        }
-        catch( IllegalArgumentException e ){
-            throw new NumberFormatException( e );
-        }
-    }
-
-}
-class Long : ValueWrapperT!(long) {
-    public static const long MIN_VALUE = long.min;
-    public static const long MAX_VALUE = long.max;
-    this( long value ){
-        super(value);
-    }
-    this( String str ){
-        implMissing( __FILE__, __LINE__ );
-        super(0);
-    }
-    public long longValue(){
-        return value;
-    }
-    public static long parseLong(String s){
-        implMissing( __FILE__, __LINE__ );
-        return 0;
-    }
-    public static String toString( double value ){
-        implMissing( __FILE__, __LINE__ );
-        return null;
-    }
-}
-alias Long ValueWrapperLong;
-
-
-// alias ValueWrapperT!(int)     ValueWrapperInt;
-
-alias ArrayWrapperT!(byte)    ArrayWrapperByte;
-alias ArrayWrapperT!(int)     ArrayWrapperInt;
-alias ArrayWrapperT!(Object)  ArrayWrapperObject;
-alias ArrayWrapperT!(char)    ArrayWrapperString;
-alias ArrayWrapperT!(String)  ArrayWrapperString2;
-
-Object[] StringArrayToObjectArray( String[] strs ){
-    Object[] res = new Object[strs.length];
-    foreach( idx, str; strs ){
-        res[idx] = new ArrayWrapperString(str);
-    }
-    return res;
-}
-int codepointIndexToIndex( String str, int cpIndex ){
-    int cps = cpIndex;
-    int res = 0;
-    while( cps > 0 ){
-        cps--;
-        if( str[res] < 0x80 ){
-            res+=1;
-        }
-        else if( str[res] < 0xE0 ){
-            res+=2;
-        }
-        else if( str[res] & 0xF0 ){
-            res+=3;
-        }
-        else{
-            res+=4;
-        }
-    }
-    return res;
-}
-
-/++
- +
- +/
-int indexToCodepointIndex( String str, int index ){
-    if( index < 0 ) return index;
-    int i = 0;
-    int res = 0;
-    while( i < index ){
-        if( i >= str.length ){
-            break;
-        }
-        if( str[i] < 0x80 ){
-            i+=1;
-        }
-        else if( str[i] < 0xE0 ){
-            i+=2;
-        }
-        else if( str[i] & 0xF0 ){
-            i+=3;
-        }
-        else{
-            i+=4;
-        }
-        res++;
-    }
-    return res;
-}
-
-/++
- + Get that String, that contains the next codepoint of a String.
- +/
-String firstCodePointStr( String str, out int consumed ){
-    dchar[1] buf;
-    uint ate;
-    dchar[] res = str.toString32( buf, &ate );
-    consumed = ate;
-    return str[ 0 .. ate ];
-}
-
-/++
- + Get first codepoint of a String. If an offset is needed, simply use a slice:
- + ---
- + dchar res = str[ offset .. $ ].firstCodePoint();
- + ---
- +/
-dchar firstCodePoint( String str ){
-    int dummy;
-    return firstCodePoint( str, dummy );
-}
-dchar firstCodePoint( String str, out int consumed ){
-    dchar[1] buf;
-    uint ate;
-    dchar[] res = str.toString32( buf, &ate );
-    consumed = ate;
-    if( ate is 0 || res.length is 0 ){
-        Trace.formatln( "dwthelper.utils {}: str.length={} str={:X2}", __LINE__, str.length, cast(ubyte[])str );
-    }
-    assert( ate > 0 );
-    assert( res.length is 1 );
-    return res[0];
-}
-
-String dcharToString( dchar key ){
-    dchar[1] buf;
-    buf[0] = key;
-    return tango.text.convert.Utf.toString( buf );
-}
-
-int codepointCount( String str ){
-    scope dchar[] buf = new dchar[]( str.length );
-    uint ate;
-    dchar[] res = tango.text.convert.Utf.toString32( str, buf, &ate );
-    assert( ate is str.length );
-    return res.length;
-}
-
-alias tango.text.convert.Utf.toString16 toString16;
-alias tango.text.convert.Utf.toString toString;
-
-int length( String str ){
-    return str.length;
-}
-
-int getRelativeCodePointOffset( String str, int startIndex, int searchRelCp ){
-    int ignore;
-    int i = startIndex;
-    if( searchRelCp > 0 ){
-        while( searchRelCp !is 0 ){
-
-            if( ( i < str.length )
-                && ( str[i] & 0x80 ) is 0x00 )
-            {
-                i+=1;
-            }
-            else if( ( i+1 < str.length )
-                && (( str[i+1] & 0xC0 ) is 0x80 )
-                && (( str[i  ] & 0xE0 ) is 0xC0 ))
-            {
-                i+=2;
-            }
-            else if( ( i+2 < str.length )
-                && (( str[i+2] & 0xC0 ) is 0x80 )
-                && (( str[i+1] & 0xC0 ) is 0x80 )
-                && (( str[i  ] & 0xF0 ) is 0xE0 ))
-            {
-                i+=3;
-            }
-            else if(( i+3 < str.length )
-                && (( str[i+3] & 0xC0 ) is 0x80 )
-                && (( str[i+2] & 0xC0 ) is 0x80 )
-                && (( str[i+1] & 0xC0 ) is 0x80 )
-                && (( str[i  ] & 0xF8 ) is 0xF0 ))
-            {
-                i+=4;
-            }
-            else{
-                Trace.formatln( "invalid utf8 characters:  {:X2}", cast(ubyte[]) str );
-                tango.text.convert.Utf.onUnicodeError( "invalid utf8 input", i );
-            }
-            searchRelCp--;
-        }
-    }
-    else if( searchRelCp < 0 ){
-        while( searchRelCp !is 0 ){
-            do{
-                i--;
-                if( i < 0 ){
-                    return -1;
-                    //Trace.formatln( "dwthelper.utils getRelativeCodePointOffset {}: str={}, startIndex={}, searchRelCp={}", __LINE__, str, startIndex, searchRelCp );
-                    //tango.text.convert.Utf.onUnicodeError( "invalid utf8 input", i );
-                }
-            } while(( str[i] & 0xC0 ) is 0x80 );
-            searchRelCp++;
-        }
-    }
-    return i - startIndex;
-}
-dchar getRelativeCodePoint( String str, int startIndex, int searchRelCp, out int relIndex ){
-    relIndex = getRelativeCodePointOffset( str, startIndex, searchRelCp );
-    int ignore;
-    return firstCodePoint( str[ startIndex+relIndex .. $ ], ignore );
-}
-
-int utf8AdjustOffset( String str, int offset ){
-    if( str.length <= offset || offset <= 0 ){
-        return offset;
-    }
-    while(( str[offset] & 0xC0 ) is 0x80 ){
-        offset--;
-    }
-    return offset;
-}
-int utf8OffsetIncr( String str, int offset ){
-    int res = offset +1;
-    if( str.length <= res || res <= 0 ){
-        return res;
-    }
-    int tries = 4;
-    while(( str[res] & 0xC0 ) is 0x80 ){
-        res++;
-        assert( tries-- > 0 );
-    }
-    return res;
-}
-int utf8OffsetDecr( String str, int offset ){
-    int res = offset-1;
-    if( str.length <= res || res <= 0 ){
-        return res;
-    }
-    int tries = 4;
-    while(( str[res] & 0xC0 ) is 0x80 ){
-        res--;
-        assert( tries-- > 0 );
-    }
-    Trace.formatln( "utf8OffsetDecr {}->{}", offset, res );
-    Trace.memory( str );
-    return res;
-}
-
-bool CharacterIsDefined( dchar ch ){
-    return (ch in tango.text.UnicodeData.unicodeData) !is null;
-}
-dchar CharacterFirstToLower( String str ){
-    int consumed;
-    return CharacterFirstToLower( str, consumed );
-}
-dchar CharacterFirstToLower( String str, out int consumed ){
-    dchar[1] buf;
-    buf[0] = firstCodePoint( str, consumed );
-    dchar[] r = tango.text.Unicode.toLower( buf );
-    return r[0];
-}
-
-dchar CharacterToLower( dchar c ){
-    dchar[] r = tango.text.Unicode.toLower( [c] );
-    return r[0];
-}
-dchar CharacterToUpper( dchar c ){
-    dchar[] r = tango.text.Unicode.toUpper( [c] );
-    return r[0];
-}
-bool CharacterIsWhitespace( dchar c ){
-    return tango.text.Unicode.isWhitespace( c );
-}
-bool CharacterIsDigit( dchar c ){
-    return tango.text.Unicode.isDigit( c );
-}
-bool CharacterIsLetter( dchar c ){
-    return tango.text.Unicode.isLetter( c );
-}
-public String toUpperCase( String str ){
-    return tango.text.Unicode.toUpper( str );
-}
-
-public int indexOf( String str, char searched ){
-    int res = tango.text.Util.locate( str, searched );
-    if( res is str.length ) res = -1;
-    return res;
-}
-
-public int indexOf( String str, char searched, int startpos ){
-    int res = tango.text.Util.locate( str, searched, startpos );
-    if( res is str.length ) res = -1;
-    return res;
-}
-
-public int indexOf(String str, String ch){
-    return indexOf( str, ch, 0 );
-}
-
-public int indexOf(String str, String ch, int start){
-    int res = tango.text.Util.locatePattern( str, ch, start );
-    if( res is str.length ) res = -1;
-    return res;
-}
-
-public int lastIndexOf(String str, char ch){
-    return lastIndexOf( str, ch, str.length );
-}
-public int lastIndexOf(String str, char ch, int formIndex){
-    int res = tango.text.Util.locatePrior( str, ch, formIndex );
-    if( res is str.length ) res = -1;
-    return res;
-}
-public int lastIndexOf(String str, String ch ){
-    return lastIndexOf( str, ch, str.length );
-}
-public int lastIndexOf(String str, String ch, int start ){
-    int res = tango.text.Util.locatePatternPrior( str, ch, start );
-    if( res is str.length ) res = -1;
-    return res;
-}
-
-public String replace( String str, char from, char to ){
-    return tango.text.Util.replace( str.dup, from, to );
-}
-
-public String substring( String str, int start ){
-    return str[ start .. $ ].dup;
-}
-
-public String substring( String str, int start, int end ){
-    return str[ start .. end ].dup;
-}
-
-public wchar[] substring( wchar[] str, int start ){
-    return str[ start .. $ ].dup;
-}
-
-public wchar[] substring( wchar[] str, int start, int end ){
-    return str[ start .. end ].dup;
-}
-
-public char charAt( String str, int pos ){
-    return str[ pos ];
-}
-
-public void getChars( String src, int srcBegin, int srcEnd, String dst, int dstBegin){
-    dst[ dstBegin .. dstBegin + srcEnd - srcBegin ] = src[ srcBegin .. srcEnd ];
-}
-
-public wchar[] toCharArray( String str ){
-    return toString16( str );
-}
-
-public bool endsWith( String src, String pattern ){
-    if( src.length < pattern.length ){
-        return false;
-    }
-    return src[ $-pattern.length .. $ ] == pattern;
-}
-
-public bool equals( String src, String other ){
-    return src == other;
-}
-
-public bool equalsIgnoreCase( String src, String other ){
-    return tango.text.Unicode.toFold(src) == tango.text.Unicode.toFold(other);
-}
-
-public int compareToIgnoreCase( String src, String other ){
-    return compareTo( tango.text.Unicode.toFold(src), tango.text.Unicode.toFold(other));
-}
-public int compareTo( String src, String other ){
-    return typeid(String).compare( cast(void*)&src, cast(void*)&other );
-}
-
-public bool startsWith( String src, String pattern ){
-    if( src.length < pattern.length ){
-        return false;
-    }
-    return src[ 0 .. pattern.length ] == pattern;
-}
-
-public String toLowerCase( String src ){
-    return tango.text.Unicode.toLower( src );
-}
-
-public hash_t toHash( String src ){
-    return typeid(String).getHash(&src);
-}
-
-public String trim( String str ){
-    return tango.text.Util.trim( str ).dup;
-}
-public String intern( String str ){
-    return str;
-}
-
-public char* toStringzValidPtr( String src ){
-    if( src ){
-        return src.toStringz();
-    }
-    else{
-        static const String nullPtr = "\0";
-        return nullPtr.ptr;
-    }
-}
-
-public alias tango.stdc.stringz.toStringz toStringz;
-public alias tango.stdc.stringz.toString16z toString16z;
-public alias tango.stdc.stringz.fromStringz fromStringz;
-public alias tango.stdc.stringz.fromString16z fromString16z;
-
-static String toHex(uint value, bool prefix = true, int radix = 8){
-    return tango.text.convert.Integer.toString(
-            value,
-            radix is 10 ? "d" :
-            radix is  8 ? "o" :
-            radix is 16 ? "x" :
-                          "d" );
-}
-
-class RuntimeException : Exception {
-    this( String e = null){
-        super(e);
-    }
-    this( Exception e ){
-        super(e.toString);
-        next = e;
-    }
-    public Exception getCause() {
-        return next;
-    }
-
-}
-class IndexOutOfBoundsException : Exception {
-    this( String e = null){
-        super(e);
-    }
-}
-
-class UnsupportedOperationException : RuntimeException {
-    this( String e = null){
-        super(e);
-    }
-    this( Exception e ){
-        super(e.toString);
-    }
-}
-class NumberFormatException : IllegalArgumentException {
-    this( String e ){
-        super(e);
-    }
-    this( Exception e ){
-        super(e.toString);
-    }
-}
-class NullPointerException : Exception {
-    this( String e = null ){
-        super(e);
-    }
-    this( Exception e ){
-        super(e.toString);
-    }
-}
-class IllegalStateException : Exception {
-    this( String e = null ){
-        super(e);
-    }
-    this( Exception e ){
-        super(e.toString);
-    }
-}
-class InterruptedException : Exception {
-    this( String e = null ){
-        super(e);
-    }
-    this( Exception e ){
-        super(e.toString);
-    }
-}
-class InvocationTargetException : Exception {
-    Exception cause;
-    this( Exception e = null, String msg = null ){
-        super(msg);
-        cause = e;
-    }
-
-    alias getCause getTargetException;
-    Exception getCause(){
-        return cause;
-    }
-}
-class MissingResourceException : Exception {
-    String classname;
-    String key;
-    this( String msg, String classname, String key ){
-        super(msg);
-        this.classname = classname;
-        this.key = key;
-    }
-}
-class ParseException : Exception {
-    this( String e = null ){
-        super(e);
-    }
-}
-
-interface Cloneable{
-}
-
-interface Comparable {
-    int compareTo(Object o);
-}
-interface Comparator {
-    int compare(Object o1, Object o2);
-}
-interface EventListener{
-}
-
-class EventObject {
-    protected Object source;
-
-    public this(Object source) {
-        if (source is null)
-        throw new IllegalArgumentException( "null arg" );
-        this.source = source;
-    }
-
-    public Object getSource() {
-        return source;
-    }
-
-    public override String toString() {
-        return this.classinfo.name ~ "[source=" ~ source.toString() ~ "]";
-    }
-}
-
-private struct GCStats {
-    size_t poolsize;        // total size of pool
-    size_t usedsize;        // bytes allocated
-    size_t freeblocks;      // number of blocks marked FREE
-    size_t freelistsize;    // total of memory on free lists
-    size_t pageblocks;      // number of blocks marked PAGE
-}
-private extern(C) GCStats gc_stats();
-
-size_t RuntimeTotalMemory(){
-    GCStats s = gc_stats();
-    return s.poolsize;
-}
-
-String ExceptionGetLocalizedMessage( Exception e ){
-    return e.msg;
-}
-
-void ExceptionPrintStackTrace( Exception e ){
-    ExceptionPrintStackTrace( e, Stderr );
-}
-void ExceptionPrintStackTrace( Exception e, Print!(char) print ){
-    Exception exception = e;
-    while( exception !is null ){
-        print.formatln( "Exception in {}({}): {}", exception.file, exception.line, exception.msg );
-        if( exception.info !is null ){
-            foreach( msg; exception.info ){
-                print.formatln( "trc {}", msg );
-            }
-        }
-        exception = exception.next;
-    }
-}
-
-interface Reader{
-}
-interface Writer{
-}
-
-
-class Collator : Comparator {
-    public static Collator getInstance(){
-        implMissing( __FILE__, __LINE__ );
-        return null;
-    }
-    private this(){
-    }
-    int compare(Object o1, Object o2){
-        implMissing( __FILE__, __LINE__ );
-        return 0;
-    }
-}
-
-template arraycast(T) {
-    T[] arraycast(U) (U[] u) {
-        static if (
-            (is (T == interface ) && is (U == interface )) ||
-            (is (T == class ) && is (U == class ))) {
-            return(cast(T[])u);
-        }
-        else {
-            int l = u.length;
-            T[] res;
-            res.length = l;
-            for (int i = 0; i < l; i++) {
-                res[i] = cast(T)u[i];
-            }
-            return(res);
-        }
-    }
-}
-
-String stringcast( Object o ){
-    if( auto str = cast(ArrayWrapperString) o ){
-        return str.array;
-    }
-    return null;
-}
-String[] stringcast( Object[] objs ){
-    String[] res = new String[](objs.length);
-    foreach( idx, obj; objs ){
-        res[idx] = stringcast(obj);
-    }
-    return res;
-}
-ArrayWrapperString stringcast( String str ){
-    return new ArrayWrapperString( str );
-}
-ArrayWrapperString[] stringcast( String[] strs ){
-    ArrayWrapperString[] res = new ArrayWrapperString[ strs.length ];
-    foreach( idx, str; strs ){
-        res[idx] = stringcast(str);
-    }
-    return res;
-}
-
-String[] stringArrayFromObject( Object obj ){
-    if( auto wrapper = cast(ArrayWrapperString2)obj ){
-        return wrapper.array;
-    }
-    if( auto wrapper = cast(ArrayWrapperObject)obj ){
-        String[] res = new String[ wrapper.array.length ];
-        foreach( idx, o; wrapper.array ){
-            if( auto swrapper = cast(ArrayWrapperString) o ){
-                res[idx] = swrapper.array;
-            }
-        }
-        return res;
-    }
-    assert( obj is null ); // if not null, it was the wrong type
-    return null;
-}
-
-T[] arrayFromObject(T)( Object obj ){
-    if( auto wrapper = cast(ArrayWrapperObject)obj ){
-        T[] res = new T[ wrapper.array.length ];
-        foreach( idx, o; wrapper.array ){
-            res[idx] = cast(T)o;
-        }
-        return res;
-    }
-    assert( obj is null ); // if not null, it was the wrong type
-    return null;
-}
-
-
-bool ArrayEquals(T)( T[] a, T[] b ){
-    if( a.length !is b.length ){
-        return false;
-    }
-    for( int i = 0; i < a.length; i++ ){
-        static if( is( T==class) || is(T==interface)){
-            if( a[i] !is null && b[i] !is null ){
-                if( a[i] != b[i] ){
-                    return false;
-                }
-            }
-            else if( a[i] is null && b[i] is null ){
-            }
-            else{
-                return false;
-            }
-        }
-        else{
-            if( a[i] != b[i] ){
-                return false;
-            }
-        }
-    }
-    return true;
-}
-
-int SeqIndexOf(T)( tango.util.collection.model.Seq.Seq!(T) s, T src ){
-    int idx;
-    foreach( e; s ){
-        if( e == src ){
-            return idx;
-        }
-        idx++;
-    }
-    return -1;
-}
-int arrayIndexOf(T)( T[] arr, T v ){
-    int res = -1;
-    int idx = 0;
-    foreach( p; arr ){
-        if( p == v){
-            res = idx;
-            break;
-        }
-        idx++;
-    }
-    return res;
-}
-
-int seqIndexOf( tango.util.collection.model.Seq.Seq!(Object) seq, Object v ){
-    int res = -1;
-    int idx = 0;
-    foreach( p; seq ){
-        if( p == v){
-            res = idx;
-            break;
-        }
-        idx++;
-    }
-    return res;
-}
-
-void PrintStackTrace( int deepth = 100, String prefix = "trc" ){
-    auto e = new Exception( null );
-    int idx = 0;
-    const start = 3;
-    foreach( msg; e.info ){
-        if( idx >= start && idx < start+deepth ) {
-            Trace.formatln( "{}: {}", prefix, msg );
-        }
-        idx++;
-    }
-}
-
-struct ImportData{
-    void[] data;
-    String name;
-
-    public static ImportData opCall( void[] data, String name ){
-        ImportData res;
-        res.data = data;
-        res.name = name;
-        return res;
-    }
-}
-
-template getImportData(String name ){
-    const ImportData getImportData = ImportData( import(name), name );
-}
-