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

#ifndef __gnu_java_net_loader_FileURLLoader__
#define __gnu_java_net_loader_FileURLLoader__

#pragma interface

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

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

public:
  FileURLLoader(::java::net::URLClassLoader *, ::gnu::java::net::loader::URLStreamHandlerCache *, ::java::net::URLStreamHandlerFactory *, ::java::net::URL *, ::java::net::URL *);
  ::gnu::java::net::loader::Resource * getResource(::java::lang::String *);
private:
  ::java::io::File * walkPathComponents(::java::lang::String *);
public: // actually package-private
  ::java::io::File * __attribute__((aligned(__alignof__( ::gnu::java::net::loader::URLLoader)))) dir;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_loader_FileURLLoader__
