
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_util_zip_InflaterInputStream__
#define __java_util_zip_InflaterInputStream__

#pragma interface

#include <java/io/FilterInputStream.h>
#include <gcj/array.h>


class java::util::zip::InflaterInputStream : public ::java::io::FilterInputStream
{

public:
  InflaterInputStream(::java::io::InputStream *);
  InflaterInputStream(::java::io::InputStream *, ::java::util::zip::Inflater *);
  InflaterInputStream(::java::io::InputStream *, ::java::util::zip::Inflater *, jint);
  virtual jint available();
  virtual void close();
public: // actually protected
  virtual void fill();
public:
  virtual jint read();
  virtual jint read(JArray< jbyte > *, jint, jint);
  virtual jlong skip(jlong);
  virtual jboolean markSupported();
  virtual void mark(jint);
  virtual void reset();
public: // actually protected
  ::java::util::zip::Inflater * __attribute__((aligned(__alignof__( ::java::io::FilterInputStream)))) inf;
  JArray< jbyte > * buf;
  jint len;
private:
  JArray< jbyte > * onebytebuffer;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_zip_InflaterInputStream__
