private static void GenerateInterpolationAdditionalMethods(ICodeBlock codeBlock, SaveClasses.IElement element, List <StateSave> sharedVariableStates) { StateCodeGenerator.GenerateInterpolateToStateMethod(element, codeBlock, "VariableState", sharedVariableStates); StateCodeGenerator.GenerateInterpolateBetweenMethod(element, codeBlock, "VariableState", sharedVariableStates); foreach (StateSaveCategory category in element.StateCategoryList.Where((category) => category.SharesVariablesWithOtherCategories == false)) { StateCodeGenerator.GenerateInterpolateToStateMethod(element, codeBlock, category.Name, category.States); StateCodeGenerator.GenerateInterpolateBetweenMethod(element, codeBlock, category.Name, category.States); } }
public void TestStateCodeGeneration() { ICodeBlock codeBlock = new CodeDocument(0); mButtonInButtonList.CurrentState = "InvalidState"; StateCodeGenerator.WriteSetStateOnNamedObject(mButtonInButtonList, codeBlock); string result = codeBlock.ToString(); if (result.Contains(mButtonInButtonList.CurrentState)) { throw new Exception("Code generation for NamedObjects is generating state setting code when states don't really exist"); } // Make sure generation doesn't mess up on a entity with a "" base (instead of null) StateCodeGenerator scg = new StateCodeGenerator(); EntitySave entitySave = new EntitySave(); entitySave.States.Add(new StateSave()); entitySave.BaseEntity = ""; scg.GenerateFields(codeBlock, entitySave); }
private static void CreateStartingValueVariables(IElement element, List <StateSave> states, ICodeBlock curBlock, Dictionary <InstructionSave, InterpolationCharacteristic> interpolationCharacteristics) { foreach (StateSave state in states) { foreach (InstructionSave instructionSave in state.InstructionSaves) { string member = instructionSave.Member; if (!ContainsKey(interpolationCharacteristics, member)) { CustomVariable customVariable = element.GetCustomVariable(member); NamedObjectSave nos = null; if (customVariable != null) { nos = element.GetNamedObjectRecursively(customVariable.SourceObject); } if (nos == null || nos.IsDisabled == false) { InterpolationCharacteristic interpolationCharacteristic = CustomVariableHelper.GetInterpolationCharacteristic(customVariable, element); interpolationCharacteristics.Add(instructionSave, interpolationCharacteristic); if (interpolationCharacteristic != InterpolationCharacteristic.CantInterpolate) { curBlock.Line("bool set" + instructionSave.Member + " = true;"); string defaultStartingValue = ""; try { if (customVariable.GetIsVariableState()) { IElement stateContainingEntity = null; if (nos != null) { stateContainingEntity = ObjectFinder.Self.GetIElement(nos.SourceClassType); } else if (string.IsNullOrEmpty(customVariable.SourceObject)) { stateContainingEntity = element; } if (stateContainingEntity != null) { string stateType = "VariableState"; if (customVariable != null && customVariable.Type.ToLower() != "string") { stateType = customVariable.Type; } defaultStartingValue = StateCodeGenerator.FullyQualifiedDefaultStateValue(stateContainingEntity, stateType); } } else { defaultStartingValue = TypeManager.GetDefaultForType(instructionSave.Type); } } catch { throw new Exception("Could not get a default value for " + instructionSave.Member + " of type " + instructionSave.Type); } string type = CustomVariableCodeGenerator.GetMemberTypeFor(customVariable, element); curBlock.Line(type + " " + member + FirstValue + "= " + defaultStartingValue + ";"); curBlock.Line(type + " " + member + SecondValue + "= " + defaultStartingValue + ";"); } } } } } }