Make HLE project AOT friendly (#7085)

* add hle service generator

remove usage of reflection in device state

* remove rd.xml generation

* make applet manager reflection free

* fix typos

* fix encoding

* fix style report

* remove rogue generator reference

* remove double assignment
This commit is contained in:
Emmanuel Hansen
2024-08-31 14:39:26 +00:00
committed by GitHub
parent e0acde04bb
commit 2c5c0392f9
11 changed files with 215 additions and 87 deletions

View File

@ -8,27 +8,24 @@ namespace Ryujinx.HLE.HOS.Applets
{
static class AppletManager
{
private static readonly Dictionary<AppletId, Type> _appletMapping;
static AppletManager()
{
_appletMapping = new Dictionary<AppletId, Type>
{
{ AppletId.Error, typeof(ErrorApplet) },
{ AppletId.PlayerSelect, typeof(PlayerSelectApplet) },
{ AppletId.Controller, typeof(ControllerApplet) },
{ AppletId.SoftwareKeyboard, typeof(SoftwareKeyboardApplet) },
{ AppletId.LibAppletWeb, typeof(BrowserApplet) },
{ AppletId.LibAppletShop, typeof(BrowserApplet) },
{ AppletId.LibAppletOff, typeof(BrowserApplet) },
};
}
public static IApplet Create(AppletId applet, Horizon system)
{
if (_appletMapping.TryGetValue(applet, out Type appletClass))
switch (applet)
{
return (IApplet)Activator.CreateInstance(appletClass, system);
case AppletId.Controller:
return new ControllerApplet(system);
case AppletId.Error:
return new ErrorApplet(system);
case AppletId.PlayerSelect:
return new PlayerSelectApplet(system);
case AppletId.SoftwareKeyboard:
return new SoftwareKeyboardApplet(system);
case AppletId.LibAppletWeb:
return new BrowserApplet(system);
case AppletId.LibAppletShop:
return new BrowserApplet(system);
case AppletId.LibAppletOff:
return new BrowserApplet(system);
}
throw new NotImplementedException($"{applet} applet is not implemented.");