Example #1
0
 protected override void InitializeGenerator(GMacMacroCodeComposer macroCodeGen)
 {
     macroCodeGen.ActionBeforeGenerateSingleComputation =
         (composer, codeInfo) =>
         codeInfo.EnableCodeGeneration =
             codeInfo.ComputedVariable.IsTemp || codeInfo.ComputedVariable.IsNonZero;
 }
Example #2
0
        private GMacMacroCodeComposer InitMacroCodeGenerator(GMacMacroBinding macroBinding)
        {
            var macroGenerator =
                new GMacMacroCodeComposer(MacroGenDefaults, macroBinding.BaseMacro)
            {
                ActionSetMacroParametersBindings = InitializeFullMacroBinding,
                ActionSetTargetVariablesNames    = InitializeFullTargetNaming
            };

            return(macroGenerator);
        }
Example #3
0
        private bool GeneratePreComputationsCode(GMacMacroCodeComposer macroCodeGen)
        {
            //Generate comments
            GMacMacroCodeComposer.DefaultGenerateCommentsBeforeComputations(macroCodeGen);

            //Temp variables declaration
            if (macroCodeGen.CodeBlock.TargetTempVarsCount > MaxTargetLocalVars)
            {
                //Add array declaration code
                macroCodeGen.SyntaxList.Add(
                    macroCodeGen.SyntaxFactory.DeclareLocalArray(
                        GMacLanguage.ScalarTypeName,
                        "tempArray",
                        macroCodeGen.CodeBlock.TargetTempVarsCount.ToString()
                        )
                    );

                macroCodeGen.SyntaxList.AddEmptyLine();
            }
            else
            {
                var tempVarNames =
                    macroCodeGen.CodeBlock
                    .TempVariables
                    .Select(item => item.TargetVariableName)
                    .Distinct();

                //Add temp variables declaration code
                foreach (var tempVarName in tempVarNames)
                {
                    macroCodeGen.SyntaxList.Add(
                        macroCodeGen.SyntaxFactory.DeclareLocalVariable(GMacLanguage.ScalarTypeName, tempVarName)
                        );
                }

                macroCodeGen.SyntaxList.AddEmptyLine();
            }

            return(true);
        }
Example #4
0
 protected override void InitializeGenerator(GMacMacroCodeComposer macroCodeGen)
 {
 }
Example #5
0
 private void GeneratePostComputationsCode(GMacMacroCodeComposer macroCodeGen)
 {
     //Generate comments
     GMacMacroCodeComposer.DefaultGenerateCommentsAfterComputations(macroCodeGen);
 }