From bff4dd77d9d04f587d3f1948c9d569b15b2ca347 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 10 Jul 2020 21:21:59 -0700 Subject: Avoid creation of nullable to improve perf and small code cleanup --- src/WixToolset.Data/IntermediateFieldValue.cs | 4 +- .../IntermediateFieldValueExtensions.cs | 58 +++++++++++----------- .../Symbols/WixSimpleReferenceSymbol.cs | 4 +- 3 files changed, 33 insertions(+), 33 deletions(-) (limited to 'src/WixToolset.Data') diff --git a/src/WixToolset.Data/IntermediateFieldValue.cs b/src/WixToolset.Data/IntermediateFieldValue.cs index 9a6b6ef5..84a23931 100644 --- a/src/WixToolset.Data/IntermediateFieldValue.cs +++ b/src/WixToolset.Data/IntermediateFieldValue.cs @@ -17,11 +17,11 @@ namespace WixToolset.Data public static explicit operator bool(IntermediateFieldValue value) => value.AsBool(); - public static explicit operator bool? (IntermediateFieldValue value) => value.AsNullableBool(); + public static explicit operator bool?(IntermediateFieldValue value) => value.AsNullableBool(); public static explicit operator int(IntermediateFieldValue value) => value.AsNumber(); - public static explicit operator int? (IntermediateFieldValue value) => value.AsNullableNumber(); + public static explicit operator int?(IntermediateFieldValue value) => value.AsNullableNumber(); public static explicit operator IntermediateFieldPathValue(IntermediateFieldValue value) => value.AsPath(); diff --git a/src/WixToolset.Data/IntermediateFieldValueExtensions.cs b/src/WixToolset.Data/IntermediateFieldValueExtensions.cs index 317dfc7f..8ff923a7 100644 --- a/src/WixToolset.Data/IntermediateFieldValueExtensions.cs +++ b/src/WixToolset.Data/IntermediateFieldValueExtensions.cs @@ -8,17 +8,7 @@ namespace WixToolset.Data { public static bool AsBool(this IntermediateFieldValue value) { - var result = value.AsNullableBool(); - return result.HasValue && result.Value; - } - - public static bool? AsNullableBool(this IntermediateFieldValue value) - { - if (value?.Data == null) - { - return null; - } - else if (value.Data is bool b) + if (value.Data is bool b) { return b; } @@ -45,26 +35,26 @@ namespace WixToolset.Data return (bool)value.Data; } - public static long AsLargeNumber(this IntermediateFieldValue value) + public static bool? AsNullableBool(this IntermediateFieldValue value) { - var result = value.AsNullableLargeNumber(); - return result ?? 0; + if (value?.Data == null) + { + return null; + } + + return value.AsBool(); } - public static long? AsNullableLargeNumber(this IntermediateFieldValue value) + public static long AsLargeNumber(this IntermediateFieldValue value) { - if (value?.Data == null) + if (value.Data is long l) { - return null; + return l; } else if (value.Data is int n) { return n; } - else if (value.Data is long l) - { - return l; - } else if (value.Data is bool b) { return b ? 1 : 0; @@ -84,19 +74,19 @@ namespace WixToolset.Data return (long)value.Data; } - public static int AsNumber(this IntermediateFieldValue value) - { - var result = value.AsNullableNumber(); - return result ?? 0; - } - - public static int? AsNullableNumber(this IntermediateFieldValue value) + public static long? AsNullableLargeNumber(this IntermediateFieldValue value) { if (value?.Data == null) { return null; } - else if (value.Data is int n) + + return value.AsLargeNumber(); + } + + public static int AsNumber(this IntermediateFieldValue value) + { + if (value.Data is int n) { return n; } @@ -123,6 +113,16 @@ namespace WixToolset.Data return (int)value.Data; } + public static int? AsNullableNumber(this IntermediateFieldValue value) + { + if (value?.Data == null) + { + return null; + } + + return value.AsNumber(); + } + public static IntermediateFieldPathValue AsPath(this IntermediateFieldValue value) { return (IntermediateFieldPathValue)value?.Data; diff --git a/src/WixToolset.Data/Symbols/WixSimpleReferenceSymbol.cs b/src/WixToolset.Data/Symbols/WixSimpleReferenceSymbol.cs index 1091b715..3070ba04 100644 --- a/src/WixToolset.Data/Symbols/WixSimpleReferenceSymbol.cs +++ b/src/WixToolset.Data/Symbols/WixSimpleReferenceSymbol.cs @@ -28,7 +28,7 @@ namespace WixToolset.Data.Symbols PrimaryKeys, } - [DebuggerDisplay("{SymbolicName}")] + [DebuggerDisplay("{SymbolicName,nq}")] public class WixSimpleReferenceSymbol : IntermediateSymbol { public WixSimpleReferenceSymbol() : base(SymbolDefinitions.WixSimpleReference, null, null) @@ -57,6 +57,6 @@ namespace WixToolset.Data.Symbols /// Gets the symbolic name. /// /// Symbolic name. - public string SymbolicName => String.Concat(this.Table, ":", this.PrimaryKeys); + public string SymbolicName => String.Concat("Ref ", this.Table, ":", this.PrimaryKeys); } } \ No newline at end of file -- cgit v1.2.3-55-g6feb