public static void EqualsHelper <K, T, M>( MaskItemIndexed <K, bool, M?> maskItem, T lhs, T rhs, Func <K, T, T, M> maskGetter, Include include) where M : class, IMask <bool> { if (lhs == null && rhs == null) { maskItem.Overall = true; maskItem.Specific = default; } else if (lhs == null || rhs == null) { maskItem.Overall = false; maskItem.Specific = default; } var mask = maskGetter(maskItem.Index, lhs, rhs); maskItem.Overall = mask.All((b) => b); if (!maskItem.Overall || include == Include.All) { maskItem.Specific = mask; } }
public bool Equals(MaskItemIndexed <TOverall, TSpecific>?other) { if (!base.Equals(other)) { return(false); } return(Index == other.Index); }
protected void Translate_InternalFill<R>(Mask<R> obj, Func<TItem, R> eval) { base.Translate_InternalFill(obj, eval); if (PhaseFragments != null) { obj.PhaseFragments = new MaskItem<R, IEnumerable<MaskItemIndexed<R, ScenePhaseFragment.Mask<R>?>>?>(eval(this.PhaseFragments.Overall), Enumerable.Empty<MaskItemIndexed<R, ScenePhaseFragment.Mask<R>?>>()); if (PhaseFragments.Specific != null) { var l = new List<MaskItemIndexed<R, ScenePhaseFragment.Mask<R>?>>(); obj.PhaseFragments.Specific = l; foreach (var item in PhaseFragments.Specific.WithIndex()) { MaskItemIndexed<R, ScenePhaseFragment.Mask<R>?>? mask = item.Item == null ? null : new MaskItemIndexed<R, ScenePhaseFragment.Mask<R>?>(item.Item.Index, eval(item.Item.Overall), item.Item.Specific?.Translate(eval)); if (mask == null) continue; l.Add(mask); } } } }
protected void Translate_InternalFill <R>(Mask <R> obj, Func <TItem, R> eval) { obj.Name = eval(this.Name); if (Functions != null) { obj.Functions = new MaskItem <R, IEnumerable <MaskItemIndexed <R, PexObjectNamedFunction.Mask <R>?> >?>(eval(this.Functions.Overall), Enumerable.Empty <MaskItemIndexed <R, PexObjectNamedFunction.Mask <R>?> >()); if (Functions.Specific != null) { var l = new List <MaskItemIndexed <R, PexObjectNamedFunction.Mask <R>?> >(); obj.Functions.Specific = l; foreach (var item in Functions.Specific.WithIndex()) { MaskItemIndexed <R, PexObjectNamedFunction.Mask <R>?>?mask = item.Item == null ? null : new MaskItemIndexed <R, PexObjectNamedFunction.Mask <R>?>(item.Item.Index, eval(item.Item.Overall), item.Item.Specific?.Translate(eval)); if (mask == null) { continue; } l.Add(mask); } } } }