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

#ifndef __gnu_java_net_loader_Load_gcjlib__
#define __gnu_java_net_loader_Load_gcjlib__

#pragma interface

#include <gnu/java/net/loader/URLLoader.h>
extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
      namespace runtime
      {
          class SharedLibHelper;
      }
    }
    namespace java
    {
      namespace net
      {
        namespace loader
        {
            class Load_gcjlib;
            class Resource;
            class URLStreamHandlerCache;
        }
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class URL;
        class URLClassLoader;
        class URLStreamHandlerFactory;
    }
  }
}

class gnu::java::net::loader::Load_gcjlib : public ::gnu::java::net::loader::URLLoader
{

public:
  Load_gcjlib(::java::net::URLClassLoader *, ::gnu::java::net::loader::URLStreamHandlerCache *, ::java::net::URLStreamHandlerFactory *, ::java::net::URL *, ::java::net::URL *);
  ::java::lang::Class * getClass(::java::lang::String *);
  ::gnu::java::net::loader::Resource * getResource(::java::lang::String *);
private:
  ::gnu::gcj::runtime::SharedLibHelper * __attribute__((aligned(__alignof__( ::gnu::java::net::loader::URLLoader)))) helper;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_loader_Load_gcjlib__
