#include "oop.h"

IdentitySet::IdentitySet(int size) : Set(size)
{
}

oop IdentitySet::classNew(int size)
{
  return new IdentitySet(size);
}

int IdentitySet::scanFor(oop anObject)
{
  int finish= mArray->size();
  int start= anObject->identityHash() % finish;
  // Search from (hash mod size) to the end.
  for (int index= start;  index < finish;  ++index)
    {
      oop element= mArray->at(index);
      if ((!element) || (element == anObject))
	return index;
    }
  for (int index= 0;  index < start;  ++index)
    {
      oop element= mArray->at(index);
      if ((!element) || (element == anObject))
	return index;
    }
  return -1;  // No match AND no empty slot
}

