// ----------------------------------------------------------------------------- // file="Mix" // Project: StgSharp // Copyright (c) Nitload. // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Nitload.RegularAnalysis.Abstraction { public class Mix( TEvaluator evaluator ) where TEvaluator : IMixEvaluator { public TValue Weight { get; private set; } = default!; private TEvaluator Evaluator { get; init; } = evaluator; public TValue Evaluate( Span> relations ) { Weight = Evaluator.Evaluate(relations); return Weight; } } public sealed class Mix( IMixEvaluator evaluator ) : Mix>(evaluator) { } public interface IMixEvaluator { public Relation>[] DownstreamPorts { get; } TValue Evaluate( Span> relations ); } }