#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(i32)]
pub enum ESharedLibraryExcludeReason {
    Included = 0,
    AppExcluded_ByPartner = 1,
    LicenseExcluded = 2,
    FreeGame = 3,
    LicensePrivate = 4,
    AppExcluded_WrongAppType = 6,
    AppExcluded_NonrefundableDLC = 7,
    AppExcluded_UnreleasedApp = 8,
    AppExcluded_ParentAppExcluded = 9,
    PackageExcluded_ByPartner = 10,
    PackageExcluded_Special = 11,
    PackageExcluded_Dev = 12,
    PackageExcluded_FreeWeekend = 13,
    PackageExcluded_Invalid = 15,
    PackageExcluded_RecurringLicense = 16,
    PackageExcluded_WrongLicenseType = 17,
    PackageExcluded_MasterSub = 18,
    PackageExcluded_NoShareableApps = 19,
    LicenseExcluded_PaymentMasterSub = 20,
    LicenseExcluded_PaymentFamilyGroup = 21,
    LicenseExcluded_PaymentAuthorizedDevice = 22,
    LicenseExcluded_PaymentAutoGrant = 23,
    LicenseExcluded_FlagPending = 24,
    LicenseExcluded_FlagPendingRefund = 25,
    LicenseExcluded_FlagBorrowed = 26,
    LicenseExcluded_FlagAutoGrant = 27,
    LicenseExcluded_FlagTimedTrial = 28,
    LicenseExcluded_FreeSub = 29,
    LicenseExcluded_Inactive = 30,
}

impl ESharedLibraryExcludeReason {
    pub fn from_i32(val: i32) -> Option<Self> {
        match val {
            x if x == Self::Included as i32 => Some(Self::Included),
            x if x == Self::AppExcluded_ByPartner as i32 => Some(Self::AppExcluded_ByPartner),
            x if x == Self::LicenseExcluded as i32 => Some(Self::LicenseExcluded),
            x if x == Self::FreeGame as i32 => Some(Self::FreeGame),
            x if x == Self::LicensePrivate as i32 => Some(Self::LicensePrivate),
            x if x == Self::AppExcluded_WrongAppType as i32 => Some(Self::AppExcluded_WrongAppType),
            x if x == Self::AppExcluded_NonrefundableDLC as i32 => Some(Self::AppExcluded_NonrefundableDLC),
            x if x == Self::AppExcluded_UnreleasedApp as i32 => Some(Self::AppExcluded_UnreleasedApp),
            x if x == Self::AppExcluded_ParentAppExcluded as i32 => Some(Self::AppExcluded_ParentAppExcluded),
            x if x == Self::PackageExcluded_ByPartner as i32 => Some(Self::PackageExcluded_ByPartner),
            x if x == Self::PackageExcluded_Special as i32 => Some(Self::PackageExcluded_Special),
            x if x == Self::PackageExcluded_Dev as i32 => Some(Self::PackageExcluded_Dev),
            x if x == Self::PackageExcluded_FreeWeekend as i32 => Some(Self::PackageExcluded_FreeWeekend),
            x if x == Self::PackageExcluded_Invalid as i32 => Some(Self::PackageExcluded_Invalid),
            x if x == Self::PackageExcluded_RecurringLicense as i32 => Some(Self::PackageExcluded_RecurringLicense),
            x if x == Self::PackageExcluded_WrongLicenseType as i32 => Some(Self::PackageExcluded_WrongLicenseType),
            x if x == Self::PackageExcluded_MasterSub as i32 => Some(Self::PackageExcluded_MasterSub),
            x if x == Self::PackageExcluded_NoShareableApps as i32 => Some(Self::PackageExcluded_NoShareableApps),
            x if x == Self::LicenseExcluded_PaymentMasterSub as i32 => Some(Self::LicenseExcluded_PaymentMasterSub),
            x if x == Self::LicenseExcluded_PaymentFamilyGroup as i32 => Some(Self::LicenseExcluded_PaymentFamilyGroup),
            x if x == Self::LicenseExcluded_PaymentAuthorizedDevice as i32 => Some(Self::LicenseExcluded_PaymentAuthorizedDevice),
            x if x == Self::LicenseExcluded_PaymentAutoGrant as i32 => Some(Self::LicenseExcluded_PaymentAutoGrant),
            x if x == Self::LicenseExcluded_FlagPending as i32 => Some(Self::LicenseExcluded_FlagPending),
            x if x == Self::LicenseExcluded_FlagPendingRefund as i32 => Some(Self::LicenseExcluded_FlagPendingRefund),
            x if x == Self::LicenseExcluded_FlagBorrowed as i32 => Some(Self::LicenseExcluded_FlagBorrowed),
            x if x == Self::LicenseExcluded_FlagAutoGrant as i32 => Some(Self::LicenseExcluded_FlagAutoGrant),
            x if x == Self::LicenseExcluded_FlagTimedTrial as i32 => Some(Self::LicenseExcluded_FlagTimedTrial),
            x if x == Self::LicenseExcluded_FreeSub as i32 => Some(Self::LicenseExcluded_FreeSub),
            x if x == Self::LicenseExcluded_Inactive as i32 => Some(Self::LicenseExcluded_Inactive),
            _ => None,
        }
    }
}
