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

#ifndef __gnu_javax_imageio_png_PNGImageReaderSpi__
#define __gnu_javax_imageio_png_PNGImageReaderSpi__

#pragma interface

#include <javax/imageio/spi/ImageReaderSpi.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace imageio
      {
        namespace png
        {
            class PNGImageReaderSpi;
        }
      }
    }
  }
  namespace javax
  {
    namespace imageio
    {
        class ImageReader;
    }
  }
}

class gnu::javax::imageio::png::PNGImageReaderSpi : public ::javax::imageio::spi::ImageReaderSpi
{

public:
  PNGImageReaderSpi();
  virtual jboolean canDecodeInput(::java::lang::Object *);
  virtual ::javax::imageio::ImageReader * createReaderInstance(::java::lang::Object *);
  virtual ::java::lang::String * getDescription(::java::util::Locale *);
private:
  static JArray< jbyte > * SIGNATURE;
  static ::java::lang::String * VENDOR_NAME;
public: // actually package-private
  static ::java::lang::String * VERSION;
  static ::java::lang::String * READER_CLASSNAME;
  static JArray< ::java::lang::String * > * NAMES;
  static JArray< ::java::lang::String * > * SUFFIXES;
  static JArray< ::java::lang::String * > * MIME_TYPES;
  static JArray< ::java::lang::String * > * WRITER_SPI_NAMES;
  static JArray< ::java::lang::Class * > * INPUT_TYPES;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_imageio_png_PNGImageReaderSpi__
