int IProtocol.AddFunction(string function, out IReadOnlyList <string> errors) { errors = null; FunctionData newFunction = FunctionManager.CreateFunction(); newFunction.Expression = function; if (FunctionManager.Compile()) { UpdateFunctions(); return(newFunction.Id); } errors = FunctionManager.Errors.Select(e => e.Text).ToList(); return(-1); }
/// <summary> /// Test code that will be removed before shipping. /// </summary> private void PerfTest() { using (var supression = AppTelemetry.Current.Supress()) { FunctionManager.Functions.Clear(); int lowerBound = -10 * _perfTestMultiple; int upperBound = 10 * _perfTestMultiple; FunctionData[] functions = new FunctionData[upperBound - lowerBound]; for (int i = lowerBound; i < upperBound; i++) { FunctionData test = FunctionManager.CreateFunction(); test.Expression = $"sin(x + {i}) + {i}/2"; functions[i - lowerBound] = test; } FunctionManager.Compile(); Graph.Functions = functions; _perfTestMultiple++; } }