Lines Matching defs:ChainEdge
369 struct ChainEdge { struct
375 explicit ChainEdge(JumpT *Jump) in ChainEdge() argument
379 ChainT *srcChain() const { return SrcChain; } in srcChain()
381 ChainT *dstChain() const { return DstChain; } in dstChain()
383 bool isSelfEdge() const { return SrcChain == DstChain; } in isSelfEdge()
385 const std::vector<JumpT *> &jumps() const { return Jumps; } in jumps()
387 void appendJump(JumpT *Jump) { Jumps.push_back(Jump); } in appendJump()
389 void moveJumps(ChainEdge *Other) { in moveJumps()
395 void changeEndpoint(ChainT *From, ChainT *To) { in changeEndpoint()
402 bool hasCachedMergeGain(ChainT *Src, ChainT *Dst) const { in hasCachedMergeGain()
406 MergeGainT getCachedMergeGain(ChainT *Src, ChainT *Dst) const { in getCachedMergeGain()
410 void setCachedMergeGain(ChainT *Src, ChainT *Dst, MergeGainT MergeGain) { in setCachedMergeGain()
420 void invalidateCache() { in invalidateCache()
425 void setMergeGain(MergeGainT Gain) { CachedGain = Gain; } in setMergeGain()
427 MergeGainT getMergeGain() const { return CachedGain; } in getMergeGain()
429 double gain() const { return CachedGain.score(); } in gain()
433 ChainT *SrcChain{nullptr};
435 ChainT *DstChain{nullptr};
437 std::vector<JumpT *> Jumps;
439 MergeGainT CachedGain;
445 MergeGainT CachedGainForward;
446 MergeGainT CachedGainBackward;
448 bool CacheValidForward{false};
449 bool CacheValidBackward{false};