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

#ifndef __java_util_concurrent_ConcurrentHashMap$HashIterator__
#define __java_util_concurrent_ConcurrentHashMap$HashIterator__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>


class java::util::concurrent::ConcurrentHashMap$HashIterator : public ::java::lang::Object
{

public: // actually package-private
  ConcurrentHashMap$HashIterator(::java::util::concurrent::ConcurrentHashMap *);
public:
  virtual jboolean hasMoreElements();
public: // actually package-private
  virtual void advance();
public:
  virtual jboolean hasNext();
public: // actually package-private
  virtual ::java::util::concurrent::ConcurrentHashMap$HashEntry * nextEntry();
public:
  virtual void remove();
public: // actually package-private
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) nextSegmentIndex;
  jint nextTableIndex;
  JArray< ::java::util::concurrent::ConcurrentHashMap$HashEntry * > * currentTable;
  ::java::util::concurrent::ConcurrentHashMap$HashEntry * nextEntry__;
  ::java::util::concurrent::ConcurrentHashMap$HashEntry * lastReturned;
  ::java::util::concurrent::ConcurrentHashMap * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_ConcurrentHashMap$HashIterator__
