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

#ifndef __gnu_gcj_runtime_PersistentByteMap$HashIterator__
#define __gnu_gcj_runtime_PersistentByteMap$HashIterator__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
      namespace runtime
      {
          class PersistentByteMap;
          class PersistentByteMap$HashIterator;
      }
    }
  }
}

class gnu::gcj::runtime::PersistentByteMap$HashIterator : public ::java::lang::Object
{

public: // actually package-private
  PersistentByteMap$HashIterator(::gnu::gcj::runtime::PersistentByteMap *, jint);
public:
  jboolean hasNext();
  ::java::lang::Object * next();
  void remove();
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) idx;
  jint count;
  jint type;
public: // actually package-private
  ::gnu::gcj::runtime::PersistentByteMap * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_gcj_runtime_PersistentByteMap$HashIterator__
