[XamlBuild] Support classmodifier in xaml
authorXianbing Teng <xb.teng@samsung.com>
Wed, 30 Mar 2022 07:56:51 +0000 (15:56 +0800)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Wed, 6 Apr 2022 06:32:30 +0000 (15:32 +0900)
pkg/Tizen.NET.API9/xamlbuild/Tizen.NUI.XamlBuild.dll
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/XamlGenerator.cs

index 239519d..e0971a5 100644 (file)
Binary files a/pkg/Tizen.NET.API9/xamlbuild/Tizen.NUI.XamlBuild.dll and b/pkg/Tizen.NET.API9/xamlbuild/Tizen.NUI.XamlBuild.dll differ
index 1f2fa72..b835ae5 100755 (executable)
@@ -194,6 +194,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
         bool XamlResourceIdOnly { get; set; }
         internal IEnumerable<CodeMemberField> NamedFields { get; set; }
         internal CodeTypeReference BaseType { get; set; }
+        string classModifier { get; set; }
 
         public XamlGenerator(
             string xamlFile,
@@ -284,6 +285,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
             NamedFields = GetCodeMemberFields(root, nsmgr);
             var typeArguments = GetAttributeValue(root, "TypeArguments", XamlParser.X2006Uri, XamlParser.X2009Uri);
+            classModifier = GetAttributeValue(root, "ClassModifier", XamlParser.X2006Uri, XamlParser.X2009Uri);
             var xmlType = new XmlType(root.NamespaceURI, root.LocalName, typeArguments != null ? TypeArgumentsParser.ParseExpression(typeArguments, nsmgr, null) : null);
             BaseType = GetType(xmlType, root.GetNamespaceOfPrefix);
 
@@ -319,6 +321,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
             var declType = new CodeTypeDeclaration(RootType) {
                 IsPartial = true,
+                TypeAttributes = GetTypeAttributes(classModifier),
                 CustomAttributes = {
                     new CodeAttributeDeclaration(new CodeTypeReference(XamlCTask.xamlNameSpace + ".XamlFilePathAttribute"),
                          new CodeAttributeArgument(new CodePrimitiveExpression(XamlFile))),
@@ -475,6 +478,26 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             declType.Members.Add(exitXamlComp);
         }
 
+        static System.Reflection.TypeAttributes GetTypeAttributes(string classModifier)
+        {
+            var access = System.Reflection.TypeAttributes.Public;
+            if (classModifier != null)
+            {
+                switch (classModifier.ToLowerInvariant())
+                {
+                    default:
+                    case "public":
+                        access = System.Reflection.TypeAttributes.Public;
+                        break;
+                    case "internal":
+                    case "notpublic": //WPF syntax
+                        access = System.Reflection.TypeAttributes.NotPublic;
+                        break;
+                }
+            }
+            return access;
+        }
+
         static IEnumerable<CodeMemberField> GetCodeMemberFields(XmlNode root, XmlNamespaceManager nsmgr)
         {
             var xPrefix = nsmgr.LookupPrefix(XamlParser.X2006Uri) ?? nsmgr.LookupPrefix(XamlParser.X2009Uri);