/// <summary> /// Creates code /// </summary> /// <param name="trees">Trees</param> /// <param name="creator">Code creator</param> /// <param name="local">Local code creator</param> /// <param name="variables">Variables</param> /// <param name="initializers">Initializers</param> /// <returns>List of code strings</returns> public static IList <string> CreateCode(ObjectFormulaTree[] trees, ICodeCreator creator, out ICodeCreator local, out IList <string> variables, out IList <string> initializers) { IList <string> l = StaticCodeCreator.CreateCode(trees, creator, out local, out variables, out initializers); variables.Add("FormulaEditor.ObjectFormulaTree currentTree = null;"); variables.Add("object[] currentArray = null;"); variables.Add("double doubleValue = 0;"); variables.Add("FormulaEditor.ObjectFormulaTree[] trees = null;"); ObjectFormulaTree[] lt = local.Trees; foreach (ObjectFormulaTree tree in lt) { object ret = tree.ReturnType; if (ret.IsEmpty()) { continue; } string s = typeCreator.GetType(ret) + " "; s += local[tree]; string cv = creator.GetConstValue(tree); string def = ""; if (cv == null) { def = typeCreator.GetDefaultValue(ret) + ""; if (def.Length > 0) { s += " = "; } s += def; } else { s += " = " + cv; } s += ";"; variables.Add(s); } return(l); }
/// <summary> /// Initializes a new instance of the <see cref="BuildCapability" /> class. /// </summary> /// <param name="typeCreator">The type creator that provides the build functions.</param> /// <param name="supportsCreate"> /// <c>true</c> if the <paramref name="typeCreator" /> can create an instance; otherwise /// <c>false</c>. /// </param> /// <param name="supportsPopulate"> /// <c>true</c> if the <paramref name="typeCreator" /> can populate an instance; otherwise /// <c>false</c>. /// </param> /// <exception cref="ArgumentNullException">The <paramref name="typeCreator" /> parameter is <c>null</c>.</exception> public BuildCapability(ITypeCreator typeCreator, bool supportsCreate, bool supportsPopulate) { typeCreator = typeCreator ?? throw new ArgumentNullException(nameof(typeCreator)); ImplementedByType = typeCreator.GetType(); SupportsCreate = supportsCreate; SupportsPopulate = supportsPopulate; AutoPopulate = typeCreator.AutoPopulate; _createType = typeCreator.Create; _createProperty = typeCreator.Create; _createParameter = typeCreator.Create; _populate = typeCreator.Populate; }