diff options
Diffstat (limited to 'src/WixToolset.Data/IntermediateFieldValueExtensions.cs')
-rw-r--r-- | src/WixToolset.Data/IntermediateFieldValueExtensions.cs | 58 |
1 files changed, 29 insertions, 29 deletions
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 | |||
8 | { | 8 | { |
9 | public static bool AsBool(this IntermediateFieldValue value) | 9 | public static bool AsBool(this IntermediateFieldValue value) |
10 | { | 10 | { |
11 | var result = value.AsNullableBool(); | 11 | if (value.Data is bool b) |
12 | return result.HasValue && result.Value; | ||
13 | } | ||
14 | |||
15 | public static bool? AsNullableBool(this IntermediateFieldValue value) | ||
16 | { | ||
17 | if (value?.Data == null) | ||
18 | { | ||
19 | return null; | ||
20 | } | ||
21 | else if (value.Data is bool b) | ||
22 | { | 12 | { |
23 | return b; | 13 | return b; |
24 | } | 14 | } |
@@ -45,26 +35,26 @@ namespace WixToolset.Data | |||
45 | return (bool)value.Data; | 35 | return (bool)value.Data; |
46 | } | 36 | } |
47 | 37 | ||
48 | public static long AsLargeNumber(this IntermediateFieldValue value) | 38 | public static bool? AsNullableBool(this IntermediateFieldValue value) |
49 | { | 39 | { |
50 | var result = value.AsNullableLargeNumber(); | 40 | if (value?.Data == null) |
51 | return result ?? 0; | 41 | { |
42 | return null; | ||
43 | } | ||
44 | |||
45 | return value.AsBool(); | ||
52 | } | 46 | } |
53 | 47 | ||
54 | public static long? AsNullableLargeNumber(this IntermediateFieldValue value) | 48 | public static long AsLargeNumber(this IntermediateFieldValue value) |
55 | { | 49 | { |
56 | if (value?.Data == null) | 50 | if (value.Data is long l) |
57 | { | 51 | { |
58 | return null; | 52 | return l; |
59 | } | 53 | } |
60 | else if (value.Data is int n) | 54 | else if (value.Data is int n) |
61 | { | 55 | { |
62 | return n; | 56 | return n; |
63 | } | 57 | } |
64 | else if (value.Data is long l) | ||
65 | { | ||
66 | return l; | ||
67 | } | ||
68 | else if (value.Data is bool b) | 58 | else if (value.Data is bool b) |
69 | { | 59 | { |
70 | return b ? 1 : 0; | 60 | return b ? 1 : 0; |
@@ -84,19 +74,19 @@ namespace WixToolset.Data | |||
84 | return (long)value.Data; | 74 | return (long)value.Data; |
85 | } | 75 | } |
86 | 76 | ||
87 | public static int AsNumber(this IntermediateFieldValue value) | 77 | public static long? AsNullableLargeNumber(this IntermediateFieldValue value) |
88 | { | ||
89 | var result = value.AsNullableNumber(); | ||
90 | return result ?? 0; | ||
91 | } | ||
92 | |||
93 | public static int? AsNullableNumber(this IntermediateFieldValue value) | ||
94 | { | 78 | { |
95 | if (value?.Data == null) | 79 | if (value?.Data == null) |
96 | { | 80 | { |
97 | return null; | 81 | return null; |
98 | } | 82 | } |
99 | else if (value.Data is int n) | 83 | |
84 | return value.AsLargeNumber(); | ||
85 | } | ||
86 | |||
87 | public static int AsNumber(this IntermediateFieldValue value) | ||
88 | { | ||
89 | if (value.Data is int n) | ||
100 | { | 90 | { |
101 | return n; | 91 | return n; |
102 | } | 92 | } |
@@ -123,6 +113,16 @@ namespace WixToolset.Data | |||
123 | return (int)value.Data; | 113 | return (int)value.Data; |
124 | } | 114 | } |
125 | 115 | ||
116 | public static int? AsNullableNumber(this IntermediateFieldValue value) | ||
117 | { | ||
118 | if (value?.Data == null) | ||
119 | { | ||
120 | return null; | ||
121 | } | ||
122 | |||
123 | return value.AsNumber(); | ||
124 | } | ||
125 | |||
126 | public static IntermediateFieldPathValue AsPath(this IntermediateFieldValue value) | 126 | public static IntermediateFieldPathValue AsPath(this IntermediateFieldValue value) |
127 | { | 127 | { |
128 | return (IntermediateFieldPathValue)value?.Data; | 128 | return (IntermediateFieldPathValue)value?.Data; |