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

#ifndef __javax_imageio_stream_FileCacheImageInputStream__
#define __javax_imageio_stream_FileCacheImageInputStream__

#pragma interface

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

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

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

public:
  FileCacheImageInputStream(::java::io::InputStream *, ::java::io::File *);
  virtual void close();
private:
  void checkStreamClosed();
public:
  virtual jboolean isCached();
  virtual jboolean isCachedFile();
  virtual jboolean isCachedMemory();
  virtual jint read();
  virtual jint read(JArray< jbyte > *, jint, jint);
private:
  ::java::io::InputStream * __attribute__((aligned(__alignof__( ::javax::imageio::stream::ImageInputStreamImpl)))) stream;
  ::java::io::File * cacheDir;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_imageio_stream_FileCacheImageInputStream__
