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

#ifndef __javax_imageio_stream_MemoryCacheImageOutputStream__
#define __javax_imageio_stream_MemoryCacheImageOutputStream__

#pragma interface

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

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

class javax::imageio::stream::MemoryCacheImageOutputStream : public ::javax::imageio::stream::ImageOutputStreamImpl
{

public:
  MemoryCacheImageOutputStream(::java::io::OutputStream *);
  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 write(JArray< jbyte > *, jint, jint);
  virtual void write(jint);
private:
  ::java::io::OutputStream * __attribute__((aligned(__alignof__( ::javax::imageio::stream::ImageOutputStreamImpl)))) stream;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_imageio_stream_MemoryCacheImageOutputStream__
