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

#ifndef __java_io_ByteArrayInputStream__
#define __java_io_ByteArrayInputStream__

#pragma interface

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


class java::io::ByteArrayInputStream : public ::java::io::InputStream
{

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

#endif // __java_io_ByteArrayInputStream__
