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 --- .../IntermediateFieldValueExtensions.cs | 58 +++++++++++----------- 1 file changed, 29 insertions(+), 29 deletions(-) (limited to 'src/WixToolset.Data/IntermediateFieldValueExtensions.cs') 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; -- cgit v1.2.3-55-g6feb