예제 #1
0
 internal void SetTargetTempVariablesNames(GMacTargetVariablesNaming targetNaming)
 {
     //Temp variables target naming
     if (targetNaming.CodeBlock.TargetTempVarsCount > MaxTargetLocalVars)
     {
         //Name as array items
         targetNaming.SetTempVariables((int index) => "tempArray[" + index + "]");
     }
     else
     {
         //Name as set of local variables
         targetNaming.SetTempVariables(index => "tempVar" + index.ToString("X4") + "");
     }
 }
예제 #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);
        }
예제 #3
0
        public static void DefaultActionSetTargetVariablesNames(GMacTargetVariablesNaming targetNaming)
        {
            targetNaming.SetInputVariables(v => v.ValueAccessName);

            targetNaming.SetOutputVariables(v => v.ValueAccessName);

            //targetNaming.SetTempVariables(v => v.LowLevelName);
            targetNaming.SetTempVariables(v => "tmp" + v.NameIndex);
        }
예제 #4
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);
        }