diff java/src/java/lang/util.d @ 21:9b96950f2c3c

the 'java' tree compiles on both D1-Tango and D2-Phobos
author Frank Benoit <benoit@tionex.de>
date Thu, 19 Mar 2009 20:38:55 +0100
parents 735224fcc45f
children f713da8bc051
line wrap: on
line diff
--- a/java/src/java/lang/util.d	Wed Mar 18 12:10:17 2009 +0100
+++ b/java/src/java/lang/util.d	Thu Mar 19 20:38:55 2009 +0100
@@ -1,30 +1,31 @@
 module java.lang.util;
 
-void implMissing( String file, uint line ){
-    Stderr.formatln( "implementation missing in file {} line {}", file, line );
-    Stderr.formatln( "exiting ..." );
-    exit(1);
+public import java.lang.wrappers;
+public import java.lang.String;
+public import java.lang.interfaces;
+
+version(Tango){
+    static import tango.text.convert.Format;
+    static import tango.core.Exception;
+    static import tango.util.log.Log;
+    static import tango.stdc.stdlib;
+
+    alias tango.stdc.stdlib.exit exit;
+} else { // Phobos
+    static import core.exception;
+    static import std.c.stdlib;
+    alias std.c.stdlib.exit exit;
 }
 
-alias char[] String;
-
-public import tango.core.Exception : IllegalArgumentException, IOException;
-
-import tango.io.Stdout;
-import tango.io.stream.Format;
-static import tango.text.convert.Format;
-static import tango.stdc.stringz;
-static import tango.text.Util;
-static import tango.text.Text;
-static import tango.text.Ascii;
-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.util.log.Log;
-import tango.text.UnicodeData;
+version(Tango){
+} else { // Phobos
+}
+version(Tango){
+} else { // Phobos
+}
+version(Tango){
+} else { // Phobos
+}
 
 interface IDwtLogger {
     void trace( String file, ulong line, String fmt, ... );
@@ -34,39 +35,56 @@
     void fatal( String file, ulong line, String fmt, ... );
 }
 
-class DwtLogger : IDwtLogger {
-    Logger logger;
-    private this( char[] name ){
-        logger = Log.lookup( name );
-    }
-    private char[] format( String file, ulong line, String fmt, TypeInfo[] types, void* argptr ){
-        auto msg = Format.convert( types, argptr, fmt );
-        auto text = Format( "{} {}: {}", file, line, msg );
-        return text;
-    }
-    void trace( String file, ulong line, String fmt, ... ){
-        if( logger.trace ){
-            logger.trace( format( file, line, fmt, _arguments, _argptr ));
+version(Tango){
+    class DwtLogger : IDwtLogger {
+        tango.util.log.Log.Logger logger;
+        private this( char[] name ){
+            logger = tango.util.log.Log.Log.lookup( name );
+        }
+        private char[] format( String file, ulong line, String fmt, TypeInfo[] types, void* argptr ){
+            auto msg = Format.convert( types, argptr, fmt );
+            auto text = Format( "{} {}: {}", file, line, msg );
+            return text;
+        }
+        void trace( String file, ulong line, String fmt, ... ){
+            if( logger.trace ){
+                logger.trace( format( file, line, fmt, _arguments, _argptr ));
+            }
+        }
+        void info( String file, ulong line, String fmt, ... ){
+            if( logger.info ){
+                logger.info( format( file, line, fmt, _arguments, _argptr ));
+            }
+        }
+        void warn( String file, ulong line, String fmt, ... ){
+            if( logger.warn ){
+                logger.warn( format( file, line, fmt, _arguments, _argptr ));
+            }
+        }
+        void error( String file, ulong line, String fmt, ... ){
+            if( logger.error ){
+                logger.error( format( file, line, fmt, _arguments, _argptr ));
+            }
+        }
+        void fatal( String file, ulong line, String fmt, ... ){
+            if( logger.fatal ){
+                logger.fatal( format( file, line, fmt, _arguments, _argptr ));
+            }
         }
     }
-    void info( String file, ulong line, String fmt, ... ){
-        if( logger.info ){
-            logger.info( format( file, line, fmt, _arguments, _argptr ));
+} else { // Phobos
+    class DwtLogger : IDwtLogger {
+        private this( String name ){
         }
-    }
-    void warn( String file, ulong line, String fmt, ... ){
-        if( logger.warn ){
-            logger.warn( format( file, line, fmt, _arguments, _argptr ));
+        void trace( String file, ulong line, String fmt, ... ){
         }
-    }
-    void error( String file, ulong line, String fmt, ... ){
-        if( logger.error ){
-            logger.error( format( file, line, fmt, _arguments, _argptr ));
+        void info( String file, ulong line, String fmt, ... ){
+        }
+        void warn( String file, ulong line, String fmt, ... ){
         }
-    }
-    void fatal( String file, ulong line, String fmt, ... ){
-        if( logger.fatal ){
-            logger.fatal( format( file, line, fmt, _arguments, _argptr ));
+        void error( String file, ulong line, String fmt, ... ){
+        }
+        void fatal( String file, ulong line, String fmt, ... ){
         }
     }
 }
@@ -84,687 +102,24 @@
     return dwtLoggerInstance;
 }
 
-public alias tango.text.convert.Format.Format Format;
-alias ArrayBoundsException ArrayIndexOutOfBoundsException;
-
-abstract class ArrayWrapper{
-}
-abstract class ValueWrapper{
+void implMissing( String file, uint line ){
+    getDwtLogger().fatal( file, line, "implementation missing in file {} line {}", file, line );
+    getDwtLogger().fatal( file, line, "Please create a bug report at http://www.dsource.org/projects/dwt" );
+    getDwtLogger().fatal( file, line, "exiting ..." );
+    exit(1);
 }
 
-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);
-    }
-    static if( is( T == char )){
-        public override char[] toString(){
-            return array;
+version(Tango){
+    public alias tango.text.convert.Format.Format Format;
+} else { // Phobos
+    class Format{
+        static String opCall( String fmt, ... ){
+            implMissing(__FILE__,__LINE__);
+            return null;
         }
     }
 }
 
-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);
-    }
-}
-
-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];
-}
-dchar firstCodePoint( wchar[] 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 toAbsoluteCodePointStartOffset( String str, int index ){
-    //Trace.formatln( "str={}, str.length={}, index={}", str, str.length, index );
-    //Trace.memory( str );
-    if( str.length is index ){
-        return index;
-    }
-    if( ( str[index] & 0x80 ) is 0x00 ) {
-        return index;
-    }
-    else{
-        int steps = 0;
-        while(( str[index] & 0xC0 ) is 0x80 ){
-            index--;
-            steps++;
-            if( steps > 3 || index < 0 ){
-                break;
-            }
-        }
-        if((( str[index] & 0xE0 ) is 0xC0) && ( steps <= 1 )){
-            // ok
-        }
-        else if((( str[index] & 0xF0 ) is 0xE0) && ( steps <= 2 )){
-            // ok
-        }
-        else if((( str[index] & 0xF8 ) is 0xF0) && ( steps <= 3 )){
-            // ok
-        }
-        else{
-            tango.text.convert.Utf.onUnicodeError( "invalid utf8 input to toAbsoluteCodePointStartOffset" );
-        }
-        return index;
-    }
-}
-int getRelativeCodePointOffset( String str, int startIndex, int searchRelCp ){
-    return getAbsoluteCodePointOffset( str, startIndex, searchRelCp ) - startIndex;
-}
-int getAbsoluteCodePointOffset( String str, int startIndex, int searchRelCp ){
-
-    //Trace.formatln( "str={}, str.length={}, startIndex={}, searchRelCp={}", str, str.length, startIndex, searchRelCp );
-    //Trace.memory( str );
-
-    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( "getAbsoluteCodePointOffset 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 startIndex-1;
-                }
-            } while(( str[i] & 0xC0 ) is 0x80 );
-            searchRelCp++;
-        }
-    }
-    return i;
-}
-int getAbsoluteCodePointOffset( wchar[] str, int startIndex, int searchRelCp ){
-    int ignore;
-    int i = startIndex;
-    if( searchRelCp > 0 ){
-        while( searchRelCp !is 0 ){
-
-            if( ( i < str.length )
-                && ( str[i] & 0xD800 ) !is 0xD800 )
-            {
-                i+=1;
-            }
-            else if( ( i+1 < str.length )
-                && (( str[i+1] & 0xDC00 ) is 0xDC00 )
-                && (( str[i  ] & 0xDC00 ) is 0xD800 ))
-            {
-                i+=2;
-            }
-            else{
-                Trace.formatln( "invalid utf16 characters:  {:X2}", cast(ubyte[]) str );
-                tango.text.convert.Utf.onUnicodeError( "invalid utf16 input", i );
-            }
-            searchRelCp--;
-        }
-    }
-    else if( searchRelCp < 0 ){
-        while( searchRelCp !is 0 ){
-            do{
-                i--;
-                if( i < 0 ){
-                    return startIndex-1;
-                    //Trace.formatln( "dwthelper.utils getRelativeCodePointOffset {}: str={}, startIndex={}, searchRelCp={}", __LINE__, str, startIndex, searchRelCp );
-                    //tango.text.convert.Utf.onUnicodeError( "invalid utf16 input", i );
-                }
-            } while(( str[i] & 0xDC00 ) is 0xDC00 );
-            searchRelCp++;
-        }
-    }
-    return i;
-}
-dchar getRelativeCodePoint( String str, int startIndex, int searchRelCp ){
-    int dummy;
-    return getRelativeCodePoint( str, startIndex, dummy );
-}
-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;
-}
-
-String new_String( String cont, int offset, int len ){
-    return cont[ offset .. offset+len ].dup;
-}
-
-String new_String( String cont ){
-    return cont.dup;
-}
-
-String String_valueOf( bool v ){
-    return v ? "true" : "false";
-}
-
-String String_valueOf( byte v ){
-    return tango.text.convert.Integer.toString(v);
-}
-
-String String_valueOf( ubyte v ){
-    return tango.text.convert.Integer.toString(v);
-}
-
-String String_valueOf( short v ){
-    return tango.text.convert.Integer.toString(v);
-}
-
-String String_valueOf( int v ){
-    return tango.text.convert.Integer.toString(v);
-}
-
-String String_valueOf( uint v ){
-    return tango.text.convert.Integer.toString(v);
-}
-
-String String_valueOf( long v ){
-    return tango.text.convert.Integer.toString(v);
-}
-
-String String_valueOf( float v ){
-    return tango.text.convert.Float.toString(v);
-}
-
-String String_valueOf( double v ){
-    return tango.text.convert.Float.toString(v);
-}
-
-String String_valueOf( dchar v ){
-    return dcharToString(v);
-}
-
-String String_valueOf( char[] v ){
-    return v.dup;
-}
-
-String String_valueOf( char[] v, int offset, int len ){
-    return v[ offset .. offset+len ].dup;
-}
-
-String String_valueOf( Object v ){
-    return v is null ? "null" : v.toString();
-}
-
-String String_valueOf( wchar[] wstr ){
-    return .toString(wstr);
-}
-
-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];
-}
-
-int length( String str ){
-    return str.length;
-}
-
-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 );
-}
-
-/// Extension to String
-public String toUpperCase( String str ){
-    return tango.text.Unicode.toUpper( str );
-}
-
-/// Extension to String
-public String replaceFirst( String str, String regex, String replacement ){
-    implMissing(__FILE__,__LINE__);
-    return str;
-}
-
-/// Extension to String
-public int indexOf( String str, char searched ){
-    int res = tango.text.Util.locate( str, searched );
-    if( res is str.length ) res = -1;
-    return res;
-}
-
-/// Extension to String
-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;
-}
-
-/// Extension to String
-public int indexOf(String str, String ch){
-    return indexOf( str, ch, 0 );
-}
-
-/// Extension to String
-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;
-}
-
-/// Extension to String
-public int lastIndexOf(String str, char ch){
-    return lastIndexOf( str, ch, str.length );
-}
-
-/// Extension to String
-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;
-}
-
-/// Extension to String
-public int lastIndexOf(String str, String ch ){
-    return lastIndexOf( str, ch, str.length );
-}
-
-/// Extension to String
-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;
-}
-
-/// Extension to String
-public String replaceAll( String str, String regex, String replacement ){
-    implMissing(__FILE__,__LINE__);
-    return null;
-}
-
-/// Extension to String
-public String replace( String str, char from, char to ){
-    return tango.text.Util.replace( str.dup, from, to );
-}
-
-/// Extension to String
-public String substring( String str, int start ){
-    return str[ start .. $ ].dup;
-}
-
-/// Extension to String
-public String substring( String str, int start, int end ){
-    return str[ start .. end ].dup;
-}
-
-/// Extension to String
-public wchar[] substring( wchar[] str, int start ){
-    return str[ start .. $ ].dup;
-}
-
-/// Extension to String
-public wchar[] substring( wchar[] str, int start, int end ){
-    return str[ start .. end ].dup;
-}
-
-/// Extension to String
-public char charAt( String str, int pos ){
-    return str[ pos ];
-}
-
-/// Extension to String
-public dchar dcharAt( String str, int pos ){
-    return str[ pos .. $ ].firstCodePoint();
-}
-
-/// Extension to String
-public void getChars( String src, int srcBegin, int srcEnd, String dst, int dstBegin){
-    dst[ dstBegin .. dstBegin + srcEnd - srcBegin ] = src[ srcBegin .. srcEnd ];
-}
-
-/// Extension to String
-public wchar[] toWCharArray( String str ){
-    return toString16(str);
-}
-
-/// Extension to String
-public char[] toCharArray( String str ){
-    return str;
-}
-
-/// Extension to String
-public bool endsWith( String src, String pattern ){
-    if( src.length < pattern.length ){
-        return false;
-    }
-    return src[ $-pattern.length .. $ ] == pattern;
-}
-
-/// Extension to String
-public bool equals( String src, String other ){
-    return src == other;
-}
-
-/// Extension to String
-public bool equalsIgnoreCase( String src, String other ){
-    return tango.text.Unicode.toFold(src) == tango.text.Unicode.toFold(other);
-}
-
-/// Extension to String
-public int compareToIgnoreCase( String src, String other ){
-    return compareTo( tango.text.Unicode.toFold(src), tango.text.Unicode.toFold(other));
-}
-
-/// Extension to String
-public int compareTo( String src, String other ){
-    return typeid(String).compare( cast(void*)&src, cast(void*)&other );
-}
-
-/// Extension to String
-public bool startsWith( String src, String pattern ){
-    if( src.length < pattern.length ){
-        return false;
-    }
-    return src[ 0 .. pattern.length ] == pattern;
-}
-
-/// Extension to String
-public String toLowerCase( String src ){
-    return tango.text.Unicode.toLower( src );
-}
-
-/// Extension to String
-public hash_t toHash( String src ){
-    return typeid(String).getHash(&src);
-}
-
-/// Extension to String
-public String trim( String str ){
-    return tango.text.Util.trim( str ).dup;
-}
-
-/// Extension to String
-public String intern( String str ){
-    return str;
-}
-
-/++
- + This is like tango.stdc.stringz.toStringz, but in case of an empty input string,
- + this function returns a pointer to a null value instead of a null ptr.
- +/
-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" );
-}
-
-interface Cloneable{
-}
-
-interface Comparable {
-    int compareTo(Object o);
-}
-interface Comparator {
-    int compare(Object o1, Object o2);
-}
 
 private struct GCStats {
     size_t poolsize;        // total size of pool
@@ -780,30 +135,6 @@
     return s.poolsize;
 }
 
