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."); } }
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."); } }
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."); } }
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"); } }
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."); } }
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."); } }
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"); } }
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>."); } }
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."); } }
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); }
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."); } }
/// <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()); }
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."); } }
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; } }
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); }
/* (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); }
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])"); } }
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"); } }
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."); } }
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."); } }
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."); } }
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>."); } }
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."); } }
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."); } }
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); } }
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); }
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); }
/// <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()); }
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); }