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

#ifndef __java_io_LineNumberInputStream__
#define __java_io_LineNumberInputStream__

#pragma interface

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


class java::io::LineNumberInputStream : public ::java::io::FilterInputStream
{

public:
  LineNumberInputStream(::java::io::InputStream *);
  virtual jint available();
  virtual jint getLineNumber();
  virtual void mark(jint);
  virtual jint read();
  virtual jint read(JArray< jbyte > *, jint, jint);
  virtual void reset();
  virtual void setLineNumber(jint);
  virtual jlong skip(jlong);
private:
  jint __attribute__((aligned(__alignof__( ::java::io::FilterInputStream)))) lineNumber;
  jint markLineNumber;
  jboolean justReadReturnChar;
public:
  static ::java::lang::Class class$;
};

#endif // __java_io_LineNumberInputStream__