-/// Extension to the D Exception
-String ExceptionGetLocalizedMessage( Exception e ){
-    return e.msg;
-}
-
-/// Extension to the D Exception
-void ExceptionPrintStackTrace( Exception e ){
-    ExceptionPrintStackTrace( e, & getDwtLogger().error );
-}
-
-/// Extension to the D Exception
-void ExceptionPrintStackTrace( Exception e, void delegate ( String file, ulong line, String fmt, ... ) dg ){
-    Exception exception = e;
-    while( exception !is null ){
-        dg( exception.file, exception.line, "Exception in {}({}): {}", exception.file, exception.line, exception.msg );
-        if( exception.info !is null ){
-            foreach( msg; exception.info ){
-                dg( exception.file, exception.line, "trc {}", msg );
-            }
-        }
-        exception = exception.next;
-    }
-}
-
 
 template arraycast(T) {
     T[] arraycast(U) (U[] u) {
@@ -824,59 +155,6 @@
     }
 }
 
-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 ){
@@ -904,17 +182,6 @@
     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;
@@ -928,30 +195,6 @@
     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;
@@ -969,34 +212,4 @@
     const ImportData getImportData = ImportData( import(name), name );
 }
 
-interface CharSequence {
-    char         charAt(int index);
-    int          length();
-    CharSequence subSequence(int start, int end);
-    String       toString();
-}
 
-/++
- + String in java is implementing the interface CharSequence
- +/
-class StringCharSequence : CharSequence {
-    private String str;
-    this( String str ){
-        this.str = str;
-    }
-    char           charAt(int index){
-        return str[index];
-    }
-    int             length(){
-        return str.length;
-    }
-    CharSequence    subSequence(int start, int end){
-        return new StringCharSequence( str[ start .. end ]);
-    }
-    String          toString(){
-        return str;
-    }
-}
-
-
-