private void SetParameterObjects(SmartBaseElement element, SmartGenericJsonData data, bool update = false) { if (data.DescriptionRules != null) { element.DescriptionRules = new List <DescriptionRule>(); foreach (SmartDescriptionRulesJsonData rule in data.DescriptionRules) { element.DescriptionRules.Add(new DescriptionRule(rule)); } } else { element.DescriptionRules = null; } element.Id = data.Id; element.ReadableHint = data.Description; for (var i = 0; i < element.ParametersCount; ++i) { element.GetParameter(i).IsUsed = false; } if (data.Parameters == null) { return; } for (var i = 0; i < data.Parameters.Count; ++i) { string key = data.Parameters[i].Type; if (data.Parameters[i].Values != null) { key = $"{data.Name}_{i}"; if (!parameterFactory.IsRegistered(key)) { parameterFactory.Register(key, data.Parameters[i].Type == "FlagParameter" ? new FlagParameter() { Items = data.Parameters[i].Values } : new Parameter() { Items = data.Parameters[i].Values }); } } IParameter <long> parameter = parameterFactory.Factory(key); element.GetParameter(i).Name = data.Parameters[i].Name; if (!update) { element.GetParameter(i).Value = data.Parameters[i].DefaultVal; } element.GetParameter(i).Parameter = parameter; element.GetParameter(i).IsUsed = true; } }
public void Fix(SmartBaseElement e) { for (int i = 0; i < e.ParametersCount; ++i) { if (!e.GetParameter(i).IsUsed&& e.GetParameter(i).Value != 0) { e.GetParameter(i).Value = 0; } } }
public InspectionResult?Inspect(SmartBaseElement e, string ofWhat) { for (int i = 0; i < e.ParametersCount; ++i) { if (!e.GetParameter(i).IsUsed&& e.GetParameter(i).Value != 0) { int index = i + 1; string nd = index == 1 ? "st" : (index == 2 ? "nd" : (index == 3 ? "rd" : "th")); return(new InspectionResult() { Severity = DiagnosticSeverity.Info, Message = $" {index}{nd} parameter of {ofWhat} is not used, but has non zero value.", Line = e.LineId }); } } return(null); }
private void SetParameterObjects(SmartBaseElement element, ConditionJsonData data) { element.Id = data.Id; element.ReadableHint = data.Description; for (var i = 0; i < element.ParametersCount; ++i) { element.GetParameter(i).IsUsed = false; } if (data.Parameters == null) { return; } for (var i = 0; i < data.Parameters.Count; ++i) { string key = data.Parameters[i].Type; if (data.Parameters[i].Values != null) { key = $"{data.Name}_{i}"; if (!parameterFactory.IsRegisteredLong(key)) { parameterFactory.Register(key, new Parameter() { Items = data.Parameters[i].Values }); } } IParameter <long> parameter = parameterFactory.Factory(key); element.GetParameter(i).Name = data.Parameters[i].Name; element.GetParameter(i).IsUsed = true; element.GetParameter(i).Parameter = parameter; } }
public InspectionResult?Inspect(SmartBaseElement e) { for (int i = 0; i < e.ParametersCount; ++i) { if (e.GetParameter(i).IsUsed&& e.GetParameter(i).Value != 0 && e.GetParameter(i).HasItems&& !((e.GetParameter(i).Parameter.Items?.ContainsKey(e.GetParameter(i).Value) ?? false) || (e.GetParameter(i).Parameter is FlagParameter fp && ContainsAllFlags(fp, e.GetParameter(i).Value)))) { return(new InspectionResult() { Severity = DiagnosticSeverity.Info, Message = $"Parameter `{e.GetParameter(i).Name}` value out of range ({e.GetParameter(i).Value})", Line = e.LineId }); } } return(null); }
public InspectionResult?Inspect(SmartBaseElement e) { for (int i = 0; i < e.ParametersCount; ++i) { if (e.GetParameter(i).IsUsed&& e.GetParameter(i).HasItems) { if (e.GetParameter(i).Parameter is FlagParameter fp && ContainsAllFlags(fp, e.GetParameter(i).Value) != 0) { var unknownFlag = ContainsAllFlags(fp, e.GetParameter(i).Value); return(new InspectionResult() { Severity = DiagnosticSeverity.Info, Message = $"Parameter `{e.GetParameter(i).Name}` uses non existing flag {unknownFlag}", Line = e.LineId }); } if (e.GetParameter(i).Value != 0 && e.GetParameter(i).Parameter is not FlagParameter && !e.GetParameter(i).Parameter.AllowUnknownItems&& !(e.GetParameter(i).Items?.ContainsKey(e.GetParameter(i).Value) ?? false)) { return(new InspectionResult() { Severity = DiagnosticSeverity.Info, Message = $"Parameter `{e.GetParameter(i).Name}` value out of range ({e.GetParameter(i).Value})", Line = e.LineId }); } } } return(null); }