package Vector;

sub contains {
  my ($vec_ref, $element)=@_;
  my ($i, $class, $crap);

  if (ref($vec_ref) ne "ARRAY") {
    return(0);
  }
  if ($#$vec_ref==-1) {
    return(0);
  }
  for($i=0;$i<=$#$vec_ref;$i++) {
    $class=ref($$vec_ref[$i]);
    $crap=$$vec_ref[$i];
    if ($class eq "") {
      if ($element eq $$vec_ref[$i]) {
	return(1);
      }
    } elsif ($element->equals($$vec_ref[$i])) {
      return(1);
    }
  }
  return(0);
}

sub removeElement {
  my ($vec_ref, $element)=@_;
  my ($i, $class);

  if ($#$vec_ref==-1) {
    return;
  }
  for($i=0;$i<=$#$vec_ref;$i++) {
    $class=ref($$vec_ref[$i]);
    if ($class eq "") {
      if ($element eq $$vec_ref[$i]) {
	if ($i==$#vec) {
	  pop(@$vec_ref);
	} else {
	  $$vec_ref[$i]=pop(@$vec_ref);
	}
	return;
      }
    } else {
      if ($element->equals($$vec_ref[$i])) {
	if ($i==$#$vec_ref) {
	  pop(@$vec_ref);
	} else {
	  $$vec_ref[$i]=pop(@$vec_ref);
	}
	return;
      }
    }
  }
  General::log("Vector::remove -- ".ref($element)." element ($element) not found");
  return;
}

1;
