From cece10e037c6daacc8d2def1a9057882aec47fe4 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 7 Oct 2019 07:32:59 -0700 Subject: Add support for long fields and fix up Bundle and many other tuples --- .../IntermediateFieldValueExtensions.cs | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src/WixToolset.Data/IntermediateFieldValueExtensions.cs') diff --git a/src/WixToolset.Data/IntermediateFieldValueExtensions.cs b/src/WixToolset.Data/IntermediateFieldValueExtensions.cs index f9322e09..317dfc7f 100644 --- a/src/WixToolset.Data/IntermediateFieldValueExtensions.cs +++ b/src/WixToolset.Data/IntermediateFieldValueExtensions.cs @@ -45,6 +45,45 @@ namespace WixToolset.Data return (bool)value.Data; } + public static long AsLargeNumber(this IntermediateFieldValue value) + { + var result = value.AsNullableLargeNumber(); + return result ?? 0; + } + + public static long? AsNullableLargeNumber(this IntermediateFieldValue value) + { + if (value?.Data == null) + { + return null; + } + 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; + } + else if (value.Data is string s) + { + try + { + return Convert.ToInt32(s); + } + catch (FormatException) + { + throw new WixException(ErrorMessages.UnableToConvertFieldToNumber(s)); + } + } + + return (long)value.Data; + } + public static int AsNumber(this IntermediateFieldValue value) { var result = value.AsNullableNumber(); -- cgit v1.2.3-55-g6feb