Mosa.HardwareSystem.DeviceDriverRegistry.GetIDeviceDriver C# (CSharp) Method

GetIDeviceDriver() private method

private GetIDeviceDriver ( CustomAttributeData attributeData ) : IDeviceDriver
attributeData System.Reflection.CustomAttributeData
return IDeviceDriver
        private IDeviceDriver GetIDeviceDriver(CustomAttributeData attributeData)
        {
            if (attributeData.AttributeType == typeof(ISADeviceDriverAttribute))
            {
                var attribute = new ISADeviceDriverAttribute();
                foreach (var arg in attributeData.NamedArguments)
                {
                    if (arg.MemberName == "Platforms")
                        attribute.Platforms = (PlatformArchitecture)arg.TypedValue.Value;
                    else if (arg.MemberName == "BasePort")
                        attribute.BasePort = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "PortRange")
                        attribute.PortRange = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "AltBasePort")
                        attribute.AltBasePort = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "AltPortRange")
                        attribute.AltPortRange = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "AutoLoad")
                        attribute.AutoLoad = (bool)arg.TypedValue.Value;
                    else if (arg.MemberName == "ForceOption")
                        attribute.ForceOption = (string)arg.TypedValue.Value;
                    else if (arg.MemberName == "IRQ")
                        attribute.IRQ = (byte)arg.TypedValue.Value;
                    else if (arg.MemberName == "BaseAddress")
                        attribute.BaseAddress = (uint)arg.TypedValue.Value;
                    else if (arg.MemberName == "AddressRange")
                        attribute.AddressRange = (uint)arg.TypedValue.Value;
                }
                return attribute;
            }
            else
            {
                var attribute = new PCIDeviceDriverAttribute();
                foreach (var arg in attributeData.NamedArguments)
                {
                    if (arg.MemberName == "Platforms")
                        attribute.Platforms = (PlatformArchitecture)arg.TypedValue.Value;
                    else if (arg.MemberName == "DeviceID")
                        attribute.DeviceID = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "VendorID")
                        attribute.VendorID = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "SubVendorID")
                        attribute.SubSystemVendorID = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "SubDeviceID")
                        attribute.SubSystemID = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "RevisionID")
                        attribute.RevisionID = (byte)arg.TypedValue.Value;
                    else if (arg.MemberName == "ProgIF")
                        attribute.ProgIF = (byte)arg.TypedValue.Value;
                    else if (arg.MemberName == "ClassCode")
                        attribute.ClassCode = (ushort)arg.TypedValue.Value;
                    else if (arg.MemberName == "SubClassCode")
                        attribute.SubClassCode = (byte)arg.TypedValue.Value;
                }
                return attribute;
            }
        }