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

#ifndef __java_util_concurrent_ConcurrentLinkedQueue$Itr__
#define __java_util_concurrent_ConcurrentLinkedQueue$Itr__

#pragma interface

#include <java/lang/Object.h>

class java::util::concurrent::ConcurrentLinkedQueue$Itr : public ::java::lang::Object
{

public: // actually package-private
  ConcurrentLinkedQueue$Itr(::java::util::concurrent::ConcurrentLinkedQueue *);
private:
  ::java::lang::Object * advance();
public:
  virtual jboolean hasNext();
  virtual ::java::lang::Object * next();
  virtual void remove();
private:
  ::java::util::concurrent::ConcurrentLinkedQueue$Node * __attribute__((aligned(__alignof__( ::java::lang::Object)))) nextNode;
  ::java::lang::Object * nextItem;
  ::java::util::concurrent::ConcurrentLinkedQueue$Node * lastRet;
public: // actually package-private
  ::java::util::concurrent::ConcurrentLinkedQueue * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_ConcurrentLinkedQueue$Itr__
