Example #1
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(" + TRUE_Renamed);
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(true)\n" + "Function description:\n" + "\tRepresentation of the boolean constant true.");
     }
 }
Example #2
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(radians");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(radians (<literal> | <binding>)+)\n" + "Function description:\n" + "\t Converts its only argument from units of degrees" + "to units of radians.");
     }
 }
Example #3
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(/");
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 buf.Append(" ?" + bp.VariableName);
             }
             else if (params_Renamed[idx] is ValueParam)
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
             else
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(/ (<literal> | <binding>)+)\n" + "Function description:\n" + "\t Returns the value of the first argument divided by " + "each of the subsequent arguments.");
     }
 }
Example #4
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(<");
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 buf.Append(" ?" + bp.VariableName);
             }
             else if (params_Renamed[idx] is ValueParam)
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
             else
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(< (<literal> | <binding>)+)\n" + "Function description:\n" + "\t Returns the symbol TRUE if for all its arguments, " + "argument \n \t n-1 is less than argument n");
     }
 }
Example #5
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(*");
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 buf.Append(" ?" + bp.VariableName);
             }
             else if (params_Renamed[idx] is ValueParam)
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
             else
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(* (<literal> | <binding>)+)\n" + "Function description:\n" + "\tCalculates the product of its arguments.");
     }
 }
Example #6
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(log");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(log <expression>)\n" + "Function description:\n" + "\tCalculates the natural logarithm of its argument.");
     }
 }
Example #7
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(exp");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(exp (<literal> | <binding>)+)\n" + "Function description:\n" + "\tRaises the value e to the power specified by its\n" + "\targuments.");
     }
 }
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(instanceof");
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 buf.Append(" ?" + bp.VariableName);
             }
             else if (params_Renamed[idx] is ValueParam)
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
             else
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(instanceof <Java-object> <class-name>)\n");
     }
 }
Example #9
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(load-facts");
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 buf.Append(" ?" + bp.VariableName);
             }
             else if (params_Renamed[idx] is ValueParam)
             {
                 buf.Append(" \"" + params_Renamed[idx].StringValue + "\"");
             }
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(load <filename>)\n" + "Command description:\n" + "\tLoad the file <filename>.");
     }
 }
Example #10
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(min");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(min (<literal> | <binding>)+)\n" + "Function description:\n" + "\tReturns the value of its smallest numeric argument.");
     }
 }
Example #11
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            bool boolVal = true;

            if (params_Renamed != null)
            {
                if (params_Renamed.Length == 1)
                {
                    if (params_Renamed[0] is ValueParam)
                    {
                        ValueParam n = (ValueParam)params_Renamed[0];
                        boolVal = n.BooleanValue;
                    }
                    else if (params_Renamed[0] is BoundParam)
                    {
                        BoundParam bp = (BoundParam)params_Renamed[0];
                        boolVal = ((Boolean)engine.getBinding(bp.VariableName));
                    }
                    else if (params_Renamed[0] is FunctionParam2)
                    {
                        FunctionParam2 n = (FunctionParam2)params_Renamed[0];
                        n.Engine = engine;
                        n.lookUpFunction();
                        IReturnVector rval = (IReturnVector)n.Value;
                        boolVal = rval.firstReturnValue().BooleanValue;
                    }
                    boolVal = (boolVal == false);
                }
            }
            DefaultReturnVector ret = new DefaultReturnVector();
            DefaultReturnValue  rv  = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, boolVal);

            ret.addReturnValue(rv);
            return(ret);
        }
Example #12
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(round");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(round (<literal> | <binding>))\n" + "Function description:\n" + "\tRounds its only argument toward the closest integer.");
     }
 }
