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

#ifndef __java_util_WeakHashMap$WeakBucket$WeakEntry__
#define __java_util_WeakHashMap$WeakBucket$WeakEntry__

#pragma interface

#include <java/lang/Object.h>

class java::util::WeakHashMap$WeakBucket$WeakEntry : public ::java::lang::Object
{

public:
  WeakHashMap$WeakBucket$WeakEntry(::java::util::WeakHashMap$WeakBucket *, ::java::lang::Object *);
  virtual ::java::util::WeakHashMap$WeakBucket * getBucket();
  virtual ::java::lang::Object * getKey();
  virtual ::java::lang::Object * getValue();
  virtual ::java::lang::Object * setValue(::java::lang::Object *);
  virtual jint hashCode();
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * toString();
public: // actually package-private
  ::java::lang::Object * __attribute__((aligned(__alignof__( ::java::lang::Object)))) key;
  ::java::util::WeakHashMap$WeakBucket * this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_WeakHashMap$WeakBucket$WeakEntry__
