Ejemplo n.º 1
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);
        }
        protected override void SetTargetVariablesNames(GMacTargetVariablesNaming targetNaming)
        {
            targetNaming.SetScalarParameter(targetNaming.BaseMacro.OutputParameterValueAccess, "result");

            BladesLibraryGenerator.SetBasisBladeToArrayNaming(targetNaming, "mv", _inGrade, "coefs");

            BladesLibraryGenerator.SetTargetTempVariablesNames(targetNaming);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
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);
        }