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

#ifndef __javax_imageio_stream_MemoryCacheImageInputStream__
#define __javax_imageio_stream_MemoryCacheImageInputStream__

#pragma interface

#include <javax/imageio/stream/ImageInputStreamImpl.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace imageio
    {
      namespace stream
      {
          class MemoryCacheImageInputStream;
      }
    }
  }
}

class javax::imageio::stream::MemoryCacheImageInputStream : public ::javax::imageio::stream::ImageInputStreamImpl
{

public:
  MemoryCacheImageInputStream(::java::io::InputStream *);
  virtual void close();
  virtual void flushBefore(jlong);
  virtual jboolean isCached();
  virtual jboolean isCachedFile();
  virtual jboolean isCachedMemory();
  virtual jint read();
  virtual jint read(JArray< jbyte > *, jint, jint);
  virtual void seek(jlong);
private:
  ::java::io::InputStream * __attribute__((aligned(__alignof__( ::javax::imageio::stream::ImageInputStreamImpl)))) stream;
  ::java::io::BufferedInputStream * buffer;
  jint READLIMIT;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_imageio_stream_MemoryCacheImageInputStream__
