Ejemplo n.º 1
0
 internal void SetBasisBladeToArrayNaming(GMacTargetVariablesNaming targetNaming, string macroParamName, int macroParamGrade, string arrayVarName)
 {
     targetNaming.SetMultivectorParameters(
         macroParamName + ".@G" + macroParamGrade + "@",
         id => BasisBladeIdToTargetArrayItem(arrayVarName, id)
         );
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        //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)
                );
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }