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

#ifndef __gnu_java_util_WeakIdentityHashMap$WeakBucket$WeakEntry__
#define __gnu_java_util_WeakIdentityHashMap$WeakBucket$WeakEntry__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace util
      {
          class WeakIdentityHashMap$WeakBucket;
          class WeakIdentityHashMap$WeakBucket$WeakEntry;
      }
    }
  }
}

class gnu::java::util::WeakIdentityHashMap$WeakBucket$WeakEntry : public ::java::lang::Object
{

public:
  WeakIdentityHashMap$WeakBucket$WeakEntry(::gnu::java::util::WeakIdentityHashMap$WeakBucket *, ::java::lang::Object *);
  virtual ::gnu::java::util::WeakIdentityHashMap$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;
  ::gnu::java::util::WeakIdentityHashMap$WeakBucket * this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_util_WeakIdentityHashMap$WeakBucket$WeakEntry__