Example #13
0
 /// <summary> the method is responsible for compiling a TestCE pattern to a testjoin node.
 /// It uses the globally declared prevCE and prevJoinNode
 /// </summary>
 public virtual BaseJoin compileJoin(ICondition condition, int position, Rule.IRule rule)
 {
     TestCondition tc = (TestCondition) condition;
     ShellFunction fn = (ShellFunction) tc.Function;
     fn.lookUpFunction(ruleCompiler.Engine);
     IParameter[] oldpm = fn.Parameters;
     IParameter[] pms = new IParameter[oldpm.Length];
     for (int ipm = 0; ipm < pms.Length; ipm++)
     {
         if (oldpm[ipm] is ValueParam)
         {
             pms[ipm] = ((ValueParam) oldpm[ipm]).cloneParameter();
         }
         else if (oldpm[ipm] is BoundParam)
         {
             BoundParam bpm = (BoundParam) oldpm[ipm];
             // now we need to resolve and setup the BoundParam
             Binding b = rule.getBinding(bpm.VariableName);
             BoundParam newpm = new BoundParam(b.LeftRow, b.LeftIndex, 9, bpm.ObjectBinding);
             newpm.VariableName = bpm.VariableName;
             pms[ipm] = newpm;
         }
     }
     BaseJoin joinNode = null;
     if (tc.Negated)
     {
         joinNode = new NTestNode(ruleCompiler.Engine.nextNodeId(), fn.Function, pms);
     }
     else
     {
         joinNode = new TestNode(ruleCompiler.Engine.nextNodeId(), fn.Function, pms);
     }
     ((TestNode) joinNode).lookUpFunction(ruleCompiler.Engine);
     return joinNode;
 }
        /* (non-Javadoc)
         * @see woolfel.engine.rete.Function#executeFunction(woolfel.engine.Creshendo.Util.Rete.Rete, woolfel.engine.rete.Parameter[])
         */

        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            if (engine != null && params_Renamed != null && params_Renamed.Length == 3)
            {
                BoundParam  bp       = (BoundParam)params_Renamed[0];
                StringParam slot     = (StringParam)params_Renamed[1];
                ValueParam  val      = (ValueParam)params_Renamed[2];
                Object      instance = bp.ObjectRef;
                Defclass    dc       = engine.findDefclass(instance);
                // we check to make sure the Defclass exists
                if (dc != null)
                {
                    MethodInfo setm = dc.getWriteMethod(slot.StringValue);
                    try
                    {
                        setm.Invoke(instance, (Object[])new Object[] { val });
                    }
                    catch (UnauthorizedAccessException e)
                    {
                    }
                    catch (TargetInvocationException e)
                    {
                    }
                }
            }
            return(new DefaultReturnVector());
        }
Example #15
0
        public virtual String toPPString(IParameter[] params_Renamed, int indents)
        {
            if (params_Renamed != null && params_Renamed.Length >= 0)
            {
                StringBuilder buf = new StringBuilder();

                buf.Append("(usage ");
                int idx = 0;
                if (params_Renamed[idx] is BoundParam)
                {
                    BoundParam bp = (BoundParam)params_Renamed[idx];
                    buf.Append(" ?" + bp.VariableName);
                }
                else if (params_Renamed[idx] is ValueParam)
                {
                    buf.Append(" " + params_Renamed[idx].StringValue);
                }
                else
                {
                    buf.Append(" " + params_Renamed[idx].StringValue);
                }
                buf.Append(")");
                return(buf.ToString());
            }
            else
            {
                return("(usage <function-name>)\n" + "Function description:\n" + "\tPrint a short description of <function-name>.\n" + "\tPlease use the command \"functions\" to Get a list of all functions.");
            }
        }
Example #16
0
        public virtual void addParameters(IList params_Renamed)
        {
            foreach (AbstractParam param in params_Renamed)
            {
                parameters.Add(param);
            }

            int bcount = 0;
            // we try to set the value
            IEnumerator itr = parameters.GetEnumerator();

            while (itr.MoveNext())
            {
                Object p = itr.Current;
                // for now, a simple implementation
                if (p is ValueParam)
                {
                    Value = ((ValueParam)p).Value;
                    break;
                }
                else if (p is BoundParam)
                {
                    BoundParam bp = (BoundParam)p;
                    if (!bp.VariableName.Equals(varName))
                    {
                        Value = p;
                    }
                    bcount++;
                }
            }
            if (bcount > 1)
            {
                isPredicateJoin_Renamed_Field = true;
            }
        }
