Skip to content
Permalink
Browse files

DolphinQt: Replace QStringLiteral with alternatives where applicable

QStringLiterals generate a buffer so that during runtime there's very
little cost to constructing a QString. However, this also means that
duplicated strings cannot be optimized out into a single entry that gets
referenced everywhere, taking up space in the binary.

Rather than use QStringLiteral(""), we can just use QString{} (the
default constructor) to signify the empty string. This gets rid of an
unnecessary string buffer from being created, saving a tiny bit of
space.

While we're at it, we can just use the character overloads of particular
functions when they're available instead of using a QString overload.
The characters in this case are Latin-1 to begin with, so we can just
specify the characters as QLatin1Char instances to use those overloads.
These will automatically convert to QChar if needed, so this is safe.
  • Loading branch information...
lioncash committed Jul 30, 2019
1 parent dea2b9c commit fef1b84f0a587dc285af6659cb64042e34e54223
Showing with 70 additions and 73 deletions.
  1. +2 −3 Source/Core/DolphinQt/CheatsManager.cpp
  2. +2 −2 Source/Core/DolphinQt/Config/ARCodeWidget.cpp
  3. +6 −6 Source/Core/DolphinQt/Config/CheatCodeEditor.cpp
  4. +1 −1 Source/Core/DolphinQt/Config/FilesystemWidget.cpp
  5. +1 −1 Source/Core/DolphinQt/Config/GameConfigEdit.cpp
  6. +2 −2 Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp
  7. +1 −1 Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp
  8. +1 −1 Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp
  9. +2 −2 Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp
  10. +6 −6 Source/Core/DolphinQt/Config/Mapping/GCKeyboardEmu.cpp
  11. +2 −2 Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp
  12. +1 −1 Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp
  13. +1 −1 Source/Core/DolphinQt/Config/Mapping/MappingNumeric.cpp
  14. +3 −3 Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp
  15. +3 −3 Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp
  16. +1 −1 Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp
  17. +3 −3 Source/Core/DolphinQt/Debugger/CodeWidget.cpp
  18. +2 −1 Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp
  19. +1 −1 Source/Core/DolphinQt/Debugger/RegisterWidget.cpp
  20. +1 −1 Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp
  21. +2 −2 Source/Core/DolphinQt/GCMemcardManager.cpp
  22. +3 −3 Source/Core/DolphinQt/GameList/GameList.cpp
  23. +1 −1 Source/Core/DolphinQt/MainWindow.cpp
  24. +11 −12 Source/Core/DolphinQt/MenuBar.cpp
  25. +3 −4 Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp
  26. +1 −2 Source/Core/DolphinQt/QtUtils/ElidedButton.h
  27. +2 −2 Source/Core/DolphinQt/ResourcePackManager.cpp
  28. +1 −1 Source/Core/DolphinQt/Resources.cpp
  29. +1 −1 Source/Core/DolphinQt/Settings/GameCubePane.cpp
  30. +2 −2 Source/Core/DolphinQt/Settings/InterfacePane.cpp
  31. +1 −1 Source/Core/DolphinQt/Updater.cpp
@@ -625,8 +625,7 @@ static QString GetResultString(const Result& result)
case DataType::String:
return QObject::tr("String Match");
default:
// Make MSVC happy
return QStringLiteral("");
return {};
}
}

@@ -722,7 +721,7 @@ void CheatsManager::Reset()
m_match_table->clear();
m_watch_table->clear();
m_match_decimal->setChecked(true);
m_result_label->setText(QStringLiteral(""));
m_result_label->clear();

Update();
}
@@ -152,8 +152,8 @@ void ARCodeWidget::UpdateList()
{
const auto& ar = m_ar_codes[i];
auto* item = new QListWidgetItem(QString::fromStdString(ar.name)
.replace(QStringLiteral("&lt;"), QStringLiteral("<"))
.replace(QStringLiteral("&gt;"), QStringLiteral(">")));
.replace(QStringLiteral("&lt;"), QChar::fromLatin1('<'))
.replace(QStringLiteral("&gt;"), QChar::fromLatin1('>')));

item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable |
Qt::ItemIsDragEnabled);
@@ -124,7 +124,7 @@ bool CheatCodeEditor::AcceptAR()
std::vector<ActionReplay::AREntry> entries;
std::vector<std::string> encrypted_lines;

QStringList lines = m_code_edit->toPlainText().split(QStringLiteral("\n"));
QStringList lines = m_code_edit->toPlainText().split(QLatin1Char{'\n'});

