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