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

#ifndef __gnu_classpath_ServiceFactory$ServiceIterator__
#define __gnu_classpath_ServiceFactory$ServiceIterator__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
        class ServiceFactory$ServiceIterator;
    }
  }
  namespace java
  {
    namespace net
    {
        class URL;
    }
    namespace security
    {
        class AccessControlContext;
    }
  }
}

class gnu::classpath::ServiceFactory$ServiceIterator : public ::java::lang::Object
{

public: // actually package-private
  ServiceFactory$ServiceIterator(::java::lang::Class *, ::java::util::Enumeration *, ::java::lang::ClassLoader *, jboolean, ::java::security::AccessControlContext *);
public:
  ::java::lang::Object * next();
  jboolean hasNext();
  void remove();
private:
  ::java::lang::Object * loadNextServiceProvider();
  void advanceReader();
  ::java::lang::Class * __attribute__((aligned(__alignof__( ::java::lang::Object)))) spi;
  ::java::util::Enumeration * urls;
  ::java::lang::ClassLoader * loader;
  ::java::security::AccessControlContext * securityContext;
  ::java::io::BufferedReader * reader;
  ::java::net::URL * currentURL;
  ::java::lang::Object * nextProvider;
  jboolean error;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_ServiceFactory$ServiceIterator__
