Beispiel #1
0
        private void AdjustCoreCompatibleAction(SmartAction action)
        {
            if (action.Id == SmartConstants.ActionComment)
            {
                smartFactory.UpdateAction(action, SmartConstants.ActionNone);
                smartFactory.UpdateSource(action.Source, SmartConstants.ActionNone);
                smartFactory.UpdateTarget(action.Target, SmartConstants.ActionNone);
            }

            var actionData = smartDataManager.GetRawData(SmartType.SmartAction, action.Id);

            if (actionData.ImplicitSource != null)
            {
                smartFactory.UpdateSource(action.Source,
                                          smartDataManager.GetDataByName(SmartType.SmartSource, actionData.ImplicitSource).Id);
            }

            if (actionData.TargetIsSource)
            {
                smartFactory.UpdateTarget(action.Target, action.Source.Id);
                for (int i = 0; i < action.Target.ParametersCount; ++i)
                {
                    action.Target.GetParameter(i).Copy(action.Source.GetParameter(i));
                }

                // do not reset source, it doesn't matter, but at least correct comment will be generated
                // smartFactory.UpdateSource(actualAction.Source, 0);
            }

            if (actionData.SourceStoreInAction)
            {
                action.GetParameter(2).Value = action.Source.Id;
                action.GetParameter(3).Value = action.Source.GetParameter(0).Value;
                action.GetParameter(4).Value = action.Source.GetParameter(1).Value;
                action.GetParameter(5).Value = action.Source.GetParameter(2).Value;
            }
        }