/// ////////////////////////////////////////// private CResultAErreur GetSourceEtChampFinal(C2iExpression expression, CContexteEvaluationExpression ctx, ref object source, ref C2iExpressionChamp expressionChamp) { CResultAErreur result = CResultAErreur.True; expressionChamp = expression as C2iExpressionChamp; if (expressionChamp != null) { return(result); } C2iExpressionObjet expObjet = expression as C2iExpressionObjet; if (expObjet == null) { result.EmpileErreur(I.T("Impossible to affect a value to @1|133", expression.GetString())); } result = expObjet.Parametres2i[0].Eval(ctx); if (!result || result == null) { return(result); } ctx.PushObjetSource(result.Data, false); source = result.Data; result = GetSourceEtChampFinal(expObjet.Parametres2i[1], ctx, ref source, ref expressionChamp); ctx.PopObjetSource(false); return(result); }
/// /////////////////////////////////////////////////////////// /// lstResults contient la liste des valeurs des paramètres protected CResultAErreur EvalParametres(CContexteEvaluationExpression ctx, ArrayList lstResults) { CResultAErreur result = CResultAErreur.True; try { if (IsSourceParametreBase) //La source est la base !! { ctx.PushObjetSource(ctx.ObjetBase, false); } lstResults.Clear(); result = CResultAErreur.True; if (GetNbParametresNecessaires() >= 0 && Parametres.Count != GetNbParametresNecessaires()) { result.EmpileErreur(I.T("Incorrect parameter number :@1 parameters expected|101", GetNbParametresNecessaires().ToString())); return(result); } int nParametre = 0; foreach (C2iExpression expression in Parametres2i) { result = expression.Eval(ctx); nParametre++; if (!result) { result.EmpileErreur(I.T("Error during the @1 parameter evaluation|102", expression.GetString())); return(result); } lstResults.Add(result.Data); } return(result); } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } finally { if (IsSourceParametreBase) { ctx.PopObjetSource(false); } } return(result); }
/// //////////////////////////////////// ///////////////////////////////// private CResultAErreur GetValeurObjet(CContexteEvaluationExpression ctx, object source, C2iExpression expressionAEvaluer) { CResultAErreur result = CResultAErreur.True; ctx.PushObjetSource(source, false); try { result = expressionAEvaluer.Eval(ctx); } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } finally { ctx.PopObjetSource(false); } return(result); }