Example #17
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            Decimal bdval = new Decimal(0);

            if (params_Renamed.Length == 1)
            {
                if (params_Renamed[0] is ValueParam)
                {
                    ValueParam n = (ValueParam)params_Renamed[0];
                    bdval = n.BigDecimalValue;
                }
                else if (params_Renamed[0] is BoundParam)
                {
                    BoundParam bp = (BoundParam)params_Renamed[0];
                    bdval = (Decimal)engine.getBinding(bp.VariableName);
                }
                else if (params_Renamed[0] is FunctionParam2)
                {
                    FunctionParam2 n = (FunctionParam2)params_Renamed[0];
                    n.Engine = engine;
                    n.lookUpFunction();
                    IReturnVector rval = (IReturnVector)n.Value;
                    bdval = rval.firstReturnValue().BigDecimalValue;
                }
                double bdh = System.Math.Log(Decimal.ToDouble(bdval)); //.pow(Math.E, bdval.doubleValue());
                bdval = new Decimal(bdh);
            }
            DefaultReturnVector ret = new DefaultReturnVector();
            DefaultReturnValue  rv  = new DefaultReturnValue(Constants.BIG_DECIMAL, bdval);

            ret.addReturnValue(rv);
            return(ret);
        }
Example #18
0
        /* (non-Javadoc)
         * @see woolfel.engine.rete.Function#executeFunction(woolfel.engine.Creshendo.Util.Rete.Rete, woolfel.engine.rete.Parameter[])
         */

        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            Object rtn = null;
            DefaultReturnVector drv = new DefaultReturnVector();

            if (engine != null && params_Renamed != null && params_Renamed.Length == 3)
            {
                BoundParam  bp       = (BoundParam)params_Renamed[0];
                StringParam slot     = (StringParam)params_Renamed[1];
                ValueParam  val      = (ValueParam)params_Renamed[2];
                Object      instance = bp.ObjectRef;
                Defclass    dc       = engine.findDefclass(instance);
                // we check to make sure the Defclass exists
                if (dc != null)
                {
                    MethodInfo getm = dc.getWriteMethod(slot.StringValue);
                    try
                    {
                        rtn = getm.Invoke(instance, (Object[])new Object[] { val });
                        int rtype = getMethodReturnType(getm);
                        DefaultReturnValue rvalue = new DefaultReturnValue(rtype, rtn);
                        drv.addReturnValue(rvalue);
                    }
                    catch (UnauthorizedAccessException e)
                    {
                        // TODO we should handle error, for now not implemented
                    }
                    catch (TargetInvocationException e)
                    {
                        // TODO we should handle error, for now not implemented
                    }
                }
            }
            return(drv);
        }
Example #19
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(echo");
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 buf.Append(" ?" + bp.VariableName);
             }
             else
             {
                 buf.Append(" \"" + params_Renamed[idx].StringValue + "\"");
             }
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(echo [parameter])");
     }
 }
Example #20
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(member");
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 buf.Append(" ?" + bp.VariableName);
             }
             else if (params_Renamed[idx] is ValueParam)
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
             else
             {
                 buf.Append(" " + params_Renamed[idx].StringValue);
             }
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(member (<literal> | <binding> | <value>)+)\n");
     }
 }
Example #21
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(asin");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(asin <literal> | <binding>)\n" + "Function description:\n" + "\tCalculates the inverse sine of the numeric argument.\n" + "\tThe argument is expected to be in radians.");
     }
 }
Example #22
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(eval");
         for (int idx = 0; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 buf.Append(" ?" + bp.VariableName);
             }
             else if (params_Renamed[idx] is ValueParam)
             {
                 buf.Append(" \"" + params_Renamed[idx].StringValue + "\"");
             }
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(eval <string expressions>)\n" + "Command description:\n" + "\tEvaluates the content of a string.");
     }
 }
Example #23
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(random");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(random)\n" + "Function description:\n" + "\tReturns a random value between 0.0 and 1.0.");
     }
 }
Example #24
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(floor");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(floor <expression>)\n" + "Function description:\n" + "\tReturns the greatest integer smaller or equal to the numerical value \n" + "\treturned by <expression>.");
     }
 }
