Esempio n. 1
0
        public ITerminalNode <T> BuildTerminalNode <T>(AlphaBuilderContext <T> context)
            where T : class
        {
            using (_logger.BeginScope($"{nameof(BuildTerminalNode)}<{typeof(T).Name}>"))
            {
                BetaBuilderContext <T> betaContext = BuildJoinNode(context);

                var factIndexMap = betaContext.CreateIndexMap(betaContext.Declaration);

                _logger.LogDebug($"Creating terminal node: {typeof(T).Name}");

                return(new TerminalNode <T>(betaContext.CurrentSource, factIndexMap));
            }
        }
        public BetaBuilderContext <TFact> Build(IRuntimeBuilder builder, BetaBuilderContext <TFact> context)
        {
//            var terminalContext = builder.BuildTerminalNode(context);
//
//
//            terminalContext = builder.BuildRuleNode(terminalContext, _actions);
//
//            foreach (var action in _actions)
//            {
//
//                context = builder.BuildSelectionNode(context, action.ConditionExpression);
//            }

            return(context);
        }
 public ContextValue(AlphaBuilderContext <T> alphaContext, BetaBuilderContext <T> betaContext)
 {
     _alphaContext = alphaContext;
     _betaContext  = betaContext;
 }
 public void Add <T>(AlphaBuilderContext <T> alphaContext, BetaBuilderContext <T> betaContext)
     where T : class
 {
     _values.Add(alphaContext.Declaration, new ContextValue <T>(alphaContext, betaContext));
 }
Esempio n. 5
0
        public BetaBuilderContext <TLeft, T> BuildJoinNode <T, TLeft>(AlphaBuilderContext <T> context, BetaBuilderContext <TLeft> betaContext)
            where T : class
            where TLeft : class
        {
            using (_logger.BeginScope($"{nameof(BuildJoinNode)}<{typeof(T).Name}>"))
            {
                var betaSource  = betaContext.CurrentSource as ITupleSource <TLeft>;
                var alphaSource = context.CurrentSource as IFactSource <T>;

                _logger.LogDebug($"Creating join node: {typeof(T).Name}");

                var node = new JoinNode <TLeft, T>(betaSource, alphaSource, new BetaCondition <TLeft, T>((x, y) => true));

                return(new RuntimeBetaBuilderContext <TLeft, T>(context.Declaration, node));
            }
        }