From 634fc916f620ee46c1634327e66328fabb68c9d1 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 1 Jul 2020 13:16:30 -0700 Subject: Catch up a few files missed in the Great Tuple to Symbol rename --- .../IntermediateSymbolExtensions.cs | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 src/WixToolset.Data/IntermediateSymbolExtensions.cs (limited to 'src/WixToolset.Data/IntermediateSymbolExtensions.cs') diff --git a/src/WixToolset.Data/IntermediateSymbolExtensions.cs b/src/WixToolset.Data/IntermediateSymbolExtensions.cs new file mode 100644 index 00000000..10f0d7f0 --- /dev/null +++ b/src/WixToolset.Data/IntermediateSymbolExtensions.cs @@ -0,0 +1,121 @@ +// 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. + +namespace WixToolset.Data +{ + public static class IntermediateSymbolExtensions + { + public static bool AsBool(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsBool() ?? false; + + public static bool? AsNullableBool(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsNullableBool(); + + public static int AsNumber(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsNumber() ?? 0; + + public static int? AsNullableNumber(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsNullableNumber(); + + public static string AsString(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsString(); + + public static IntermediateField Set(this IntermediateSymbol symbol, int index, bool value) + { + var definition = symbol.Definition.FieldDefinitions[index]; + + var field = symbol.Fields[index].Set(definition, value); + + return symbol.Fields[index] = field; + } + + public static IntermediateField Set(this IntermediateSymbol symbol, int index, bool? value) + { + if (value == null && NoFieldMetadata(symbol, index)) + { + return symbol.Fields[index] = null; + } + + var definition = symbol.Definition.FieldDefinitions[index]; + + var field = symbol.Fields[index].Set(definition, value); + + return symbol.Fields[index] = field; + } + + public static IntermediateField Set(this IntermediateSymbol symbol, int index, long value) + { + var definition = symbol.Definition.FieldDefinitions[index]; + + var field = symbol.Fields[index].Set(definition, value); + + return symbol.Fields[index] = field; + } + + public static IntermediateField Set(this IntermediateSymbol symbol, int index, long? value) + { + if (value == null && NoFieldMetadata(symbol, index)) + { + return symbol.Fields[index] = null; + } + + var definition = symbol.Definition.FieldDefinitions[index]; + + var field = symbol.Fields[index].Set(definition, value); + + return symbol.Fields[index] = field; + } + + public static IntermediateField Set(this IntermediateSymbol symbol, int index, int value) + { + var definition = symbol.Definition.FieldDefinitions[index]; + + var field = symbol.Fields[index].Set(definition, value); + + return symbol.Fields[index] = field; + } + + public static IntermediateField Set(this IntermediateSymbol symbol, int index, int? value) + { + if (value == null && NoFieldMetadata(symbol, index)) + { + return symbol.Fields[index] = null; + } + + var definition = symbol.Definition.FieldDefinitions[index]; + + var field = symbol.Fields[index].Set(definition, value); + + return symbol.Fields[index] = field; + } + + public static IntermediateField Set(this IntermediateSymbol symbol, int index, IntermediateFieldPathValue value) + { + if (value?.Path == null && value?.BaseUri == null && NoFieldMetadata(symbol, index)) + { + return symbol.Fields[index] = null; + } + + var definition = symbol.Definition.FieldDefinitions[index]; + + var field = symbol.Fields[index].Set(definition, value); + + return symbol.Fields[index] = field; + } + + public static IntermediateField Set(this IntermediateSymbol symbol, int index, string value) + { + if (value == null && NoFieldMetadata(symbol, index)) + { + return symbol.Fields[index] = null; + } + + var definition = symbol.Definition.FieldDefinitions[index]; + + var field = symbol.Fields[index].Set(definition, value); + + return symbol.Fields[index] = field; + } + + private static bool NoFieldMetadata(IntermediateSymbol symbol, int index) + { + var field = symbol?.Fields[index]; + + return field?.Context == null && field?.PreviousValue == null; + } + } +} -- cgit v1.2.3-55-g6feb