Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
 /// <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());
 }
Ejemplo n.º 3
0
        /// <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);
        }