コード例 #1
0
ファイル: NTestNode.cs プロジェクト: joaocc/creshendo--git
        /// <summary> Assert will first pass the facts to the parameters. Once the
        /// parameters are set, it should call execute to get the result.
        /// </summary>
        public override void assertLeft(Index linx, Rete engine, WorkingMemory mem)
        {
            Map leftmem = (Map)mem.getBetaLeftMemory(this);

            if (!leftmem.containsKey(linx))
            {
                Parameters = linx.Facts;
                ReturnVector rv = func.executeFunction(engine, params_Renamed);
                if (!rv.firstReturnValue().BooleanValue)
                {
                    BetaMemory bmem = new BetaMemoryImpl(linx);
                    leftmem.put(bmem.Index, bmem);
                }
                // only propogate if left memories count is zero
                if (leftmem.size() == 0)
                {
                    propogateAssert(linx, engine, mem);
                }
            }
        }