Пример #1
0
 public virtual System.String toPPString(Parameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length >= 0)
     {
         System.Text.StringBuilder buf = new System.Text.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.");
     }
 }
Пример #2
0
 public virtual System.String toPPString(Parameter[] params_Renamed, int indents)
 {
     if (params_Renamed != null && params_Renamed.Length > 0)
     {
         System.Text.StringBuilder buf = new System.Text.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.");
     }
 }
Пример #3
0
        public virtual ReturnVector executeFunction(Rete engine, Parameter[] params_Renamed)
        {
            System.Decimal bdval = new System.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 = (System.Decimal)engine.getBinding(bp.VariableName);
                }
                else if (params_Renamed[0] is FunctionParam2)
                {
                    FunctionParam2 n = (FunctionParam2)params_Renamed[0];
                    n.Engine = engine;
                    n.lookUpFunction();
                    ReturnVector rval = (ReturnVector)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];
                        System.Decimal bd = n.BigDecimalValue;
                        bdval = System.Decimal.Multiply(bdval, bd);
                    }
                    else if (params_Renamed[idx] is FunctionParam2)
                    {
                        FunctionParam2 n = (FunctionParam2)params_Renamed[idx];
                        n.Engine = engine;
                        n.lookUpFunction();
                        ReturnVector   rval = (ReturnVector)n.Value;
                        System.Decimal bd   = rval.firstReturnValue().BigDecimalValue;
                        if (idx == 0)
                        {
                            bdval = bd;
                        }
                        else
                        {
                            bdval = System.Decimal.Multiply(bdval, bd);
                        }
                    }
                }
            }
            DefaultReturnVector ret = new DefaultReturnVector();
            DefaultReturnValue  rv  = new DefaultReturnValue(Constants.BIG_DECIMAL, bdval);

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