aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/IntermediateFieldValueExtensions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Data/IntermediateFieldValueExtensions.cs')
-rw-r--r--src/WixToolset.Data/IntermediateFieldValueExtensions.cs58
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;