File indexing completed on 2024-05-12 05:36:53

0001 /*
0002  * SPDX-FileCopyrightText: 2018-2019 Daniel Vrátil <dvratil@kde.org>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #include "enum.h"
0008 #include "libkbolt_debug.h"
0009 
0010 #include <QList>
0011 #include <QStringList>
0012 #include <QStringView>
0013 
0014 Bolt::Status Bolt::statusFromString(const QString &str)
0015 {
0016     if (str == QLatin1String("unknown")) {
0017         return Bolt::Status::Unknown;
0018     } else if (str == QLatin1String("disconnected")) {
0019         return Bolt::Status::Disconnected;
0020     } else if (str == QLatin1String("connecting")) {
0021         return Bolt::Status::Connecting;
0022     } else if (str == QLatin1String("connected")) {
0023         return Bolt::Status::Connected;
0024     } else if (str == QLatin1String("authorizing")) {
0025         return Bolt::Status::Authorizing;
0026     } else if (str == QLatin1String("authorized")) {
0027         return Bolt::Status::Authorized;
0028     } else if (str == QLatin1String("auth-error")) {
0029         return Bolt::Status::AuthError;
0030     } else {
0031         qCCritical(log_libkbolt, "Unknown Status enum value '%s'", qUtf8Printable(str));
0032         Q_ASSERT(false);
0033         return Bolt::Status::Unknown;
0034     }
0035 }
0036 
0037 QString Bolt::statusToString(Bolt::Status status)
0038 {
0039     switch (status) {
0040     case Bolt::Status::Unknown:
0041         return QStringLiteral("unknown");
0042     case Bolt::Status::Disconnected:
0043         return QStringLiteral("disconnected");
0044     case Bolt::Status::Connecting:
0045         return QStringLiteral("connecting");
0046     case Bolt::Status::Connected:
0047         return QStringLiteral("connected");
0048     case Bolt::Status::Authorizing:
0049         return QStringLiteral("authorizing");
0050     case Bolt::Status::Authorized:
0051         return QStringLiteral("authorized");
0052     case Bolt::Status::AuthError:
0053         return QStringLiteral("auth-error");
0054     }
0055     Q_UNREACHABLE();
0056     return {};
0057 }
0058 
0059 Bolt::AuthFlags Bolt::authFlagsFromString(const QString &str)
0060 {
0061     const auto splitRef = str.split(QStringLiteral("|"));
0062     Bolt::AuthFlags outFlags = Bolt::Auth::None;
0063     for (const auto &flag : splitRef) {
0064         const auto f = flag.trimmed();
0065         if (f == QLatin1String("none")) {
0066             outFlags |= Bolt::Auth::None;
0067         } else if (f == QLatin1String("nopcie")) {
0068             outFlags |= Bolt::Auth::NoPCIE;
0069         } else if (f == QLatin1String("secure")) {
0070             outFlags |= Bolt::Auth::Secure;
0071         } else if (f == QLatin1String("nokey")) {
0072             outFlags |= Bolt::Auth::NoKey;
0073         } else if (f == QLatin1String("boot")) {
0074             outFlags |= Bolt::Auth::Boot;
0075         } else {
0076             qCCritical(log_libkbolt, "Unknown AuthFlags enum value '%s'", qUtf8Printable(str));
0077             Q_ASSERT(false);
0078             return Bolt::Auth::None;
0079         }
0080     }
0081     return outFlags;
0082 }
0083 
0084 QString Bolt::authFlagsToString(AuthFlags flags)
0085 {
0086     QStringList str;
0087     if (flags == AuthFlags(Bolt::Auth::None)) {
0088         return QStringLiteral("none");
0089     }
0090     if (flags & Bolt::Auth::NoPCIE) {
0091         str.push_back(QStringLiteral("nopcie"));
0092     }
0093     if (flags & Bolt::Auth::Secure) {
0094         str.push_back(QStringLiteral("secure"));
0095     }
0096     if (flags & Bolt::Auth::NoKey) {
0097         str.push_back(QStringLiteral("nokey"));
0098     }
0099     if (flags & Bolt::Auth::Boot) {
0100         str.push_back(QStringLiteral("boot"));
0101     }
0102 
0103     return str.join(QStringLiteral(" | "));
0104 }
0105 
0106 Bolt::KeyState Bolt::keyStateFromString(const QString &str)
0107 {
0108     if (str == QLatin1String("unknown")) {
0109         return Bolt::KeyState::Unknown;
0110     } else if (str == QLatin1String("missing")) {
0111         return Bolt::KeyState::Missing;
0112     } else if (str == QLatin1String("have")) {
0113         return Bolt::KeyState::Have;
0114     } else if (str == QLatin1String("new")) {
0115         return Bolt::KeyState::New;
0116     } else {
0117         qCCritical(log_libkbolt, "Unknown KeyState enum value '%s'", qUtf8Printable(str));
0118         Q_ASSERT(false);
0119         return Bolt::KeyState::Unknown;
0120     }
0121 }
0122 
0123 Bolt::Policy Bolt::policyFromString(const QString &str)
0124 {
0125     if (str == QLatin1String("unknown")) {
0126         return Bolt::Policy::Unknown;
0127     } else if (str == QLatin1String("default")) {
0128         return Bolt::Policy::Default;
0129     } else if (str == QLatin1String("manual")) {
0130         return Bolt::Policy::Manual;
0131     } else if (str == QLatin1String("auto")) {
0132         return Bolt::Policy::Auto;
0133     } else {
0134         qCCritical(log_libkbolt, "Unknown Policy enum value '%s'", qUtf8Printable(str));
0135         Q_ASSERT(false);
0136         return Bolt::Policy::Unknown;
0137     }
0138 }
0139 
0140 QString Bolt::policyToString(Bolt::Policy policy)
0141 {
0142     switch (policy) {
0143     case Policy::Unknown:
0144         return QStringLiteral("unknown");
0145     case Policy::Auto:
0146         return QStringLiteral("auto");
0147     case Policy::Default:
0148         return QStringLiteral("default");
0149     case Policy::Manual:
0150         return QStringLiteral("manual");
0151     }
0152 
0153     Q_UNREACHABLE();
0154     return {};
0155 }
0156 
0157 Bolt::Type Bolt::typeFromString(const QString &str)
0158 {
0159     if (str == QLatin1String("unknown")) {
0160         return Bolt::Type::Unknown;
0161     } else if (str == QLatin1String("host")) {
0162         return Bolt::Type::Host;
0163     } else if (str == QLatin1String("peripheral")) {
0164         return Bolt::Type::Peripheral;
0165     } else {
0166         qCCritical(log_libkbolt, "Unknown Type enum value '%s'", qUtf8Printable(str));
0167         Q_ASSERT(false);
0168         return Bolt::Type::Unknown;
0169     }
0170 }
0171 
0172 Bolt::AuthMode Bolt::authModeFromString(const QString &str)
0173 {
0174     if (str == QLatin1String("disabled")) {
0175         return Bolt::AuthMode::Disabled;
0176     } else if (str == QLatin1String("enabled")) {
0177         return Bolt::AuthMode::Enabled;
0178     } else {
0179         qCCritical(log_libkbolt, "Unknown AuthMode enum value '%s'", qUtf8Printable(str));
0180         Q_ASSERT(false);
0181         return Bolt::AuthMode::Disabled;
0182     }
0183 }
0184 
0185 QString Bolt::authModeToString(Bolt::AuthMode authMode)
0186 {
0187     switch (authMode) {
0188     case Bolt::AuthMode::Enabled:
0189         return QStringLiteral("enabled");
0190     case Bolt::AuthMode::Disabled:
0191         return QStringLiteral("disabled");
0192     }
0193 
0194     Q_UNREACHABLE();
0195     return {};
0196 }
0197 
0198 Bolt::Security Bolt::securityFromString(const QString &str)
0199 {
0200     if (str == QLatin1String("unknown")) {
0201         return Bolt::Security::Unknown;
0202     } else if (str == QLatin1String("none")) {
0203         return Bolt::Security::None;
0204     } else if (str == QLatin1String("dponly")) {
0205         return Bolt::Security::DPOnly;
0206     } else if (str == QLatin1String("user")) {
0207         return Bolt::Security::User;
0208     } else if (str == QLatin1String("secure")) {
0209         return Bolt::Security::Secure;
0210     } else if (str == QLatin1String("usbonly")) {
0211         return Bolt::Security::USBOnly;
0212     } else {
0213         qCCritical(log_libkbolt, "Unknown Security enum value '%s'", qUtf8Printable(str));
0214         Q_ASSERT(false);
0215         return Bolt::Security::Unknown;
0216     }
0217 }
0218 
0219 #include "moc_enum.cpp"