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

#ifndef __gnu_java_net_loader_RemoteURLLoader__
#define __gnu_java_net_loader_RemoteURLLoader__

#pragma interface

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

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

public:
  RemoteURLLoader(::java::net::URLClassLoader *, ::gnu::java::net::loader::URLStreamHandlerCache *, ::java::net::URLStreamHandlerFactory *, ::java::net::URL *);
  ::gnu::java::net::loader::Resource * getResource(::java::lang::String *);
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::java::net::loader::URLLoader)))) protocol;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_loader_RemoteURLLoader__
