public static STuple <CFGBlock, CFGBlock, string> GetContextEdge(this ContextEdge @this, BijectiveMap <Subroutine, int> subroutineLocalIds) { return(new STuple <CFGBlock, CFGBlock, string>( subroutineLocalIds.KeyForValue(@this.Block1SubroutineLocalId).Blocks.First(b => b.Index == @this.Block1Index), subroutineLocalIds.KeyForValue(@this.Block2SubroutineLocalId).Blocks.First(b => b.Index == @this.Block2Index), @this.Tag)); }
public static void SetContextEdge(this ContextEdge @this, BijectiveMap <Subroutine, int> subroutineLocalIds, STuple <CFGBlock, CFGBlock, string> edge) { @this.Block1SubroutineLocalId = subroutineLocalIds[edge.One.Subroutine]; @this.Block1Index = edge.One.Index; @this.Block2SubroutineLocalId = subroutineLocalIds[edge.Two.Subroutine]; @this.Block2Index = edge.Two.Index; @this.Tag = edge.Three; }