public void CopyVariablesFrom(TES5LocalScope otherScope) { TES5LocalVariable[] scopeVariables = GetScopeVariables().ToArray(); TES5LocalVariable[] otherScopeVariables = otherScope.localVariables.Where(v => !scopeVariables.Contains(v)).ToArray(); foreach (var variable in otherScopeVariables) { localVariables.Add(variable); } }
private IEnumerable <TES5LocalVariable> GetAllVariables() { TES5LocalScope scope = this; do { foreach (TES5LocalVariable variable in scope.LocalVariables) { yield return(variable); } scope = scope.ParentScope; }while (scope != null); foreach (TES5LocalVariable variable in this.FunctionScope.Variables.Values) { yield return(variable); } }
/* * TES5LocalScope constructor. */ public TES5LocalScope(TES5FunctionScope functionScope, TES5LocalScope parentScope = null) { this.FunctionScope = functionScope; this.ParentScope = parentScope; }