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

#ifndef __gnu_java_net_protocol_ftp_FTPResponse__
#define __gnu_java_net_protocol_ftp_FTPResponse__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace protocol
        {
          namespace ftp
          {
              class FTPResponse;
          }
        }
      }
    }
  }
}

class gnu::java::net::protocol::ftp::FTPResponse : public ::java::lang::Object
{

public:
  FTPResponse(jint, ::java::lang::String *);
  FTPResponse(jint, ::java::lang::String *, ::java::lang::String *);
  jint getCode();
  ::java::lang::String * getMessage();
  ::java::lang::String * getData();
public: // actually protected
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) code;
  ::java::lang::String * message;
  ::java::lang::String * data;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_protocol_ftp_FTPResponse__
