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

#ifndef __gnu_java_awt_peer_gtk_AsyncImage$Loader__
#define __gnu_java_awt_peer_gtk_AsyncImage$Loader__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace gtk
          {
              class AsyncImage;
              class AsyncImage$Loader;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class URL;
    }
  }
}

class gnu::java::awt::peer::gtk::AsyncImage$Loader : public ::java::lang::Object
{

public: // actually package-private
  AsyncImage$Loader(::gnu::java::awt::peer::gtk::AsyncImage *, ::java::net::URL *);
public:
  virtual void run();
private:
  ::java::net::URL * __attribute__((aligned(__alignof__( ::java::lang::Object)))) url;
public: // actually package-private
  ::gnu::java::awt::peer::gtk::AsyncImage * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_gtk_AsyncImage$Loader__
