const ScfEline* el0 = *(const ScfEline**)v0;
const ScfEline* el1 = *(const ScfEline**)v1;
- if (SCF_EDA_PIN_POS == el0->flags)
+ if (SCF_EDA_PIN_POS & el0->flags)
return -1;
- if (SCF_EDA_PIN_NEG == el0->flags)
+ if (SCF_EDA_PIN_NEG & el0->flags)
return 1;
- if (SCF_EDA_PIN_POS == el1->flags)
+ if (SCF_EDA_PIN_POS & el1->flags)
return 1;
- if (SCF_EDA_PIN_NEG == el1->flags)
+ if (SCF_EDA_PIN_NEG & el1->flags)
return -1;
if (el0->n_conns < el1->n_conns)
else {
if (scf_eline__add_pin(el, p->cid, p->id) < 0)
return -ENOMEM;
- p ->lid = el->id;
-
- if (SCF_EDA_Battery == c->type) {
- if (SCF_EDA_Battery_POS == p->id)
- el->flags = SCF_EDA_PIN_POS;
- else
- el->flags = SCF_EDA_PIN_NEG;
- }
+
+ p ->lid = el->id;
+ el->flags |= p->flags;
goto next;
}
}
if (scf_eline__add_pin(el, p->cid, p->id) < 0)
return -ENOMEM;
- p ->lid = el->id;
- if (SCF_EDA_Battery == c->type) {
- if (SCF_EDA_Battery_POS == p->id)
- el->flags = SCF_EDA_PIN_POS;
- else
- el->flags = SCF_EDA_PIN_NEG;
- }
+ p ->lid = el->id;
+ el->flags |= p->flags;
next:
p = NULL;
}
if (!l)
return -ENOMEM;
- if (SCF_EDA_PIN_NEG == el->flags || SCF_EDA_PIN_POS == el->flags)
+ if ((SCF_EDA_PIN_NEG | SCF_EDA_PIN_POS) & el->flags)
l->x0 = bx;
- else
+
+ else if ((SCF_EDA_PIN_IN | SCF_EDA_PIN_OUT) & el->flags)
l->x0 = bx + d;
+ else
+ l->x0 = bx + 2 * d + rand() % d;
l->y0 = by + (n + j) * d;
l->y1 = l->y0;