コード例 #1
0
 public static void SetInfo(C2iExpression formule, CInfo2iExpression info)
 {
     if (formule != null)
     {
         m_cache[formule.GetType()] = info;
     }
 }
コード例 #2
0
 public static CInfo2iExpression GetCache(C2iExpression formule)
 {
     if (formule != null)
     {
         CInfo2iExpression info = null;
         m_cache.TryGetValue(formule.GetType(), out info);
         return(info);
     }
     return(null);
 }
コード例 #3
0
 public static CDessineurExpressionGraphique GetDessineur(CRepresentationExpressionGraphique expression)
 {
     C2iExpression formule = expression.Formule;
     CDessineurExpressionGraphique dessineur = null;
     if (formule != null)
     {
         Type tp = formule.GetType();
         while (tp != null)
         {
             if (m_dicDessineurs.TryGetValue(tp, out dessineur))
                 return dessineur;
             tp = tp.BaseType;
         }
     }
     return DefaultInstance;
 }
コード例 #4
0
        /// ///////////////////////////////////////////////////////////
        public override CResultAErreur VerifieParametres()
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_definitionMethode != null)
            {
                if (ObjetPourAnalyseSourceConnu == null)
                {
                    return(result);
                }
                CInfoMethodeDynamique            info       = new CInfoMethodeDynamique(ObjetPourAnalyseSourceConnu.TypeResultatExpression.TypeDotNetNatif, DefinitionMethode.NomProprieteSansCleTypeChamp);
                CInfoParametreMethodeDynamique[] parametres = info.InfosParametres;
                if (parametres.Length != Parametres.Count)
                {
                    result.EmpileErreur(I.T("The number parameters @1 method is incorrect|121", DefinitionMethode.NomProprieteSansCleTypeChamp));
                    return(result);
                }
                int nParam = 0;
                foreach (CInfoParametreMethodeDynamique defPar in parametres)
                {
                    C2iExpression expression = Parametres2i[nParam];
                    if (expression != null && expression.TypeDonnee == null)
                    {
                        result.EmpileErreur(I.T("the @1 parameter is invalide in method @2|20125",
                                                expression.GetString(),
                                                DefinitionMethode.NomProprieteSansCleTypeChamp));
                    }
                    else if (expression == null ||
                             expression.GetType() != typeof(C2iExpressionNull) &&
                             !expression.TypeDonnee.CanConvertTo(new CTypeResultatExpression(defPar.TypeParametre, false)))
                    {
                        result.EmpileErreur(I.T("The @1 method parameters doesn't correspond|122", DefinitionMethode.NomProprieteSansCleTypeChamp));
                        break;
                    }
                    nParam++;
                }
            }
            else if (DefinitionFonction != null)
            {
                IEnumerable <CParametreFonctionDynamique> parametres = DefinitionFonction.ParametresDeLaFonction;
                if (parametres.Count() != Parametres.Count)
                {
                    result.EmpileErreur(I.T("The number parameters @1 method is incorrect|121", DefinitionFonction.NomProprieteSansCleTypeChamp));
                    return(result);
                }
                int nParam = 0;
                foreach (CParametreFonctionDynamique defPar in parametres)
                {
                    C2iExpression expression = Parametres2i[nParam];
                    if (expression != null && expression.TypeDonnee == null)
                    {
                        result.EmpileErreur(I.T("the @1 parameter is invalide in method @2|20125",
                                                expression.GetString(),
                                                defPar.Nom));
                    }
                    else if (expression == null ||
                             expression.GetType() != typeof(C2iExpressionNull) &&
                             !expression.TypeDonnee.CanConvertTo(defPar.TypeResultatExpression))
                    {
                        result.EmpileErreur(I.T("The @1 method parameters doesn't correspond|122", DefinitionFonction.NomProprieteSansCleTypeChamp));
                        break;
                    }
                    nParam++;
                }
            }
            else if (m_strNomMethode.Length > 0)
            {
                result.EmpileErreur(I.T("Unknown method @1|20126", m_strNomMethode));
            }
            else
            {
                result.EmpileErreur(I.T("Unknown method @1|20126", DefinitionFonction.NomProprieteSansCleTypeChamp));
            }
            return(result);
        }