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

#ifndef __gnu_xml_stream_BufferedReader__
#define __gnu_xml_stream_BufferedReader__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace stream
      {
          class BufferedReader;
      }
    }
  }
}

class gnu::xml::stream::BufferedReader : public ::java::io::Reader
{

public: // actually package-private
  BufferedReader(::java::io::Reader *);
  BufferedReader(::java::io::Reader *, jint);
public:
  virtual void close();
  virtual void mark(jint);
  virtual jboolean markSupported();
  virtual jint read();
  virtual jint read(JArray< jchar > *);
  virtual jint read(JArray< jchar > *, jint, jint);
  virtual void reset();
  virtual jlong skip(jlong);
private:
  jboolean refill();
public: // actually package-private
  static const jint DEFAULT_BUFFER_SIZE = 4096;
  ::java::io::Reader * __attribute__((aligned(__alignof__( ::java::io::Reader)))) in;
  JArray< jchar > * buf;
  jint pos;
  jint count;
  jint markpos;
  jint marklimit;
  jint bufferSize;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_stream_BufferedReader__
