protected PathVariableVersionHandler(PathVariableVersionHandler other) : this() { this.startingNode = other.startingNode; this.callStack = new Stack <LocalFlowVariableOverlay <int> >( other.callStack.Select(overlay => overlay.Clone())); this.variableVersions = other.variableVersions.Clone(varInfo => varInfo.Clone()); this.Path = other.Path; this.SmtContextHandler = other.SmtContextHandler; this.callExtensionKindStack = new Stack <CallExtensionKind>(other.callExtensionKindStack.Reverse()); }
public PathVariableVersionHandler( Path path, StartingNodeInfo startingNode, SmtContextHandler smtContextHandler) : this() { Contract.Requires(path != null); Contract.Requires(startingNode != null); Contract.Requires(smtContextHandler != null); this.startingNode = startingNode; this.callStack = new Stack <LocalFlowVariableOverlay <int> >(); this.variableVersions = new FlowGraphsVariableOverlay <VariableVersionInfo>(() => new VariableVersionInfo()); this.callExtensionKindStack = new Stack <CallExtensionKind>(); this.Path = path; this.SmtContextHandler = smtContextHandler; }