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

#ifndef __java_util_ServiceLoader__
#define __java_util_ServiceLoader__

#pragma interface

#include <java/lang/Object.h>

class java::util::ServiceLoader : public ::java::lang::Object
{

  ServiceLoader(::java::lang::Class *, ::java::lang::ClassLoader *);
public:
  ::java::util::Iterator * iterator();
  static ::java::util::ServiceLoader * load(::java::lang::Class *);
  static ::java::util::ServiceLoader * load(::java::lang::Class *, ::java::lang::ClassLoader *);
  static ::java::util::ServiceLoader * loadInstalled(::java::lang::Class *);
  void reload();
  ::java::lang::String * toString();
public: // actually package-private
  static ::java::util::List * access$0(::java::util::ServiceLoader *);
  static ::java::util::Iterator * access$1(::java::util::ServiceLoader *);
  static ::java::lang::Class * access$2(::java::util::ServiceLoader *);
  static ::java::lang::ClassLoader * access$3(::java::util::ServiceLoader *);
  static void access$4(::java::util::ServiceLoader *, ::java::util::Iterator *);
private:
  ::java::lang::Class * __attribute__((aligned(__alignof__( ::java::lang::Object)))) spi;
  ::java::lang::ClassLoader * loader;
  ::java::util::List * cache;
  ::java::util::Iterator * serviceIt;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_ServiceLoader__
