public static (string className, SyntaxNode node) Parse(this DictionaryData entry) { if (entry.VR.StartsWith("See")) { return(null, null); } //var vr = entry.VR[0..2]; var vr = entry.VR.Substring(0, 2); var className = VRDictionary.GetVRFromAbbreviation(vr).ToString(); var i = (IDICOMElement)EvilDicomAssembly.CreateInstance($"EvilDICOM.Core.Element.{className}"); if (className == "DateTime") { className = "Element.DateTime"; } var dataType = i.DatType; // hack to make sure we are in right namespace - EvilDICOM has DateTime VR and so does system var dataTypeName = dataType.Name.StartsWith("Nullable") ? "System.DateTime?" : dataType.Name; // initialize strings as empty string instead of null var parameter = G.ParameterDeclaration("data", G.IdentifierName($"params {dataTypeName}[]")); return(className, parameter); }
public static SyntaxNode GenerateTag(this DictionaryData entry) { return(G.FieldDeclaration(entry.Keyword, G.IdentifierName("Tag"), Accessibility.Public, DeclarationModifiers.Static, G.ObjectCreationExpression(G.IdentifierName("Tag"), G.Argument(RefKind.None, G.LiteralExpression(entry.Id))))); }
public static SyntaxNode[] GenerateSequencePropertyStatements(this DictionaryData entry, string className) { var getStatements = new[] { G.ReturnStatement(G.CastExpression(G.IdentifierName(className), G.InvocationExpression(G.IdentifierName($"Items.FindFirst<{className}>"), G.Argument(RefKind.None, G.LiteralExpression(entry.Id))))) }; return(getStatements); }
public static (SyntaxNode[] getStatements, SyntaxNode[] setStatements) GeneratePropertyStatements(this DictionaryData entry, string className) { var getStatements = new[] { G.ReturnStatement(G.CastExpression(G.IdentifierName(className), G.InvocationExpression(G.IdentifierName("_dicom.FindFirst"), G.Argument(RefKind.None, G.LiteralExpression(entry.Id))))) }; var setStatements = new[] { G.InvocationExpression(G.IdentifierName("_dicom.ReplaceOrAdd"), G.Argument(RefKind.None, G.IdentifierName("value"))) }; return(getStatements, setStatements); }