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

#ifndef __gnu_gcj_runtime_BootClassLoader__
#define __gnu_gcj_runtime_BootClassLoader__

#pragma interface

#include <gnu/gcj/runtime/HelperClassLoader.h>
extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
      namespace runtime
      {
          class BootClassLoader;
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class URL;
        class URLClassLoader;
    }
  }
}

class gnu::gcj::runtime::BootClassLoader : public ::gnu::gcj::runtime::HelperClassLoader
{

public: // actually package-private
  BootClassLoader(::java::lang::String *);
public:
  ::java::lang::Class * bootLoadClass(::java::lang::String *);
private:
  ::java::net::URLClassLoader * getBootURLLoader();
public:
  ::java::net::URL * bootGetResource(::java::lang::String *);
  ::java::util::Enumeration * bootGetResources(::java::lang::String *);
public: // actually package-private
  static ::java::lang::Class * coreHandler;
private:
  jboolean __attribute__((aligned(__alignof__( ::gnu::gcj::runtime::HelperClassLoader)))) initialized;
  ::java::net::URLClassLoader * bootURLLoader;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_gcj_runtime_BootClassLoader__
