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

#ifndef __java_io_FilterReader__
#define __java_io_FilterReader__

#pragma interface

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


class java::io::FilterReader : public ::java::io::Reader
{

public: // actually protected
  FilterReader(::java::io::Reader *);
public:
  virtual void mark(jint);
  virtual jboolean markSupported();
  virtual void reset();
  virtual jboolean ready();
  virtual jlong skip(jlong);
  virtual jint read();
  virtual jint read(JArray< jchar > *, jint, jint);
  virtual void close();
public: // actually protected
  ::java::io::Reader * __attribute__((aligned(__alignof__( ::java::io::Reader)))) in;
public:
  static ::java::lang::Class class$;
};

#endif // __java_io_FilterReader__
