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

#ifndef __java_io_StringReader__
#define __java_io_StringReader__

#pragma interface

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


class java::io::StringReader : public ::java::io::Reader
{

public:
  StringReader(::java::lang::String *);
  virtual void close();
  virtual void mark(jint);
  virtual jboolean markSupported();
  virtual jint read();
  virtual jint read(JArray< jchar > *, jint, jint);
  virtual jboolean ready();
  virtual void reset();
  virtual jlong skip(jlong);
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::io::Reader)))) buf;
  jint pos;
  jint markedPos;
  jint count;
public:
  static ::java::lang::Class class$;
};

#endif // __java_io_StringReader__
