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

#ifndef __gnu_java_net_protocol_http_ByteArrayRequestBodyWriter__
#define __gnu_java_net_protocol_http_ByteArrayRequestBodyWriter__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace protocol
        {
          namespace http
          {
              class ByteArrayRequestBodyWriter;
          }
        }
      }
    }
  }
}

class gnu::java::net::protocol::http::ByteArrayRequestBodyWriter : public ::java::lang::Object
{

public:
  ByteArrayRequestBodyWriter(JArray< jbyte > *);
  virtual jint getContentLength();
  virtual void reset();
  virtual jint write(JArray< jbyte > *);
public: // actually protected
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) content;
  jint pos;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_protocol_http_ByteArrayRequestBodyWriter__
