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

#ifndef __javax_imageio_spi_IIOServiceProvider__
#define __javax_imageio_spi_IIOServiceProvider__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace imageio
    {
      namespace spi
      {
          class IIOServiceProvider;
          class ServiceRegistry;
      }
    }
  }
}

class javax::imageio::spi::IIOServiceProvider : public ::java::lang::Object
{

public:
  IIOServiceProvider(::java::lang::String *, ::java::lang::String *);
  IIOServiceProvider();
  virtual void onRegistration(::javax::imageio::spi::ServiceRegistry *, ::java::lang::Class *);
  virtual void onDeregistration(::javax::imageio::spi::ServiceRegistry *, ::java::lang::Class *);
  virtual ::java::lang::String * getVendorName();
  virtual ::java::lang::String * getVersion();
  virtual ::java::lang::String * getDescription(::java::util::Locale *) = 0;
public: // actually protected
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) vendorName;
  ::java::lang::String * version;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_imageio_spi_IIOServiceProvider__
