aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/Symbols/EnvironmentSymbol.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Data/Symbols/EnvironmentSymbol.cs')
-rw-r--r--src/WixToolset.Data/Symbols/EnvironmentSymbol.cs114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/WixToolset.Data/Symbols/EnvironmentSymbol.cs b/src/WixToolset.Data/Symbols/EnvironmentSymbol.cs
new file mode 100644
index 00000000..3fe12d4b
--- /dev/null
+++ b/src/WixToolset.Data/Symbols/EnvironmentSymbol.cs
@@ -0,0 +1,114 @@
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 WixToolset.Data.Symbols;
6
7 public static partial class SymbolDefinitions
8 {
9 public static readonly IntermediateSymbolDefinition Environment = new IntermediateSymbolDefinition(
10 SymbolDefinitionType.Environment,
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Name), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Value), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Separator), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Action), IntermediateFieldType.Number),
17 new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Part), IntermediateFieldType.Number),
18 new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Permanent), IntermediateFieldType.Bool),
19 new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.System), IntermediateFieldType.Bool),
20 new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.ComponentRef), IntermediateFieldType.String),
21 },
22 typeof(EnvironmentSymbol));
23 }
24}
25
26namespace WixToolset.Data.Symbols
27{
28 public enum EnvironmentSymbolFields
29 {
30 Name,
31 Value,
32 Separator,
33 Action,
34 Part,
35 Permanent,
36 System,
37 ComponentRef,
38 }
39
40 public enum EnvironmentActionType
41 {
42 Set,
43 Create,
44 Remove
45 }
46
47 public enum EnvironmentPartType
48 {
49 All,
50 First,
51 Last
52 }
53
54 public class EnvironmentSymbol : IntermediateSymbol
55 {
56 public EnvironmentSymbol() : base(SymbolDefinitions.Environment, null, null)
57 {
58 }
59
60 public EnvironmentSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Environment, sourceLineNumber, id)
61 {
62 }
63
64 public IntermediateField this[EnvironmentSymbolFields index] => this.Fields[(int)index];
65
66 public string Name
67 {
68 get => (string)this.Fields[(int)EnvironmentSymbolFields.Name];
69 set => this.Set((int)EnvironmentSymbolFields.Name, value);
70 }
71
72 public string Value
73 {
74 get => (string)this.Fields[(int)EnvironmentSymbolFields.Value];
75 set => this.Set((int)EnvironmentSymbolFields.Value, value);
76 }
77
78 public string Separator
79 {
80 get => (string)this.Fields[(int)EnvironmentSymbolFields.Separator];
81 set => this.Set((int)EnvironmentSymbolFields.Separator, value);
82 }
83
84 public EnvironmentActionType? Action
85 {
86 get => (EnvironmentActionType?)this.Fields[(int)EnvironmentSymbolFields.Action].AsNullableNumber();
87 set => this.Set((int)EnvironmentSymbolFields.Action, (int?)value);
88 }
89
90 public EnvironmentPartType? Part
91 {
92 get => (EnvironmentPartType?)this.Fields[(int)EnvironmentSymbolFields.Part].AsNullableNumber();
93 set => this.Set((int)EnvironmentSymbolFields.Part, (int?)value);
94 }
95
96 public bool Permanent
97 {
98 get => this.Fields[(int)EnvironmentSymbolFields.Permanent].AsBool();
99 set => this.Set((int)EnvironmentSymbolFields.Permanent, value);
100 }
101
102 public bool System
103 {
104 get => this.Fields[(int)EnvironmentSymbolFields.System].AsBool();
105 set => this.Set((int)EnvironmentSymbolFields.System, value);
106 }
107
108 public string ComponentRef
109 {
110 get => (string)this.Fields[(int)EnvironmentSymbolFields.ComponentRef];
111 set => this.Set((int)EnvironmentSymbolFields.ComponentRef, value);
112 }
113 }
114} \ No newline at end of file