MCPcopy Create free account
hub / github.com/KDE/kdiff3 / getLineInfo

Method getLineInfo

src/diff.cpp:1503–1542  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1501}
1502
1503void Diff3Line::getLineInfo(const e_SrcSelector winIdx, const bool isTriple, LineRef& lineIdx,
1504 std::shared_ptr<const DiffList>& pFineDiff1, std::shared_ptr<const DiffList>& pFineDiff2, // return values
1505 ChangeFlags& changed, ChangeFlags& changed2) const
1506{
1507 changed = NoChange;
1508 changed2 = NoChange;
1509 bool bAEqualB = this->isEqualAB() || (bWhiteLineA && bWhiteLineB);
1510 bool bAEqualC = this->isEqualAC() || (bWhiteLineA && bWhiteLineC);
1511 bool bBEqualC = this->isEqualBC() || (bWhiteLineB && bWhiteLineC);
1512
1513 assert(winIdx >= e_SrcSelector::A && winIdx <= e_SrcSelector::C);
1514 if(winIdx == e_SrcSelector::A)
1515 {
1516 lineIdx = getLineA();
1517 pFineDiff1 = pFineAB;
1518 pFineDiff2 = pFineCA;
1519
1520 changed = ((!getLineB().isValid()) != (!lineIdx.isValid()) ? AChanged : NoChange) |
1521 ((!getLineC().isValid()) != (!lineIdx.isValid()) && isTriple ? BChanged : NoChange);
1522 changed2 = (bAEqualB ? NoChange : AChanged) | (bAEqualC || !isTriple ? NoChange : BChanged);
1523 }
1524 else if(winIdx == e_SrcSelector::B)
1525 {
1526 lineIdx = getLineB();
1527 pFineDiff1 = pFineBC;
1528 pFineDiff2 = pFineAB;
1529 changed = ((!getLineC().isValid()) != (!lineIdx.isValid()) && isTriple ? AChanged : NoChange) |
1530 ((!getLineA().isValid()) != (!lineIdx.isValid()) ? BChanged : NoChange);
1531 changed2 = (bBEqualC || !isTriple ? NoChange : AChanged) | (bAEqualB ? NoChange : BChanged);
1532 }
1533 else if(winIdx == e_SrcSelector::C)
1534 {
1535 lineIdx = getLineC();
1536 pFineDiff1 = pFineCA;
1537 pFineDiff2 = pFineBC;
1538 changed = ((!getLineA().isValid()) != (!lineIdx.isValid()) ? AChanged : NoChange) |
1539 ((!getLineB().isValid()) != (!lineIdx.isValid()) ? BChanged : NoChange);
1540 changed2 = (bAEqualC ? NoChange : AChanged) | (bBEqualC ? NoChange : BChanged);
1541 }
1542}
1543
1544bool Diff3LineList::fineDiff(const e_SrcSelector selector, const std::shared_ptr<LineDataVector> &v1, const std::shared_ptr<LineDataVector> &v2, const IgnoreFlags eIgnoreFlags)
1545{

Callers 1

drawMethod · 0.80

Calls 4

isEqualABMethod · 0.95
isEqualACMethod · 0.95
isEqualBCMethod · 0.95
isValidMethod · 0.45

Tested by

no test coverage detected