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

#ifndef __java_util_concurrent_SynchronousQueue$TransferStack__
#define __java_util_concurrent_SynchronousQueue$TransferStack__

#pragma interface

#include <java/util/concurrent/SynchronousQueue$Transferer.h>

class java::util::concurrent::SynchronousQueue$TransferStack : public ::java::util::concurrent::SynchronousQueue$Transferer
{

public: // actually package-private
  SynchronousQueue$TransferStack();
  static jboolean isFulfilling(jint);
  jboolean casHead(::java::util::concurrent::SynchronousQueue$TransferStack$SNode *, ::java::util::concurrent::SynchronousQueue$TransferStack$SNode *);
  static ::java::util::concurrent::SynchronousQueue$TransferStack$SNode * snode(::java::util::concurrent::SynchronousQueue$TransferStack$SNode *, ::java::lang::Object *, ::java::util::concurrent::SynchronousQueue$TransferStack$SNode *, jint);
  ::java::lang::Object * transfer(::java::lang::Object *, jboolean, jlong);
  ::java::util::concurrent::SynchronousQueue$TransferStack$SNode * awaitFulfill(::java::util::concurrent::SynchronousQueue$TransferStack$SNode *, jboolean, jlong);
  jboolean shouldSpin(::java::util::concurrent::SynchronousQueue$TransferStack$SNode *);
  void clean(::java::util::concurrent::SynchronousQueue$TransferStack$SNode *);
  static const jint REQUEST = 0;
  static const jint DATA = 1;
  static const jint FULFILLING = 2;
  ::java::util::concurrent::SynchronousQueue$TransferStack$SNode * volatile __attribute__((aligned(__alignof__( ::java::util::concurrent::SynchronousQueue$Transferer)))) head;
  static ::java::util::concurrent::atomic::AtomicReferenceFieldUpdater * headUpdater;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_SynchronousQueue$TransferStack__