for (int i = 0; i < lines.size(); i++)
{
@@ -133,7 +133,7 @@ bool CheatCodeEditor::AcceptAR()
if (line.isEmpty())
continue;

QStringList values = line.split(QStringLiteral(" "));
QStringList values = line.split(QLatin1Char{' '});

bool good = true;

@@ -152,7 +152,7 @@ bool CheatCodeEditor::AcceptAR()
}
else
{
QStringList blocks = line.split(QStringLiteral("-"));
QStringList blocks = line.split(QLatin1Char{'-'});

if (blocks.size() == 3 && blocks[0].size() == 4 && blocks[1].size() == 4 &&
blocks[2].size() == 5)
@@ -230,7 +230,7 @@ bool CheatCodeEditor::AcceptGecko()
{
std::vector<Gecko::GeckoCode::Code> entries;

QStringList lines = m_code_edit->toPlainText().split(QStringLiteral("\n"));
QStringList lines = m_code_edit->toPlainText().split(QLatin1Char{'\n'});

for (int i = 0; i < lines.size(); i++)
{
@@ -239,7 +239,7 @@ bool CheatCodeEditor::AcceptGecko()
if (line.isEmpty())
continue;

QStringList values = line.split(QStringLiteral(" "));
QStringList values = line.split(QLatin1Char{' '});

bool good = values.size() == 2;

@@ -289,7 +289,7 @@ bool CheatCodeEditor::AcceptGecko()
m_gecko_code->user_defined = true;

std::vector<std::string> note_lines;
for (QString line : m_notes_edit->toPlainText().split(QStringLiteral("\n")))
for (const QString& line : m_notes_edit->toPlainText().split(QLatin1Char{'\n'}))
note_lines.push_back(line.toStdString());

m_gecko_code->notes = std::move(note_lines);
@@ -263,7 +263,7 @@ DiscIO::Partition FilesystemWidget::GetPartitionFromID(int id)

void FilesystemWidget::ExtractPartition(const DiscIO::Partition& partition, const QString& out)
{
ExtractDirectory(partition, QStringLiteral(""), out + QStringLiteral("/files"));
ExtractDirectory(partition, QString{}, out + QStringLiteral("/files"));
ExtractSystemData(partition, out);
}

@@ -179,7 +179,7 @@ void GameConfigEdit::SetOption(const QString& section, const QString& key, const
if (value_cursor.isNull())
{
section_cursor.clearSelection();
section_cursor.insertText(QStringLiteral("\n") + new_line);
section_cursor.insertText(QLatin1Char{'\n'} + new_line);
}
else
{
@@ -280,8 +280,8 @@ void GeckoCodeWidget::UpdateList()
const auto& code = m_gecko_codes[i];

auto* item = new QListWidgetItem(QString::fromStdString(code.name)
.replace(QStringLiteral("&lt;"), QStringLiteral("<"))
.replace(QStringLiteral("&gt;"), QStringLiteral(">")));
.replace(QStringLiteral("&lt;"), QChar::fromLatin1('<'))
.replace(QStringLiteral("&gt;"), QChar::fromLatin1('>')));

item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable |
Qt::ItemIsDragEnabled);
@@ -189,7 +189,7 @@ void EnhancementsWidget::LoadPPShaders()
m_pp_effect->setEnabled(supports_postprocessing);

m_pp_effect->setToolTip(supports_postprocessing ?
QStringLiteral("") :
QString{} :
tr("%1 doesn't support this feature.")
.arg(tr(g_video_backend->GetDisplayName().c_str())));

@@ -299,7 +299,7 @@ void GeneralWidget::OnBackendChanged(const QString& backend_name)
m_adapter_combo->setEnabled(supports_adapters && !Core::IsRunning());

m_adapter_combo->setToolTip(supports_adapters ?
QStringLiteral("") :
QString{} :
tr("%1 doesn't support this feature.")
.arg(tr(g_video_backend->GetDisplayName().c_str())));
}
@@ -129,8 +129,8 @@ void HacksWidget::OnBackendChanged(const QString& backend_name)

const QString tooltip = tr("%1 doesn't support this feature on your system.").arg(backend_name);

m_gpu_texture_decoding->setToolTip(!gpu_texture_decoding ? tooltip : QStringLiteral(""));
m_disable_bounding_box->setToolTip(!bbox ? tooltip : QStringLiteral(""));
m_gpu_texture_decoding->setToolTip(!gpu_texture_decoding ? tooltip : QString{});
m_disable_bounding_box->setToolTip(!bbox ? tooltip : QString{});
}

void HacksWidget::ConnectWidgets()
@@ -24,19 +24,19 @@ void GCKeyboardEmu::CreateMainLayout()
m_main_layout = new QHBoxLayout();

m_main_layout->addWidget(
CreateGroupBox(QStringLiteral(""), Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb0x)));
CreateGroupBox(QString{}, Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb0x)));
m_main_layout->addWidget(
CreateGroupBox(QStringLiteral(""), Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb1x)));
CreateGroupBox(QString{}, Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb1x)));
m_main_layout->addWidget(
CreateGroupBox(QStringLiteral(""), Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb2x)));
CreateGroupBox(QString{}, Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb2x)));
m_main_layout->addWidget(
CreateGroupBox(QStringLiteral(""), Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb3x)));
CreateGroupBox(QString{}, Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb3x)));
m_main_layout->addWidget(
CreateGroupBox(QStringLiteral(""), Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb4x)));
CreateGroupBox(QString{}, Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb4x)));

