private void FunctionValuesValuesChanged(object sender, MultiDimensionalArrayChangingEventArgs args) { var e = args; IVariable variable = null; //lazy initialize //performance tweak if (!doNotCheckForDependentVariableResize) { //handle internal consistency: variable = GetVariableForArray((MultiDimensionalArray)sender); if (variable.IsIndependent) { ResizeDependendFunctionValuesForArgument(variable, e.Action, args.Index, args.OldIndex, e.Shape[0]); } } if (!FireEvents || FunctionValuesChanged == null) // don't send up { return; } //raise event to the outside world if the store is consistent. variable = variable ?? GetVariableForArray((MultiDimensionalArray)sender); var newArgs = GetValuesChangedEventArgs(e, variable); FunctionValuesChanged(this, newArgs); }
// TODO: make it ValuesChanged private void FunctionValuesValuesChanged(object sender, MultiDimensionalArrayChangingEventArgs args) { var e = args; //update dependend arrays var array = (MultiDimensionalArray)sender; //it this OK? IVariable variable = GetVariableForArray(array); if (variable.IsIndependent) { ResizeDependendFunctionValuesForArgument(variable, e.Action, args.Index, args.OldIndex, e.Shape[0]); } if (!FireEvents) // don't send up { return; } //raise event to the outside world if the store is consistent. if (FunctionValuesChanged != null) { FunctionValuesChangingEventArgs valuesChangedEventArgs = GetValuesChangedEventArgs(e, variable); FunctionValuesChanged(this, valuesChangedEventArgs); } }
private void FireCollectionChanged(NotifyCollectionChangeAction action, IList values, int index1d, int oldIndex1d, int[] shape) { if (CollectionChanged == null) { return; } var eventArgs = new MultiDimensionalArrayChangingEventArgs(action, values, index1d, oldIndex1d, stride, shape); CollectionChanged(this, eventArgs); }
private MultiDimensionalArrayChangingEventArgs FireCollectionChanging(NotifyCollectionChangeAction action, IList values, int index1d, int[] itemsShape) { if (CollectionChanging == null) { return(null); } var eventArgs = new MultiDimensionalArrayChangingEventArgs(action, values, index1d, -1, stride, itemsShape); CollectionChanging(this, eventArgs); return(eventArgs); }
private static FunctionValuesChangingEventArgs GetValuesChangedEventArgs(MultiDimensionalArrayChangingEventArgs e, IVariable variable) { return(new FunctionValuesChangingEventArgs { Action = e.Action, Items = e.Items, Index = e.Index, OldIndex = -1, Stride = e.Stride, Shape = e.Shape, Function = variable }); }
// TODO: make it ValuesChanging private void FunctionValuesValuesChanging(object sender, MultiDimensionalArrayChangingEventArgs args) { if (!FireEvents || FunctionValuesChanging == null) // don't send up { return; } var e = args; var array = (MultiDimensionalArray)sender; var variable = GetVariableForArray(array); //todo handle/bubble event the complex var valuesChangedEventArgs = GetValuesChangedEventArgs(e, variable); FunctionValuesChanging(this, valuesChangedEventArgs); args.Items = valuesChangedEventArgs.Items; args.Index = valuesChangedEventArgs.Index; args.Cancel = valuesChangedEventArgs.Cancel; }