--- rpl/src/interface_cas.cpp 2020/06/04 09:35:35 1.65 +++ rpl/src/interface_cas.cpp 2020/11/01 08:51:41 1.66 @@ -707,6 +707,51 @@ interface_cas(struct_processus *s_etat_p break; } + + case RPLCAS_SIMPLIFICATION: + { + if (depilement(s_etat_processus, &(s_etat_processus->l_base_pile), + &s_objet_argument_1) == d_erreur) + { + s_etat_processus->erreur_execution = d_ex_manque_argument; + return; + } + + if ((argument_1 = conversion_rpl_vers_cas(s_etat_processus, + &s_objet_argument_1)) == NULL) + { + s_etat_processus->erreur_systeme = d_es_allocation_memoire; + return; + } + + liberation(s_etat_processus, s_objet_argument_1); + + try + { + gen expression( + string(reinterpret_cast(argument_1)), + contexte); + + gen resultat = simplify(expression, contexte); + string chaine = "'" + resultat.print() + "'"; + + conversion_cas_vers_rpl(s_etat_processus, + reinterpret_cast(const_cast( + chaine.c_str()))); + } + catch(bad_alloc &exception) + { + s_etat_processus->erreur_systeme = d_es_allocation_memoire; + } + catch(...) + { + s_etat_processus->erreur_execution = d_ex_erreur_interne_rplcas; + } + + free(argument_1); + + break; + } } return;