public void DestroyedExpression(CreateExpressionDesc expressionDesc) { using (_iLock.Acquire()) { if (expressionDesc.Expression != null) { _globalExpressions.Remove(expressionDesc.Expression.Name); } else { _globalScripts.Remove(expressionDesc.Script.Name); } } }
public String AddExpressionOrScript(CreateExpressionDesc expressionDesc) { using (_iLock.Acquire()) { if (expressionDesc.Expression != null) { ExpressionDeclItem expression = expressionDesc.Expression; String name = expression.Name; if (_globalExpressions.ContainsKey(name)) { throw new ExprValidationException("Expression '" + name + "' has already been declared"); } _globalExpressions.Put(name, expression); return(name); } else { ExpressionScriptProvided newScript = expressionDesc.Script; String name = newScript.Name; List <ExpressionScriptProvided> scripts = _globalScripts.Get(name); if (scripts != null) { foreach (ExpressionScriptProvided script in scripts) { if (script.ParameterNames.Count == newScript.ParameterNames.Count) { throw new ExprValidationException( "Script '" + name + "' that takes the same number of parameters has already been declared"); } } } else { scripts = new List <ExpressionScriptProvided>(2); _globalScripts.Put(name, scripts); } scripts.Add(newScript); return(name); } } }