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

#ifndef __gnu_java_net_protocol_ftp_BlockOutputStream__
#define __gnu_java_net_protocol_ftp_BlockOutputStream__

#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 BlockOutputStream;
              class DTP;
          }
        }
      }
    }
  }
}

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

public: // actually package-private
  BlockOutputStream(::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);
  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_BlockOutputStream__
