public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            bool load = false;

            if (params_Renamed != null && params_Renamed.Length > 0)
            {
                for (int idx = 0; idx < params_Renamed.Length; idx++)
                {
                    String func = params_Renamed[idx].StringValue;
                    engine.declareFunctionGroup(func);
                    load = true;
                }
            }
            DefaultReturnVector ret = new DefaultReturnVector();
            DefaultReturnValue  rv  = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, load);

            ret.addReturnValue(rv);
            return(ret);
        }
Beispiel #2
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            Object o         = null;
            String classname = null;

            if (params_Renamed != null && params_Renamed.Length == 1)
            {
                if (params_Renamed[0] is ValueParam)
                {
                    ValueParam n = (ValueParam)params_Renamed[0];
                    classname = n.StringValue;
                }
                else if (params_Renamed[0] is BoundParam)
                {
                    BoundParam bp = (BoundParam)params_Renamed[0];
                    classname = (String)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;
                    classname = rval.firstReturnValue().StringValue;
                }
                try
                {
                    Type classDefinition = classnameResolver.resolveClass(classname);
                    o = CreateNewInstance(classDefinition);
                    if (o is IFunctionGroup)
                    {
                        engine.declareFunctionGroup((IFunctionGroup)o);
                    }
                }

                catch (UnauthorizedAccessException e)
                {
                    // TODO Auto-generated catch block
                    System.Diagnostics.Trace.WriteLine(e.Message);
                }
                catch (SecurityException e)
                {
                    // TODO Auto-generated catch block
                    System.Diagnostics.Trace.WriteLine(e.Message);
                }
                catch (ArgumentException e)
                {
                    // TODO Auto-generated catch block
                    System.Diagnostics.Trace.WriteLine(e.Message);
                }
                catch (Exception e)
                {
                    // TODO Auto-generated catch block
                    Trace.WriteLine(e.Message);
                }
            }
            DefaultReturnVector ret = new DefaultReturnVector();
            DefaultReturnValue  rv  = new DefaultReturnValue(Constants.OBJECT_TYPE, o);

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