protected override void InitializeGenerator(GMacMacroCodeComposer macroCodeGen) { macroCodeGen.ActionBeforeGenerateSingleComputation = (composer, codeInfo) => codeInfo.EnableCodeGeneration = codeInfo.ComputedVariable.IsTemp || codeInfo.ComputedVariable.IsNonZero; }
private GMacMacroCodeComposer InitMacroCodeGenerator(GMacMacroBinding macroBinding) { var macroGenerator = new GMacMacroCodeComposer(MacroGenDefaults, macroBinding.BaseMacro) { ActionSetMacroParametersBindings = InitializeFullMacroBinding, ActionSetTargetVariablesNames = InitializeFullTargetNaming }; return(macroGenerator); }
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); }
protected override void InitializeGenerator(GMacMacroCodeComposer macroCodeGen) { }
private void GeneratePostComputationsCode(GMacMacroCodeComposer macroCodeGen) { //Generate comments GMacMacroCodeComposer.DefaultGenerateCommentsAfterComputations(macroCodeGen); }