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); }
protected override void SetTargetVariablesNames(GMacTargetVariablesNaming targetNaming) { targetNaming.SetScalarParameter(targetNaming.BaseMacro.OutputParameterValueAccess, "result"); BladesLibraryGenerator.SetBasisBladeToArrayNaming(targetNaming, "mv", _inGrade, "coefs"); 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); }
protected override void SetTargetVariablesNames(GMacTargetVariablesNaming targetNaming) { var outputParam = targetNaming.BaseMacro.OutputParameterValueAccess; if (outputParam.GMacType.IsValidMultivectorType) { BladesLibraryGenerator.SetBasisBladeToArrayNaming(targetNaming, outputParam, _outGrade, "c"); } else { targetNaming.SetScalarParameter(outputParam, "c[0]"); } BladesLibraryGenerator.SetBasisBladeToArrayNaming(targetNaming, "mv", _inGrade, "coefs"); BladesLibraryGenerator.SetTargetTempVariablesNames(targetNaming); }
protected override void SetTargetVariablesNames(GMacTargetVariablesNaming targetNaming) { BladesLibraryGenerator.SetBasisBladeToArrayNaming(targetNaming, "result", InputGrade, "coefs"); BladesLibraryGenerator.SetBasisBladeToArrayNaming(targetNaming, "mv", InputGrade, "bladeCoefs"); for (var i = 0; i < CurrentFrame.VSpaceDimension; i++) { var id = CurrentFrame.BasisVectorId(i); for (var j = 0; j < CurrentFrame.VSpaceDimension; j++) { var varName = "omCoefs".CoefPart(i, j); var valueAccessName = "om.ImageV" + (j + 1) + ".#E" + id + "#"; targetNaming.SetScalarParameter(valueAccessName, varName); } } BladesLibraryGenerator.SetTargetTempVariablesNames(targetNaming); }
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); }