/// <summary> /// reduces a <see cref="FaultTreeTerminalNode"/> /// </summary> /// <param name="tr"> /// The Tree transformer. /// </param> /// <typeparam name="T"> /// Return type. /// </typeparam> /// <returns> /// The <see> /// <cref>T</cref> /// </see> /// . /// </returns> public override T Reduce <T>(FaultTreeTransformer <T> tr) { return(tr.Transform(this)); }
/// <summary> /// FaultTree wrapper for Reduce that produces a new FaultTree based on the used transformer. /// </summary> /// <param name="tr">The Tree Transformer</param> /// <returns>The <see cref="FaultTree"/></returns> public FaultTree TreeMap(FaultTreeTransformer <FaultTreeNode> tr) { return(new FaultTree(this.Root.Reduce(tr))); }
/// <summary> /// Applies Transformer recursively on childs. /// </summary> /// <param name="tr"> /// The TreeTransformer. /// </param> /// <typeparam name="T"> /// Resulting type of reduction. /// </typeparam> /// <returns> /// The <see> /// <cref>T</cref> /// </see> /// . /// </returns> public override T Reduce <T>(FaultTreeTransformer <T> tr) { var l = this.Childs.Select(c => c.Reduce(tr)).ToList(); return(tr.Transform(this, l)); }
/// <summary> /// Reduce the FaultTree using a transformer to a T object /// </summary> /// <typeparam name="T">Target type</typeparam> /// <param name="tr">TreeTransformer used for conversion</param> /// <returns>Reduced T</returns> public T Reduce <T>(FaultTreeTransformer <T> tr) { return(this.Root.Reduce(tr)); }
/// <summary> /// Reducer that has to be overwritten by concrete implementations. /// </summary> /// <param name="tr"> /// The tr. /// </param> /// <typeparam name="T"> /// FaultTree will be reduced to type T. /// </typeparam> /// <returns> /// The <see> /// <cref>T</cref> /// </see> /// . /// </returns> public abstract T Reduce <T>(FaultTreeTransformer <T> tr);