diff options
Diffstat (limited to '')
-rw-r--r-- | src/WixToolset.Data/IntermediateTupleExtensions.cs | 74 |
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 | ||
3 | namespace WixToolset.Data | 3 | namespace 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 | } |