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

#ifndef __java_io_FilterInputStream__
#define __java_io_FilterInputStream__

#pragma interface

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


class java::io::FilterInputStream : public ::java::io::InputStream
{

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

#endif // __java_io_FilterInputStream__
