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

#ifndef __gnu_java_net_protocol_ftp_CompressedOutputStream__
#define __gnu_java_net_protocol_ftp_CompressedOutputStream__

#pragma interface

#include <gnu/java/net/protocol/ftp/DTPOutputStream.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace protocol
        {
          namespace ftp
          {
              class CompressedOutputStream;
              class DTP;
          }
        }
      }
    }
  }
}

class gnu::java::net::protocol::ftp::CompressedOutputStream : public ::gnu::java::net::protocol::ftp::DTPOutputStream
{

public: // actually package-private
  CompressedOutputStream(::gnu::java::net::protocol::ftp::DTP *, ::java::io::OutputStream *);
public:
  virtual void write(jint);
  virtual void write(JArray< jbyte > *);
  virtual void write(JArray< jbyte > *, jint, jint);
public: // actually package-private
  virtual JArray< jbyte > * compress(JArray< jbyte > *, jint, jint);
  virtual jint flush_compressed(JArray< jbyte > *, jint, jint, jbyte);
  virtual jint flush_raw(JArray< jbyte > *, jint, JArray< jbyte > *, jint, jint);
  virtual JArray< jbyte > * realloc(JArray< jbyte > *, jint);
public:
  virtual void close();
public: // actually package-private
  static const jbyte RECORD = -128;
  static const jbyte EOF = 64;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_protocol_ftp_CompressedOutputStream__
