aboutsummaryrefslogtreecommitdiff
path: root/src/api/wix/WixToolset.Data/AccessModifier.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/wix/WixToolset.Data/AccessModifier.cs')
-rw-r--r--src/api/wix/WixToolset.Data/AccessModifier.cs99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/api/wix/WixToolset.Data/AccessModifier.cs b/src/api/wix/WixToolset.Data/AccessModifier.cs
new file mode 100644
index 00000000..191558b5
--- /dev/null
+++ b/src/api/wix/WixToolset.Data/AccessModifier.cs
@@ -0,0 +1,99 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Data
4{
5 using System;
6
7 public enum AccessModifier
8 {
9 /// <summary>
10 /// Indicates the identifier is globally visible to all other sections.
11 /// </summary>
12 Global,
13 [Obsolete]
14 Public = Global,
15
16 /// <summary>
17 /// Indicates the identifier is visible only to sections in the same library.
18 /// </summary>
19 Library,
20 [Obsolete]
21 Internal = Library,
22
23 /// <summary>
24 /// Indicates the identifier is visible only to sections in the same source file.
25 /// </summary>
26 File,
27 [Obsolete]
28 Protected = File,
29
30 /// <summary>
31 /// Indicates the identifiers is visible only to the section where it is defined.
32 /// </summary>
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 }
98 }
99}