Ejemplo n.º 1
0
void gbB::remove_unneeded_pairs(int id)
{
  /* Removes all pairs from C->S that are not needed */
  spair head;
  spair *p = &head;
  gbelem *m = gb[id];

  head.next = S->heap;
  while (p->next != 0)
    if (pair_not_needed(p->next, m))
      {
        nsaved_unneeded++;
        spair *tmp = p->next;
        p->next = tmp->next;
        tmp->next = 0;
        if (M2_gbTrace >= 10)
          {
            buffer o;
            o << "removing unneeded ";
            spair_text_out(o, tmp);
            emit_line(o.str());
          }
        spair_delete(tmp);
        S->nelems--;
      }
  else
    p = p->next;
  S->heap = head.next;
}
Ejemplo n.º 2
0
int F4SPairSet::remove_unneeded_pairs()
{
  // Loop through every spair, determine if it can be jettisoned
  // and do so.  Return the number removed.

  // MES: Check the ones in this_set? Probably not needed...
  spair head;
  spair *p = &head;
  gbelem *m = gb[gb.size() - 1];
  int nremoved = 0;

  head.next = heap;
  while (p->next != 0)
    if (pair_not_needed(p->next, m))
      {
        nremoved++;
        spair *tmp = p->next;
        p->next = tmp->next;
        tmp->next = 0;
        delete_spair(tmp);
      }
    else
      p = p->next;
  heap = head.next;
  return nremoved;
}