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

#ifndef __java_util_concurrent_CyclicBarrier__
#define __java_util_concurrent_CyclicBarrier__

#pragma interface

#include <java/lang/Object.h>

class java::util::concurrent::CyclicBarrier : public ::java::lang::Object
{

  void nextGeneration();
  void breakBarrier();
  jint dowait(jboolean, jlong);
public:
  CyclicBarrier(jint, ::java::lang::Runnable *);
  CyclicBarrier(jint);
  virtual jint getParties();
  virtual jint await();
  virtual jint await(jlong, ::java::util::concurrent::TimeUnit *);
  virtual jboolean isBroken();
  virtual void reset();
  virtual jint getNumberWaiting();
private:
  ::java::util::concurrent::locks::ReentrantLock * __attribute__((aligned(__alignof__( ::java::lang::Object)))) lock;
  ::java::util::concurrent::locks::Condition * trip;
  jint parties;
  ::java::lang::Runnable * barrierCommand;
  ::java::util::concurrent::CyclicBarrier$Generation * generation;
  jint count;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_CyclicBarrier__
