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

#ifndef __gnu_java_rmi_server_RMIClassLoaderImpl$MyClassLoader__
#define __gnu_java_rmi_server_RMIClassLoaderImpl$MyClassLoader__

#pragma interface

#include <java/net/URLClassLoader.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace rmi
      {
        namespace server
        {
            class RMIClassLoaderImpl$MyClassLoader;
        }
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class URL;
    }
  }
}

class gnu::java::rmi::server::RMIClassLoaderImpl$MyClassLoader : public ::java::net::URLClassLoader
{

public: // actually package-private
  RMIClassLoaderImpl$MyClassLoader(JArray< ::java::net::URL * > *, ::java::lang::ClassLoader *, ::java::lang::String *);
public:
  static ::java::lang::String * urlToAnnotation(JArray< ::java::net::URL * > *);
  virtual ::java::lang::String * getClassAnnotation();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::net::URLClassLoader)))) annotation;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_rmi_server_RMIClassLoaderImpl$MyClassLoader__
