/// <summary> /// Call coding process /// </summary> /// <param name="comp">compilation</param> /// <param name="converter">language converter</param> /// <param name="ut">UseTemplate object</param> /// <param name="codingName">process name of coding</param> /// <param name="file">writing in</param> public static void CallCoding(ICompilateurInstance comp, ICodeConverter converter, UseTemplate ut, string codingName, FinalFile file) { Coding coding = ut.GetCoding(codingName); if (coding != null) { IProcess proc = comp.GetCodingProcess(coding.UniqueCodingName); proc.FunctionName = converter.ProcessAsFunction; comp.Convert(converter, proc, file); comp.RemoveCodingProcess(coding.UniqueCodingName); } }
/// <summary> /// Fill a new method /// </summary> /// <param name="comp">compilation</param> /// <param name="subProc">sub process object</param> /// <param name="converter">language converter</param> /// <param name="f">new function</param> /// <param name="file">writing in</param> public static void FillNewMethod(ICompilateurInstance comp, IProcess subProc, ICodeConverter converter, IFunction f, FinalFile file) { // la fonction est implémentée converter.PushFunction(converter.CurrentFunction); f.PropagateControlFlow(converter.CurrentFunction); converter.SetCurrentFunction(f); subProc.FunctionName = converter.ProcessAsFunction; converter.CurrentFunction.ForwardControlFlowSub(); comp.Convert(converter, subProc, file); converter.CurrentFunction.BackwardControlFlowSub(); converter.SetCurrentFunction(converter.PopFunction()); }
/// <summary> /// Call coding process /// Uses a newer variable in which you are adding it in the coding process /// </summary> /// <param name="comp">compilation</param> /// <param name="proc">process</param> /// <param name="converter">language converter</param> /// <param name="coding">coding object</param> /// <param name="varName">name of the variable</param> /// <param name="desiredDataType">desired data type of the variable</param> /// <param name="file">writing in</param> public static void CallCoding(ICompilateurInstance comp, IProcessInstance proc, ICodeConverter converter, Coding coding, string varName, EnumDataType desiredDataType, FinalFile file) { IProcess subProc = comp.GetCodingProcess(coding.UniqueCodingName); // la fonction courante est associée à ce processus // ce processus ne crée pas de fonction subProc.FunctionName = converter.ProcessAsFunction; // les instructions du coding sont stockées dans un processus à part // mais il n'y a pas de création d'une nouvelle fonction et cela implique // que je dois ranger les variables utilisées dans le processus au dessus // afin qu'elles soient déjà connues dans le processus du coding IData var = Helper.ConvertNonComputableVariableType(proc, converter, varName, desiredDataType); // mais j'ajoute la variable en local dans la fonction courante // pour ne pas qu'elle devienne un paramètre de la fonction courante Helper.AddIntoLocal(converter, var); comp.Convert(converter, subProc, file); comp.RemoveCodingProcess(coding.UniqueCodingName); }