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

#ifndef __gnu_xml_stream_CRLFReader__
#define __gnu_xml_stream_CRLFReader__

#pragma interface

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

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

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

public: // actually protected
  CRLFReader(::java::io::Reader *);
public:
  virtual jint read();
  virtual jint read(JArray< jchar > *);
  virtual jint read(JArray< jchar > *, jint, jint);
  virtual jboolean markSupported();
  virtual void mark(jint);
  virtual void reset();
  virtual jlong skip(jlong);
  virtual void close();
private:
  jint indexOfCRLF(JArray< jchar > *, jint, jint);
public:
  static const jint CR = 13;
  static const jint LF = 10;
private:
  jboolean __attribute__((aligned(__alignof__( ::java::io::Reader)))) doReset;
public: // actually protected
  ::java::io::Reader * in;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_stream_CRLFReader__
