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

#ifndef __gnu_java_io_ObjectIdentityMap2Int__
#define __gnu_java_io_ObjectIdentityMap2Int__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace io
      {
          class ObjectIdentityMap2Int;
      }
    }
  }
}

class gnu::java::io::ObjectIdentityMap2Int : public ::java::lang::Object
{

public:
  ObjectIdentityMap2Int();
private:
  void alloc(jint);
public:
  virtual void put(::java::lang::Object *, jint);
private:
  jint slot(::java::lang::Object *);
  void rehash();
public:
  virtual jint get(::java::lang::Object *);
  virtual void clear();
private:
  static JArray< jint > * PRIMES;
  static ::java::lang::Object * NIL;
  JArray< ::java::lang::Object * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) objectTable;
  JArray< jint > * intTable;
  jint size;
  jint cap;
  jint limit;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_io_ObjectIdentityMap2Int__
