aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/IntermediateTupleExtensions.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/WixToolset.Data/IntermediateTupleExtensions.cs74
1 files changed, 53 insertions, 21 deletions
diff --git a/src/WixToolset.Data/IntermediateTupleExtensions.cs b/src/WixToolset.Data/IntermediateTupleExtensions.cs
index f5b30d47..dd488dc5 100644
--- a/src/WixToolset.Data/IntermediateTupleExtensions.cs
+++ b/src/WixToolset.Data/IntermediateTupleExtensions.cs
@@ -1,36 +1,26 @@
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. 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 2
3namespace WixToolset.Data 3namespace WixToolset.Data
4{ 4{
5 public static class IntermediateTupleExtensions 5 public static class IntermediateTupleExtensions
6 { 6 {
7 public static bool AsBool(this IntermediateTuple tuple, int index) 7 public static bool AsBool(this IntermediateTuple tuple, int index) => tuple?.Fields[index].AsBool() ?? false;
8 {
9 return tuple?.Fields[index].AsBool() ?? false;
10 }
11 8
12 public static bool? AsNullableBool(this IntermediateTuple tuple, int index) 9 public static bool? AsNullableBool(this IntermediateTuple tuple, int index) => tuple?.Fields[index].AsNullableBool();
13 {
14 return tuple?.Fields[index].AsNullableBool();
15 }
16 10
17 public static int AsNumber(this IntermediateTuple tuple, int index) 11 public static int AsNumber(this IntermediateTuple tuple, int index) => tuple?.Fields[index].AsNumber() ?? 0;
18 {
19 return tuple?.Fields[index].AsNumber() ?? 0;
20 }
21 12
22 public static int? AsNullableNumber(this IntermediateTuple tuple, int index) 13 public static int? AsNullableNumber(this IntermediateTuple tuple, int index) => tuple?.Fields[index].AsNullableNumber();
23 {
24 return tuple?.Fields[index].AsNullableNumber();
25 }
26 14
27 public static string AsString(this IntermediateTuple tuple, int index) 15 public static string AsString(this IntermediateTuple tuple, int index) => tuple?.Fields[index].AsString();
28 {
29 return tuple?.Fields[index].AsString();
30 }
31 16
32 public static IntermediateField Set(this IntermediateTuple tuple, int index, bool value) 17 public static IntermediateField Set(this IntermediateTuple tuple, int index, bool value)
33 { 18 {
19 if (value == default && NoFieldMetadata(tuple, index))
20 {
21 return tuple.Fields[index] = null;
22 }
23
34 var definition = tuple.Definition.FieldDefinitions[index]; 24 var definition = tuple.Definition.FieldDefinitions[index];
35 25
36 var field = tuple.Fields[index].Set(definition, value); 26 var field = tuple.Fields[index].Set(definition, value);
@@ -40,6 +30,11 @@ namespace WixToolset.Data
40 30
41 public static IntermediateField Set(this IntermediateTuple tuple, int index, bool? value) 31 public static IntermediateField Set(this IntermediateTuple tuple, int index, bool? value)
42 { 32 {
33 if (value == default && NoFieldMetadata(tuple, index))
34 {
35 return tuple.Fields[index] = null;
36 }
37
43 var definition = tuple.Definition.FieldDefinitions[index]; 38 var definition = tuple.Definition.FieldDefinitions[index];
44 39
45 var field = tuple.Fields[index].Set(definition, value); 40 var field = tuple.Fields[index].Set(definition, value);
@@ -49,6 +44,11 @@ namespace WixToolset.Data
49 44
50 public static IntermediateField Set(this IntermediateTuple tuple, int index, long value) 45 public static IntermediateField Set(this IntermediateTuple tuple, int index, long value)
51 { 46 {
47 if (value == default && NoFieldMetadata(tuple, index))
48 {
49 return tuple.Fields[index] = null;
50 }
51
52 var definition = tuple.Definition.FieldDefinitions[index]; 52 var definition = tuple.Definition.FieldDefinitions[index];
53 53
54 var field = tuple.Fields[index].Set(definition, value); 54 var field = tuple.Fields[index].Set(definition, value);
@@ -58,6 +58,11 @@ namespace WixToolset.Data
58 58
59 public static IntermediateField Set(this IntermediateTuple tuple, int index, long? value) 59 public static IntermediateField Set(this IntermediateTuple tuple, int index, long? value)
60 { 60 {
61 if (value == default && NoFieldMetadata(tuple, index))
62 {
63 return tuple.Fields[index] = null;
64 }
65
61 var definition = tuple.Definition.FieldDefinitions[index]; 66 var definition = tuple.Definition.FieldDefinitions[index];
62 67
63 var field = tuple.Fields[index].Set(definition, value); 68 var field = tuple.Fields[index].Set(definition, value);
@@ -67,6 +72,11 @@ namespace WixToolset.Data
67 72
68 public static IntermediateField Set(this IntermediateTuple tuple, int index, int value) 73 public static IntermediateField Set(this IntermediateTuple tuple, int index, int value)
69 { 74 {
75 if (value == default && NoFieldMetadata(tuple, index))
76 {
77 return tuple.Fields[index] = null;
78 }
79
70 var definition = tuple.Definition.FieldDefinitions[index]; 80 var definition = tuple.Definition.FieldDefinitions[index];
71 81
72 var field = tuple.Fields[index].Set(definition, value); 82 var field = tuple.Fields[index].Set(definition, value);
@@ -76,6 +86,11 @@ namespace WixToolset.Data
76 86
77 public static IntermediateField Set(this IntermediateTuple tuple, int index, int? value) 87 public static IntermediateField Set(this IntermediateTuple tuple, int index, int? value)
78 { 88 {
89 if (value == default && NoFieldMetadata(tuple, index))
90 {
91 return tuple.Fields[index] = null;
92 }
93
79 var definition = tuple.Definition.FieldDefinitions[index]; 94 var definition = tuple.Definition.FieldDefinitions[index];
80 95
81 var field = tuple.Fields[index].Set(definition, value); 96 var field = tuple.Fields[index].Set(definition, value);
@@ -85,6 +100,11 @@ namespace WixToolset.Data
85 100
86 public static IntermediateField Set(this IntermediateTuple tuple, int index, IntermediateFieldPathValue value) 101 public static IntermediateField Set(this IntermediateTuple tuple, int index, IntermediateFieldPathValue value)
87 { 102 {
103 if (value == default && NoFieldMetadata(tuple, index))
104 {
105 return tuple.Fields[index] = null;
106 }
107
88 var definition = tuple.Definition.FieldDefinitions[index]; 108 var definition = tuple.Definition.FieldDefinitions[index];
89 109
90 var field = tuple.Fields[index].Set(definition, value); 110 var field = tuple.Fields[index].Set(definition, value);
@@ -94,11 +114,23 @@ namespace WixToolset.Data
94 114
95 public static IntermediateField Set(this IntermediateTuple tuple, int index, string value) 115 public static IntermediateField Set(this IntermediateTuple tuple, int index, string value)
96 { 116 {
117 if (value == default && NoFieldMetadata(tuple, index))
118 {
119 return tuple.Fields[index] = null;
120 }
121
97 var definition = tuple.Definition.FieldDefinitions[index]; 122 var definition = tuple.Definition.FieldDefinitions[index];
98 123
99 var field = tuple.Fields[index].Set(definition, value); 124 var field = tuple.Fields[index].Set(definition, value);
100 125
101 return tuple.Fields[index] = field; 126 return tuple.Fields[index] = field;
102 } 127 }
128
129 private static bool NoFieldMetadata(IntermediateTuple tuple, int index)
130 {
131 var field = tuple?.Fields[index];
132
133 return field?.Context == null && field?.PreviousValue == null;
134 }
103 } 135 }
104} 136}