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

#ifndef __java_util_concurrent_locks_ReentrantReadWriteLock$WriteLock__
#define __java_util_concurrent_locks_ReentrantReadWriteLock$WriteLock__

#pragma interface

#include <java/lang/Object.h>

class java::util::concurrent::locks::ReentrantReadWriteLock$WriteLock : public ::java::lang::Object
{

public: // actually protected
  ReentrantReadWriteLock$WriteLock(::java::util::concurrent::locks::ReentrantReadWriteLock *);
public:
  virtual void lock();
  virtual void lockInterruptibly();
  virtual jboolean tryLock();
  virtual jboolean tryLock(jlong, ::java::util::concurrent::TimeUnit *);
  virtual void unlock();
  virtual ::java::util::concurrent::locks::Condition * newCondition();
  virtual ::java::lang::String * toString();
  virtual jboolean isHeldByCurrentThread();
  virtual jint getHoldCount();
private:
  static const jlong serialVersionUID = -4992448646407690164LL;
  ::java::util::concurrent::locks::ReentrantReadWriteLock$Sync * __attribute__((aligned(__alignof__( ::java::lang::Object)))) sync;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_locks_ReentrantReadWriteLock$WriteLock__
