diff options
author | Pierre Ossman <ossman@cendio.se> | 2024-11-18 15:42:39 +0100 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2025-02-25 16:46:19 +0100 |
commit | 803bdb558f13c9000a3cc4818ce3391baeb043bd (patch) | |
tree | 9cf257951f0b79c3692574968d0efc9626ae5bd2 /vncviewer | |
parent | 6bfcaecc4751f1b716022e4a11a8a51758608981 (diff) | |
download | tigervnc-803bdb558f13c9000a3cc4818ce3391baeb043bd.tar.gz tigervnc-803bdb558f13c9000a3cc4818ce3391baeb043bd.zip |
Reduce number of inline casts
Make this code a bit more readable by getting rid of some of the
repeated casts.
Diffstat (limited to 'vncviewer')
-rw-r--r-- | vncviewer/parameters.cxx | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/vncviewer/parameters.cxx b/vncviewer/parameters.cxx index e728026e..0af990e9 100644 --- a/vncviewer/parameters.cxx +++ b/vncviewer/parameters.cxx @@ -480,46 +480,52 @@ static void saveToReg(const char* servername) { _("Failed to save \"%s\": %s"), "ServerName", e.what())); } - for (size_t i = 0; i < sizeof(parameterArray)/sizeof(VoidParameter*); i++) { - if (parameterArray[i]->isDefault()) { + for (VoidParameter* param : parameterArray) { + IntParameter* iparam; + BoolParameter* bparam; + + if (param->isDefault()) { try { - removeValue(parameterArray[i]->getName(), &hKey); + removeValue(param->getName(), &hKey); } catch (std::exception& e) { RegCloseKey(hKey); throw std::runtime_error( core::format(_("Failed to remove \"%s\": %s"), - parameterArray[i]->getName(), e.what())); + param->getName(), e.what())); } continue; } + iparam = dynamic_cast<IntParameter*>(param); + bparam = dynamic_cast<BoolParameter*>(param); + try { - if (dynamic_cast<IntParameter*>(parameterArray[i]) != nullptr) { - setKeyInt(parameterArray[i]->getName(), (int)*(IntParameter*)parameterArray[i], &hKey); - } else if (dynamic_cast<BoolParameter*>(parameterArray[i]) != nullptr) { - setKeyInt(parameterArray[i]->getName(), (int)*(BoolParameter*)parameterArray[i], &hKey); + if (iparam != nullptr) { + setKeyInt(iparam->getName(), (int)*(iparam), &hKey); + } else if (bparam != nullptr) { + setKeyInt(bparam->getName(), (int)*(bparam), &hKey); } else { - setKeyString(parameterArray[i]->getName(), parameterArray[i]->getValueStr().c_str(), &hKey); + setKeyString(param->getName(), param->getValueStr().c_str(), &hKey); } } catch (std::exception& e) { RegCloseKey(hKey); throw std::runtime_error( core::format(_("Failed to save \"%s\": %s"), - parameterArray[i]->getName(), e.what())); + param->getName(), e.what())); } } // Remove read-only parameters to replicate the behaviour of Linux/macOS when they // store a config to disk. If the parameter hasn't been migrated at this point it // will be lost. - for (size_t i = 0; i < sizeof(readOnlyParameterArray)/sizeof(VoidParameter*); i++) { + for (VoidParameter* param : readOnlyParameterArray) { try { - removeValue(readOnlyParameterArray[i]->getName(), &hKey); + removeValue(param->getName(), &hKey); } catch (std::exception& e) { RegCloseKey(hKey); throw std::runtime_error( core::format(_("Failed to remove \"%s\": %s"), - readOnlyParameterArray[i]->getName(), e.what())); + param->getName(), e.what())); } } @@ -581,13 +587,19 @@ static void getParametersFromReg(VoidParameter* parameters[], char stringValue[buffersize]; for (size_t i = 0; i < parameters_len; i++) { + IntParameter* iparam; + BoolParameter* bparam; + + iparam = dynamic_cast<IntParameter*>(parameters[i]); + bparam = dynamic_cast<BoolParameter*>(parameters[i]); + try { - if (dynamic_cast<IntParameter*>(parameters[i]) != nullptr) { - if (getKeyInt(parameters[i]->getName(), &intValue, hKey)) - ((IntParameter*)parameters[i])->setParam(intValue); - } else if (dynamic_cast<BoolParameter*>(parameters[i]) != nullptr) { - if (getKeyInt(parameters[i]->getName(), &intValue, hKey)) - ((BoolParameter*)parameters[i])->setParam(intValue); + if (iparam != nullptr) { + if (getKeyInt(iparam->getName(), &intValue, hKey)) + iparam->setParam(intValue); + } else if (bparam != nullptr) { + if (getKeyInt(bparam->getName(), &intValue, hKey)) + bparam->setParam(intValue); } else { if (getKeyString(parameters[i]->getName(), stringValue, buffersize, hKey)) parameters[i]->setParam(stringValue); |