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

#ifndef __java_util_concurrent_ConcurrentLinkedQueue$Node__
#define __java_util_concurrent_ConcurrentLinkedQueue$Node__

#pragma interface

#include <java/lang/Object.h>

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

public: // actually package-private
  ConcurrentLinkedQueue$Node(::java::lang::Object *);
  ConcurrentLinkedQueue$Node(::java::lang::Object *, ::java::util::concurrent::ConcurrentLinkedQueue$Node *);
  virtual ::java::lang::Object * getItem();
  virtual jboolean casItem(::java::lang::Object *, ::java::lang::Object *);
  virtual void setItem(::java::lang::Object *);
  virtual ::java::util::concurrent::ConcurrentLinkedQueue$Node * getNext();
  virtual jboolean casNext(::java::util::concurrent::ConcurrentLinkedQueue$Node *, ::java::util::concurrent::ConcurrentLinkedQueue$Node *);
  virtual void setNext(::java::util::concurrent::ConcurrentLinkedQueue$Node *);
private:
  ::java::lang::Object * volatile __attribute__((aligned(__alignof__( ::java::lang::Object)))) item;
  ::java::util::concurrent::ConcurrentLinkedQueue$Node * volatile next;
  static ::java::util::concurrent::atomic::AtomicReferenceFieldUpdater * nextUpdater;
  static ::java::util::concurrent::atomic::AtomicReferenceFieldUpdater * itemUpdater;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_ConcurrentLinkedQueue$Node__