auto* vbox_layout = new QVBoxLayout();
vbox_layout->addWidget(
CreateGroupBox(QStringLiteral(""), Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb5x)));
CreateGroupBox(QString{}, Keyboard::GetGroup(GetPort(), KeyboardGroup::Kb5x)));

m_main_layout->addLayout(vbox_layout);

@@ -32,8 +32,8 @@ constexpr int SLIDER_TICK_COUNT = 100;
// Escape ampersands and remove ticks
static QString ToDisplayString(QString&& string)
{
return string.replace(QStringLiteral("&"), QStringLiteral("&&"))
.replace(QStringLiteral("`"), QStringLiteral(""));
return string.replace(QLatin1Char{'&'}, QStringLiteral("&&"))
.replace(QLatin1Char{'`'}, QString{});
}

bool MappingButton::IsInput() const
@@ -33,7 +33,7 @@ QString GetExpressionForControl(const QString& control_name,
if (control_device != default_device)
{
expr += QString::fromStdString(control_device.ToString());
expr += QStringLiteral(":");
expr += QLatin1Char{':'};
}

// append the control name
@@ -16,7 +16,7 @@ MappingDouble::MappingDouble(MappingWidget* parent, ControllerEmu::NumericSettin
setDecimals(2);

if (const auto ui_suffix = m_setting.GetUISuffix())
setSuffix(QStringLiteral(" ") + tr(ui_suffix));
setSuffix(QLatin1Char{' '} + tr(ui_suffix));

if (const auto ui_description = m_setting.GetUIDescription())
setToolTip(tr(ui_description));
@@ -308,8 +308,8 @@ void MappingWindow::OnGlobalDevicesChanged()
{
// Selected device is not currently attached.
const auto qname = QString::fromStdString(default_device);
m_devices_combo->addItem(
QStringLiteral("[") + tr("disconnected") + QStringLiteral("] ") + qname, qname);
m_devices_combo->addItem(QLatin1Char{'['} + tr("disconnected") + QStringLiteral("] ") + qname,
qname);
m_devices_combo->setCurrentIndex(m_devices_combo->count() - 1);
}
}
@@ -339,7 +339,7 @@ void MappingWindow::SetMappingType(MappingWindow::Type type)
case Type::MAPPING_GC_MICROPHONE:
widget = new GCMicrophone(this);
setWindowTitle(tr("GameCube Microphone Slot %1")
.arg(GetPort() == 0 ? QStringLiteral("A") : QStringLiteral("B")));
.arg(GetPort() == 0 ? QLatin1Char{'A'} : QLatin1Char{'B'}));
AddWidget(tr("Microphone"), widget);
break;
case Type::MAPPING_WIIMOTE_EMU:
@@ -160,7 +160,7 @@ void BreakpointWidget::Update()
int i = 0;
m_table->setRowCount(i);

auto create_item = [](const QString string = QStringLiteral("")) {
const auto create_item = [](const QString string = {}) {
QTableWidgetItem* item = new QTableWidgetItem(string);
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
return item;
@@ -224,10 +224,10 @@ void BreakpointWidget::Update()
QString flags;

if (mbp.is_break_on_read)
flags.append(QStringLiteral("r"));
flags.append(QLatin1Char{'r'});

if (mbp.is_break_on_write)
flags.append(QStringLiteral("w"));
flags.append(QLatin1Char{'w'});

m_table->setItem(i, 4, create_item(flags));

@@ -422,7 +422,7 @@ void CodeViewWidget::OnSelectionChanged()
}
else if (!styleSheet().isEmpty())
{
setStyleSheet(QStringLiteral(""));
setStyleSheet(QString{});
}
}