Example #25
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(oddp");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(oddp <expression>)\n" + "Function description:\n" + "\tReturns true, if its only argument is odd.");
     }
 }
Example #26
0
 public virtual String toPPString(IParameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         StringBuilder buf = new StringBuilder();
         buf.Append("(if");
         int idx = 0;
         if (params_Renamed[idx] is BoundParam)
         {
             BoundParam bp = (BoundParam)params_Renamed[idx];
             buf.Append(" ?" + bp.VariableName);
         }
         else if (params_Renamed[idx] is ValueParam)
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         else
         {
             buf.Append(" " + params_Renamed[idx].StringValue);
         }
         buf.Append(")");
         return(buf.ToString());
     }
     else
     {
         return("(if <boolean expression> then <expression>+ [else <expression>+])\n" + "Function description:\n" + "\tExecutes the expressions after then if the boolean expressions evaluates to true, otherwise it executes the expressions after the optional else.");
     }
 }
Example #27
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            // the first thing we do is set the values
            DefaultReturnVector ret = new DefaultReturnVector();

            if (params_Renamed.Length == inputParams.Length)
            {
                for (int idx = 0; idx < inputParams.Length; idx++)
                {
                    BoundParam bp = (BoundParam)inputParams[idx];
                    bindings.Put(bp.VariableName, params_Renamed[idx].Value);
                }
                engine.pushScope(this);
                for (int idx = 0; idx < functionParams.Length; idx++)
                {
                    ret = (DefaultReturnVector)internalFunction[idx].executeFunction(engine, functionParams[idx]);
                }
                engine.popScope();
                return(ret);
            }
            else
            {
                DefaultReturnValue rv = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, false);
                ret.addReturnValue(rv);
                DefaultReturnValue rv2 = new DefaultReturnValue(Constants.STRING_TYPE, "incorrect number of parameters");
                ret.addReturnValue(rv2);
                return(ret);
            }
        }
Example #28
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            Decimal bdval = new Decimal(0);

            if (params_Renamed != null)
            {
                if (params_Renamed[0] is ValueParam)
                {
                    bdval = params_Renamed[0].BigDecimalValue;
                }
                else if (params_Renamed[0] is BoundParam)
                {
                    BoundParam bp = (BoundParam)params_Renamed[0];
                    bdval = (Decimal)engine.getBinding(bp.VariableName);
                }
                else if (params_Renamed[0] is FunctionParam2)
                {
                    FunctionParam2 n = (FunctionParam2)params_Renamed[0];
                    n.Engine = engine;
                    n.lookUpFunction();
                    IReturnVector rval = (IReturnVector)n.Value;
                    bdval = rval.firstReturnValue().BigDecimalValue;
                }
                for (int idx = 1; idx < params_Renamed.Length; idx++)
                {
                    if (params_Renamed[idx] is ValueParam)
                    {
                        ValueParam n  = (ValueParam)params_Renamed[idx];
                        Decimal    bd = n.BigDecimalValue;
                        bdval = Decimal.Multiply(bdval, bd);
                    }
                    else if (params_Renamed[idx] is FunctionParam2)
                    {
                        FunctionParam2 n = (FunctionParam2)params_Renamed[idx];
                        n.Engine = engine;
                        n.lookUpFunction();
                        IReturnVector rval = (IReturnVector)n.Value;
                        Decimal       bd   = rval.firstReturnValue().BigDecimalValue;
                        if (idx == 0)
                        {
                            bdval = bd;
                        }
                        else
                        {
                            bdval = Decimal.Multiply(bdval, bd);
                        }
                    }
                }
            }
            DefaultReturnVector ret = new DefaultReturnVector();
            DefaultReturnValue  rv  = new DefaultReturnValue(Constants.BIG_DECIMAL, bdval);

            ret.addReturnValue(rv);
            return(ret);
        }
