aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/AccessModifier.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-03-01 23:12:33 -0800
committerRob Mensching <rob@firegiant.com>2021-03-02 01:54:57 -0800
commit26415c014397c463f2954e0bd9ff742110c5ea75 (patch)
tree93a4eb5aa3ed9825a86f4a881d1aff57f5cc2644 /src/WixToolset.Data/AccessModifier.cs
parent456fe41a126412b822371a338870ec39dfcdf4ad (diff)
downloadwix-26415c014397c463f2954e0bd9ff742110c5ea75.tar.gz
wix-26415c014397c463f2954e0bd9ff742110c5ea75.tar.bz2
wix-26415c014397c463f2954e0bd9ff742110c5ea75.zip
Rename AccessModifiers and optimize its serialization
Diffstat (limited to 'src/WixToolset.Data/AccessModifier.cs')
-rw-r--r--src/WixToolset.Data/AccessModifier.cs82
1 files changed, 77 insertions, 5 deletions
diff --git a/src/WixToolset.Data/AccessModifier.cs b/src/WixToolset.Data/AccessModifier.cs
index 64f29f26..191558b5 100644
--- a/src/WixToolset.Data/AccessModifier.cs
+++ b/src/WixToolset.Data/AccessModifier.cs
@@ -2,26 +2,98 @@
2 2
3namespace WixToolset.Data 3namespace WixToolset.Data
4{ 4{
5 using System;
6
5 public enum AccessModifier 7 public enum AccessModifier
6 { 8 {
7 /// <summary> 9 /// <summary>
8 /// Indicates the identifier is publicly visible to all other sections. 10 /// Indicates the identifier is globally visible to all other sections.
9 /// </summary> 11 /// </summary>
10 Public, 12 Global,
13 [Obsolete]
14 Public = Global,
11 15
12 /// <summary> 16 /// <summary>
13 /// Indicates the identifier is visible only to sections in the same library. 17 /// Indicates the identifier is visible only to sections in the same library.
14 /// </summary> 18 /// </summary>
15 Internal, 19 Library,
20 [Obsolete]
21 Internal = Library,
16 22
17 /// <summary> 23 /// <summary>
18 /// Indicates the identifier is visible only to sections in the same source file. 24 /// Indicates the identifier is visible only to sections in the same source file.
19 /// </summary> 25 /// </summary>
20 Protected, 26 File,
27 [Obsolete]
28 Protected = File,
21 29
22 /// <summary> 30 /// <summary>
23 /// Indicates the identifiers is visible only to the section where it is defined. 31 /// Indicates the identifiers is visible only to the section where it is defined.
24 /// </summary> 32 /// </summary>
25 Private, 33 Section,
34 [Obsolete]
35 Private = Section,
36 }
37
38 /// <summary>
39 /// Extensions for converting <c>AccessModifier</c> to and from strings optimally.
40 /// </summary>
41 public static class AccessModifierExtensions
42 {
43 /// <summary>
44 /// Converts a string to an <c>AccessModifier</c>.
45 /// </summary>
46 /// <param name="access">String value to convert.</param>
47 /// <returns>Converted <c>AccessModifier</c>.</returns>
48 public static AccessModifier AsAccessModifier(this string access)
49 {
50 switch (access)
51 {
52 case "global":
53 case "public":
54 return AccessModifier.Global;
55
56 case "library":
57 case "internal":
58 return AccessModifier.Library;
59
60 case "file":
61 case "protected":
62 return AccessModifier.File;
63
64 case "section":
65 case "private":
66 return AccessModifier.Section;
67
68 default:
69 throw new ArgumentException($"Unknown AccessModifier: {access}", nameof(access));
70 }
71 }
72
73 /// <summary>
74 /// Converts an <c>AccessModifier</c> to a string.
75 /// </summary>
76 /// <param name="access"><c>AccessModifier</c> value to convert.</param>
77 /// <returns>Converted string.</returns>
78 public static string AsString(this AccessModifier access)
79 {
80 switch (access)
81 {
82 case AccessModifier.Global:
83 return "global";
84
85 case AccessModifier.Library:
86 return "library";
87
88 case AccessModifier.File:
89 return "file";
90
91 case AccessModifier.Section:
92 return "section";
93
94 default:
95 throw new ArgumentException($"Unknown AccessModifier: {access}", nameof(access));
96 }
97 }
26 } 98 }
27} 99}