@@ -314,9 +314,9 @@ void CodeWidget::UpdateCallstack()

void CodeWidget::UpdateSymbols()
{
QString selection = m_symbols_list->selectedItems().isEmpty() ?
QStringLiteral("") :
m_symbols_list->selectedItems()[0]->text();
const QString selection = m_symbols_list->selectedItems().isEmpty() ?
QString{} :
m_symbols_list->selectedItems()[0]->text();
m_symbols_list->clear();

for (const auto& symbol : g_symbolDB.Symbols())
@@ -169,7 +169,8 @@ void MemoryViewWidget::Update()
case Type::ASCII:
update_values([&accessors](u32 address) {
const char value = accessors->ReadU8(address);
return std::isprint(value) ? QString{QChar::fromLatin1(value)} : QStringLiteral(".");
return std::isprint(value) ? QString{QChar::fromLatin1(value)} :
QString{QChar::fromLatin1('.')};
});
break;
case Type::U16:
@@ -81,7 +81,7 @@ void RegisterWidget::CreateWidgets()
QStringList empty_list;

for (auto i = 0; i < 9; i++)
empty_list << QStringLiteral("");
empty_list << QString{};

m_table->setHorizontalHeaderLabels(empty_list);

@@ -475,7 +475,7 @@ void FIFOAnalyzer::UpdateDescription()
text += name.empty() ?
QStringLiteral("UNKNOWN_%1").arg(*(cmddata + 1), 2, 16, QLatin1Char('0')) :
QString::fromStdString(name);
text += QStringLiteral("\n");
text += QLatin1Char{'\n'};

if (desc.empty())
text += tr("No description available");
@@ -165,13 +165,13 @@ void GCMemcardManager::UpdateSlotTable(int slot)
auto& memcard = m_slot_memcard[slot];
auto* table = m_slot_table[slot];

auto create_item = [](const QString string = QStringLiteral("")) {
const auto create_item = [](const QString& string = {}) {
QTableWidgetItem* item = new QTableWidgetItem(string);
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
return item;
};

auto strip_garbage = [](const std::string s) {
const auto strip_garbage = [](const std::string& s) {
auto offset = s.find('\0');
if (offset == std::string::npos)
offset = s.length();
@@ -449,7 +449,7 @@ void GameList::ExportWiiSave()
{
QString failed_str;
for (const std::string& str : failed)
failed_str.append(QStringLiteral("\n")).append(QString::fromStdString(str));
failed_str.append(QLatin1Char{'\n'}).append(QString::fromStdString(str));
ModalMessageBox::critical(this, tr("Save Export"),
tr("Failed to export the following save files:") + failed_str);
}
@@ -579,15 +579,15 @@ void GameList::CompressISO(bool decompress)
if (decompress)
{
if (files.size() > 1)
progress_dialog.setLabelText(tr("Decompressing...") + QStringLiteral("\n") +
progress_dialog.setLabelText(tr("Decompressing...") + QLatin1Char{'\n'} +
QFileInfo(QString::fromStdString(original_path)).fileName());
good = DiscIO::DecompressBlobToFile(original_path, dst_path.toStdString(), &CompressCB,
&progress_dialog);
}
else
{
if (files.size() > 1)
progress_dialog.setLabelText(tr("Compressing...") + QStringLiteral("\n") +
progress_dialog.setLabelText(tr("Compressing...") + QLatin1Char{'\n'} +
QFileInfo(QString::fromStdString(original_path)).fileName());
good = DiscIO::CompressFileToBlob(original_path, dst_path.toStdString(),
file->GetPlatform() == DiscIO::Platform::WiiDisc ? 1 : 0,
@@ -657,7 +657,7 @@ QStringList MainWindow::PromptFileNames()
auto& settings = Settings::Instance().GetQSettings();
QStringList paths = QFileDialog::getOpenFileNames(
this, tr("Select a File"),
settings.value(QStringLiteral("mainwindow/lastdir"), QStringLiteral("")).toString(),
settings.value(QStringLiteral("mainwindow/lastdir"), QString{}).toString(),
tr("All GC/Wii files (*.elf *.dol *.gcm *.iso *.tgc *.wbfs *.ciso *.gcz *.wad *.dff *.m3u);;"
"All Files (*)"));

0 comments on commit fef1b84

Please sign in to comment.
You can’t perform that action at this time.