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

#ifndef __java_util_zip_DeflaterOutputStream__
#define __java_util_zip_DeflaterOutputStream__

#pragma interface

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


class java::util::zip::DeflaterOutputStream : public ::java::io::FilterOutputStream
{

public: // actually protected
  virtual void deflate();
public:
  DeflaterOutputStream(::java::io::OutputStream *);
  DeflaterOutputStream(::java::io::OutputStream *, ::java::util::zip::Deflater *);
  DeflaterOutputStream(::java::io::OutputStream *, ::java::util::zip::Deflater *, jint);
  virtual void flush();
  virtual void finish();
  virtual void close();
  virtual void write(jint);
  virtual void write(JArray< jbyte > *, jint, jint);
public: // actually protected
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::java::io::FilterOutputStream)))) buf;
  ::java::util::zip::Deflater * def;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_zip_DeflaterOutputStream__
