Skip to content

Commit f12e339

Browse files
authored
Merge pull request #20 from jeremy-visionaid/reduce-allocations
Reduce allocations
2 parents 053c7f6 + 0c557d8 commit f12e339

File tree

4 files changed

+28
-42
lines changed

4 files changed

+28
-42
lines changed

src/Plugin.Maui.KeyListener/KeyboardKeysExtensions.Windows.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44

55
namespace Plugin.Maui.KeyListener;
66

7-
internal static class KeyboardKeysExtensions
7+
internal static partial class KeyboardKeysExtensions
88
{
9+
static readonly VirtualKey[] VirtualKeyValues = Enum.GetValues<VirtualKey>();
10+
911
internal static VirtualKey ToPlatformKeys(this KeyboardKeys keyboardKeys)
1012
{
1113
List<VirtualKey> platformKeyValues = new();
1214

13-
foreach (KeyboardKeys keyboardKey in Enum.GetValues(typeof(KeyboardKeys)))
15+
foreach (KeyboardKeys keyboardKey in KeyboardKeysValues)
1416
{
1517
if (keyboardKeys.HasFlag(keyboardKey))
1618
{
@@ -30,7 +32,7 @@ internal static List<VirtualKey> ToPlatformKeyValues(this KeyboardKeys keyboardK
3032
{
3133
List<VirtualKey> platformKeyValues = new();
3234

33-
foreach (KeyboardKeys keyboardKey in Enum.GetValues(typeof(KeyboardKeys)))
35+
foreach (KeyboardKeys keyboardKey in KeyboardKeysValues)
3436
{
3537
if (keyboardKeys.HasFlag(keyboardKey))
3638
{
@@ -47,7 +49,7 @@ internal static KeyboardKeys ToKeyboardKeys(this VirtualKey platformKeys)
4749
{
4850
List<KeyboardKeys> keyboardKeyValues = new();
4951

50-
foreach (VirtualKey platformKey in Enum.GetValues(typeof(VirtualKey)))
52+
foreach (VirtualKey platformKey in VirtualKeyValues)
5153
{
5254
if (platformKeys.HasFlag(platformKey))
5355
{
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace Plugin.Maui.KeyListener;
2+
3+
internal static partial class KeyboardKeysExtensions
4+
{
5+
static readonly KeyboardKeys[] KeyboardKeysValues = Enum.GetValues<KeyboardKeys>();
6+
}

src/Plugin.Maui.KeyListener/KeyboardKeysExtensions.iOS.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33

44
namespace Plugin.Maui.KeyListener;
55

6-
internal static class KeyboardKeysExtensions
6+
internal static partial class KeyboardKeysExtensions
77
{
8+
static readonly UIKeyboardHidUsage[] UIKeyboardHidUsages = Enum.GetValues<UIKeyboardHidUsage>();
9+
810
internal static UIKeyboardHidUsage ToPlatformKeys(this KeyboardKeys keyboardKeys)
911
{
1012
List<UIKeyboardHidUsage> platformKeyValues = new();
1113

12-
foreach (KeyboardKeys keyboardKey in Enum.GetValues(typeof(KeyboardKeys)))
14+
foreach (KeyboardKeys keyboardKey in KeyboardKeysValues)
1315
{
1416
if (keyboardKeys.HasFlag(keyboardKey))
1517
{
@@ -29,7 +31,7 @@ internal static List<UIKeyboardHidUsage> ToPlatformKeyValues(this KeyboardKeys k
2931
{
3032
List<UIKeyboardHidUsage> platformKeyValues = new();
3133

32-
foreach (KeyboardKeys keyboardKey in Enum.GetValues(typeof(KeyboardKeys)))
34+
foreach (KeyboardKeys keyboardKey in KeyboardKeysValues)
3335
{
3436
if (keyboardKeys.HasFlag(keyboardKey))
3537
{
@@ -47,7 +49,7 @@ internal static KeyboardKeys ToKeyboardKeys(this UIKeyboardHidUsage platformKeys
4749
{
4850
List<KeyboardKeys> keyboardKeyValues = new();
4951

50-
foreach (UIKeyboardHidUsage platformKey in Enum.GetValues(typeof(UIKeyboardHidUsage)))
52+
foreach (UIKeyboardHidUsage platformKey in UIKeyboardHidUsages)
5153
{
5254
if (platformKeys.HasFlag(platformKey))
5355
{

src/Plugin.Maui.KeyListener/KeyboardModifiersExtensions.iOS.cs

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,63 +5,39 @@ namespace Plugin.Maui.KeyListener;
55

66
internal static class KeyboardModifiersExtensions
77
{
8+
static readonly KeyboardModifiers[] VirtualModifiersValues = Enum.GetValues<KeyboardModifiers>();
9+
10+
static readonly UIKeyModifierFlags[] UIKeyModifierFlagsValues = Enum.GetValues<UIKeyModifierFlags>();
11+
812
internal static UIKeyModifierFlags ToPlatformModifiers(this KeyboardModifiers virtualModifiers)
913
{
10-
List<UIKeyModifierFlags> platformModifierValues = new();
14+
UIKeyModifierFlags platformModifiers = 0;
1115

12-
foreach (KeyboardModifiers virtualModifier in Enum.GetValues(typeof(KeyboardModifiers)))
16+
foreach (KeyboardModifiers virtualModifier in VirtualModifiersValues)
1317
{
1418
if (virtualModifiers.HasFlag(virtualModifier))
1519
{
1620
UIKeyModifierFlags platformModifier = ToPlatformModifier(virtualModifier);
17-
18-
if (platformModifier != 0)
19-
platformModifierValues.Add(platformModifier);
21+
platformModifiers |= platformModifier;
2022
}
2123
}
2224

23-
var platformModifiers = ToPlatformModifiers(platformModifierValues);
24-
2525
return platformModifiers;
2626
}
2727

2828
internal static KeyboardModifiers ToVirtualModifiers(this UIKeyModifierFlags platformModifiers)
2929
{
30-
List<KeyboardModifiers> virtualModifierValues = new();
30+
KeyboardModifiers virtualModifiers = 0;
3131

32-
foreach (UIKeyModifierFlags platformModifier in Enum.GetValues(typeof(UIKeyModifierFlags)))
32+
foreach (UIKeyModifierFlags platformModifier in UIKeyModifierFlagsValues)
3333
{
3434
if (platformModifiers.HasFlag(platformModifier))
3535
{
3636
KeyboardModifiers virtualModifier = ToVirtualModifier(platformModifier);
37-
38-
if (virtualModifier != 0)
39-
virtualModifierValues.Add(virtualModifier);
37+
virtualModifiers |= virtualModifier;
4038
}
4139
}
4240

43-
var virtualModifiers = ToVirtualModifiers(virtualModifierValues);
44-
45-
return virtualModifiers;
46-
}
47-
48-
static UIKeyModifierFlags ToPlatformModifiers(List<UIKeyModifierFlags> platformModifierValues)
49-
{
50-
UIKeyModifierFlags platformModifiers = 0;
51-
52-
foreach (UIKeyModifierFlags platformModifier in platformModifierValues)
53-
platformModifiers |= platformModifier;
54-
55-
return platformModifiers;
56-
}
57-
58-
static KeyboardModifiers ToVirtualModifiers(List<KeyboardModifiers> virtualModifierValues)
59-
{
60-
KeyboardModifiers virtualModifiers = 0;
61-
62-
foreach (KeyboardModifiers virtualModifer in virtualModifierValues)
63-
virtualModifiers |= virtualModifer;
64-
6541
return virtualModifiers;
6642
}
6743

0 commit comments

Comments
 (0)