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

#ifndef __java_io_LineNumberReader__
#define __java_io_LineNumberReader__

#pragma interface

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


class java::io::LineNumberReader : public ::java::io::BufferedReader
{

public:
  LineNumberReader(::java::io::Reader *);
  LineNumberReader(::java::io::Reader *, jint);
  virtual jint getLineNumber();
  virtual void setLineNumber(jint);
  virtual void mark(jint);
  virtual void reset();
private:
  jint fill();
public:
  virtual jint read();
  virtual jint read(JArray< jchar > *, jint, jint);
private:
  void skipRedundantLF();
public:
  virtual ::java::lang::String * readLine();
  virtual jlong skip(jlong);
private:
  jint __attribute__((aligned(__alignof__( ::java::io::BufferedReader)))) lineNumber;
  jboolean matchedNewLine;
  jint savedLineNumber;
public:
  static ::java::lang::Class class$;
};

#endif // __java_io_LineNumberReader__