Example #29
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            DefaultReturnVector rv = new DefaultReturnVector();

            if (params_Renamed != null && params_Renamed.Length >= 1)
            {
                for (int idx = 0; idx < params_Renamed.Length; idx++)
                {
                    if (params_Renamed[idx] is BoundParam)
                    {
                        BoundParam bp   = (BoundParam)params_Renamed[idx];
                        Deffact    fact = (Deffact)bp.Fact;
                        try
                        {
                            if (bp.ObjectBinding)
                            {
                                engine.retractObject(fact.ObjectInstance);
                            }
                            else
                            {
                                engine.retractFact(fact);
                            }
                            DefaultReturnValue rval = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, true);
                            rv.addReturnValue(rval);
                        }
                        catch (RetractException e)
                        {
                            DefaultReturnValue rval = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, false);
                            rv.addReturnValue(rval);
                        }
                    }
                    else if (params_Renamed[idx] is ValueParam)
                    {
                        Decimal bi = params_Renamed[idx].BigDecimalValue;
                        try
                        {
                            engine.retractById(Decimal.ToInt64(bi));
                            DefaultReturnValue rval = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, true);
                            rv.addReturnValue(rval);
                        }
                        catch (RetractException e)
                        {
                            DefaultReturnValue rval = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, false);
                            rv.addReturnValue(rval);
                        }
                    }
                }
            }
            return(rv);
        }
Example #30
0
 /// <summary> The implementation will call Rete.writeMessage(). This means that
 /// if multiple output streams are set, the message will be printed to
 /// all of them.
 /// </summary>
 public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
 {
     // print out some stuff
     if (params_Renamed.Length > 0)
     {
         String output = params_Renamed[0].StringValue;
         for (int idx = 1; idx < params_Renamed.Length; idx++)
         {
             if (params_Renamed[idx] is BoundParam)
             {
                 BoundParam bp = (BoundParam)params_Renamed[idx];
                 Object     v  = engine.getBinding(bp.VariableName);
                 if (v.GetType().IsArray)
                 {
                     Object[] ary = (Object[])v;
                     writeArray(ary, engine, output, false);
                 }
                 else
                 {
                     engine.writeMessage(v.ToString(), output);
                 }
             }
             else if (params_Renamed[idx].Value != null && params_Renamed[idx].Value.Equals(Constants.CRLF))
             {
                 engine.writeMessage(Constants.LINEBREAK, output);
             }
             else
             {
                 Object val = params_Renamed[idx].Value;
                 if (val is String)
                 {
                     engine.writeMessage((String)val, output);
                 }
                 else if (val.GetType().IsArray)
                 {
                     Object[] ary = (Object[])val;
                     writeArray(ary, engine, output, true);
                 }
                 else
                 {
                     engine.writeMessage(val.ToString(), output);
                 }
             }
         }
     }
     // there's nothing to return, so just return a new DefaultReturnVector
     return(new DefaultReturnVector());
 }
Example #31
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            bool exec = false;

            if (engine != null && params_Renamed != null && params_Renamed.Length >= 2 && params_Renamed[0].ObjectBinding)
            {
                BoundParam bp   = (BoundParam)params_Renamed[0];
                Deffact    fact = (Deffact)bp.Fact;
                try
                {
                    // first retract the fact
                    engine.retractFact(fact);
                    // now modify the fact
                    SlotParam[] sp = new SlotParam[params_Renamed.Length - 1];
                    for (int idx = 0; idx < sp.Length; idx++)
                    {
                        IParameter p = params_Renamed[idx + 1];
                        if (p is SlotParam)
                        {
                            sp[idx] = (SlotParam)p;
                        }
                    }
                    fact.updateSlots(engine, convertToSlots(sp, fact.Deftemplate));
                    if (fact.hasBinding())
                    {
                        fact.resolveValues(engine, triggerFacts);
                        fact = fact.cloneFact();
                    }
                    // now assert the fact using the same fact-id
                    engine.assertFact(fact);
                    exec = true;
                }
                catch (RetractException e)
                {
                    engine.writeMessage(e.Message);
                }
                catch (AssertException e)
                {
                    engine.writeMessage(e.Message);
                }
            }

            DefaultReturnVector rv   = new DefaultReturnVector();
            DefaultReturnValue  rval = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, exec);

            rv.addReturnValue(rval);
            return(rv);
        }