internal void SetBasisBladeToArrayNaming(GMacTargetVariablesNaming targetNaming, string macroParamName, int macroParamGrade, string arrayVarName) { targetNaming.SetMultivectorParameters( macroParamName + ".@G" + macroParamGrade + "@", id => BasisBladeIdToTargetArrayItem(arrayVarName, id) ); }
private void InitializeFullTargetNaming(GMacTargetVariablesNaming targetNaming) { var valueAccessList = targetNaming .CodeBlock .BaseMacro .Parameters .SelectMany(paramInfo => paramInfo.DatastoreValueAccess.ExpandStructures()); foreach (var valueAccess in valueAccessList) { if (valueAccess.IsPrimitive) { var varName = valueAccess.ValueAccessName; targetNaming.SetScalarParameter(valueAccess, varName); continue; } var parentName = valueAccess.ValueAccessName; targetNaming.SetMultivectorParameters( valueAccess, id => BasisBladeIdToCode(parentName, id) ); } targetNaming.SetTempVariables(v => "tmp" + v.NameIndex); }
//internal void SetBladeParameterBinding(GMacMacroBinding macroBinding, string macroParamName, int macroParamGrade) //{ // macroBinding.BindMultivectorToVariables(macroParamName, macroParamGrade); //} internal void SetBasisBladeToArrayNaming(GMacTargetVariablesNaming targetNaming, AstDatastoreValueAccess macroParam, int macroParamGrade, string arrayVarName) { targetNaming.SetMultivectorParameters( macroParam, macroParamGrade, id => BasisBladeIdToTargetArrayItem(arrayVarName, id) ); }
protected override void SetTargetVariablesNames(GMacTargetVariablesNaming targetNaming) { //Set names of output parameter components var outputParam = targetNaming.BaseMacro.OutputParameterValueAccess; if (outputParam.GMacType.IsValidMultivectorType) { targetNaming.SetMultivectorParameters(outputParam, b => "result." + b.GradeIndexName); } else { targetNaming.SetScalarParameter(outputParam, "result"); } //Set names for input parameters components targetNaming.SetMultivectorParameters("mv1", b => b.GradeIndexName); targetNaming.SetMultivectorParameters("mv2", b => "mv." + b.GradeIndexName); //Set names for temp variables MvLibraryGenerator.SetTargetTempVariablesNames(targetNaming); }
protected override void SetTargetVariablesNames(GMacTargetVariablesNaming targetNaming) { BladesLibraryGenerator.SetBasisBladeToArrayNaming(targetNaming, "result", _outGrade, "coefs"); for (var gradeIdx = 0; gradeIdx < _outGrade; gradeIdx++) { var vectorName = "vectors[" + gradeIdx + "].C"; targetNaming.SetMultivectorParameters( "v" + gradeIdx + ".@G1@", id => vectorName + (CurrentFrame.BasisBladeIndex(id) + 1) ); } BladesLibraryGenerator.SetTargetTempVariablesNames(targetNaming); }
protected override void SetTargetVariablesNames(GMacTargetVariablesNaming targetNaming) { BladesLibraryGenerator.SetBasisBladeToArrayNaming(targetNaming, "B", InputGrade, "coefs"); for (var idx = 1; idx <= InputGrade; idx++) { var valueAccessName = "result.f" + idx + ".@G1@"; var outputName = "vectors[" + (idx - 1) + "].C"; targetNaming.SetMultivectorParameters( valueAccessName, vectorId => outputName + (CurrentFrame.BasisBladeIndex(vectorId) + 1) ); } BladesLibraryGenerator.SetTargetTempVariablesNames(targetNaming); }
private void SetTargetNaming(GMacTargetVariablesNaming targetNaming) { //Set default target variables names for macro parameters var valueAccessList = targetNaming .CodeBlock .BaseMacro .Parameters .SelectMany(paramInfo => paramInfo.DatastoreValueAccess.ExpandStructures()); foreach (var valueAccess in valueAccessList) { if (valueAccess.IsPrimitive) { var varName = valueAccess.ValueAccessName; targetNaming.SetScalarParameter(valueAccess, varName); continue; } var parentName = valueAccess.ValueAccessName; targetNaming.SetMultivectorParameters( valueAccess, id => BasisBladeIdToCode(parentName, id) ); } //Override default target variables names for macro parameters using the //items in the TargetVariablesNamesDictionary foreach (var pair in TargetVariablesNamesDictionary) { targetNaming.SetScalarParameter(pair.Key, pair.Value); } //Set temporary target variables names targetNaming.SetTempVariables(v => "tmp" + v.NameIndex); }