Example #1
0
        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);
        }
Example #2
0
 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)))));
 }
Example #3
0
        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);
        }
Example #4
0
        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);
        }