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

#ifndef __gnu_java_net_protocol_http_ChunkedInputStream__
#define __gnu_java_net_protocol_http_ChunkedInputStream__

#pragma interface

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

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

class gnu::java::net::protocol::http::ChunkedInputStream : public ::java::io::InputStream
{

public:
  ChunkedInputStream(::java::io::InputStream *, ::gnu::java::net::protocol::http::Headers *);
  virtual jint read();
  virtual jint read(JArray< jbyte > *, jint, jint);
  virtual jint available();
  virtual void close();
public: // actually package-private
  ::gnu::java::net::protocol::http::Headers * __attribute__((aligned(__alignof__( ::java::io::InputStream)))) headers;
private:
  ::java::io::InputStream * in;
public: // actually package-private
  jint size;
  jint count;
  jboolean meta;
  jboolean eof;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_protocol_http_ChunkedInputStream__
