view java/src/java/lang/StringBuffer.d @ 15:c4b1a29263fc

Successful build of org.eclipse.text
author Frank Benoit <benoit@tionex.de>
date Sun, 15 Mar 2009 19:51:07 +0100
parents 4c0057e71936
children dbfb303e8fb0
line wrap: on
line source

module java.lang.StringBuffer;

import java.lang.util;

static import tango.text.Text;
static import tango.text.convert.Utf;

class StringBuffer : CharSequence {
    alias tango.text.Text.Text!(char) TBuf;
    TBuf buf;

    public this(){
        buf = new TBuf();
    }

    public this( int cap ){
        buf = new TBuf( cap );
    }

    public this( String content ){
        buf = new TBuf( content );
    }

    char charAt(int index){
        return buf.slice()[ index ];
    }

    int length(){
        return buf.length();
    }

    CharSequence subSequence(int start, int end){
        return new StringBuffer( buf.slice()[ start .. end ] );
    }

    String toString(){
        return buf.slice();
    }

    StringBuffer append( String s ){
        buf.append( s );
        return this;
    }

    StringBuffer append( String s, int offset, int len ){
        buf.append( s[ offset .. offset+len ] );
        return this;
    }

    StringBuffer append( char c ){
        buf.append( c );
        return this;
    }

    StringBuffer append( wchar c ){
        wchar[1] src;
        src[0] = c;
        char[2] trg;
        auto s = tango.text.convert.Utf.toString( src, trg );
        buf.append( s );
        return this;
    }

    StringBuffer append( int i ){
        buf.append( String_valueOf(i) );
        return this;
    }

    StringBuffer append( long i ){
        buf.append( String_valueOf(i) );
        return this;
    }

    StringBuffer append( dchar c ){
        dchar[1] src;
        src[0] = c;
        char[4] trg;
        auto s = tango.text.convert.Utf.toString( src, trg );
        buf.append( s );
        return this;
    }


    StringBuffer insert(int offset, String str){
        buf.select(offset, 0);
        buf.replace(str);
        buf.select();
        return this;
    }

    StringBuffer replace(int start, int end, String str) {
        buf.select(start, end-start);
        buf.replace(str);
        buf.select();
        return this;
    }

    void setLength( int newLength ){
        buf.truncate( newLength );
    }

    String substring( int start, int end ){
        return buf.slice()[ start .. end ].dup;
    }
}