view base/src/java/util/zip/InflaterInputStream.d @ 76:f05e6e8b2f2d

pragma libs
author Frank Benoit <benoit@tionex.de>
date Sun, 12 Apr 2009 12:27:13 +0200
parents 1bf55a6eb092
children e944a4cf537b
line wrap: on
line source

/**
 * Authors: Frank Benoit <keinfarbton@googlemail.com>
 */
module java.util.zip.InflaterInputStream;

import java.lang.all;
import java.io.InputStream;
version(Tango){
    import tango.io.compress.ZlibStream;
    import tango.io.device.Conduit;
    version(Windows){
        pragma(lib,"zlib.lib");
    }
    else{
        pragma(lib,"zlib");
    }
} else { // Phobos
    import std.zlib;
}

version(Tango){
    class InputStreamWrapper : tango.io.model.IConduit.InputStream {

        java.io.InputStream.InputStream istr;

        this( java.io.InputStream.InputStream istr ){
            this.istr = istr;
        }

        uint read (void[] dst){
            int res = istr.read( cast(byte[])dst );
            return res;
        }

        tango.io.model.IConduit.IConduit conduit (){
            implMissing(__FILE__,__LINE__);
            return null;
        }

        void close (){
            istr.close();
        }
        tango.io.model.IConduit.InputStream input (){
            implMissing(__FILE__,__LINE__);
            return null;
        }
        long seek (long offset, Anchor anchor = Anchor.Begin){
            implMissing(__FILE__,__LINE__);
            return 0;
        }
        void[] load (size_t max = -1){
            implMissing(__FILE__,__LINE__);
            return null;
        }
        IOStream flush (){
            implMissing(__FILE__,__LINE__);
            return null;
        }
    }
} else { // Phobos
}


public class InflaterInputStream : java.io.InputStream.InputStream {

    alias java.io.InputStream.InputStream.read read;
    alias java.io.InputStream.InputStream.skip skip;
    alias java.io.InputStream.InputStream.available available;
    alias java.io.InputStream.InputStream.close close;
    alias java.io.InputStream.InputStream.mark mark;
    alias java.io.InputStream.InputStream.reset reset;
    alias java.io.InputStream.InputStream.markSupported markSupported;

    protected byte[] buf;
    protected int len;
    package bool usesDefaultInflater = false;

    version(Tango){
        ZlibInput tangoIstr;
    } else { // Phobos
    }

    public this ( java.io.InputStream.InputStream istr ){
        version(Tango){
            tangoIstr = new ZlibInput( new InputStreamWrapper(istr ));
        } else { // Phobos
            implMissing( __FILE__, __LINE__ );
        }
    }

    public int read(){
        version(Tango){
            ubyte[1] data;
            uint res = tangoIstr.read( data );
            if( res !is 1 ){
                return data[0] & 0xFF;
            }
            return -1;
        } else { // Phobos
            implMissing( __FILE__, __LINE__ );
            return -1;
        }
    }

    public int read( byte[] b, int off, int len ){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }

    public int available(){
        implMissing( __FILE__, __LINE__ );
        return 0;
    }

    public long skip( long n ){
        implMissing( __FILE__, __LINE__ );
        return 0L;
    }

    public void close(){
        implMissing( __FILE__, __LINE__ );
    }

    public void fill(){
        implMissing( __FILE__, __LINE__ );
    }

    public bool markSupported(){
        implMissing( __FILE__, __LINE__ );
        return false;
    }

    public synchronized void mark( int readlimit ){
        implMissing( __FILE__, __LINE__ );
    }

    public synchronized void reset(){
        implMissing( __FILE__, __LINE__ );
    }
}