From 088630a9996c283705cdd6e2e4d58ada46d3ba79 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 22 Jul 2023 13:19:54 +1000 Subject: [PATCH] Misc: Replace bit_cast wrapper with std::bit_cast --- common/BitCast.h | 29 -------------------------- common/common.vcxproj | 1 - common/common.vcxproj.filters | 3 --- pcsx2-qt/Debugger/CpuWidget.cpp | 7 +++---- pcsx2-qt/Debugger/MemoryViewWidget.cpp | 2 -- pcsx2-qt/Debugger/RegisterWidget.cpp | 15 +++++++------ 6 files changed, 10 insertions(+), 47 deletions(-) delete mode 100644 common/BitCast.h diff --git a/common/BitCast.h b/common/BitCast.h deleted file mode 100644 index d4c79bf2f0..0000000000 --- a/common/BitCast.h +++ /dev/null @@ -1,29 +0,0 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2021 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with PCSX2. - * If not, see . - */ - -#pragma once - -// An implementation of bit_cast until we get c++20 - -template -T2 bit_cast(const T1& src) -{ - static_assert(sizeof(T2) == sizeof(T1), "bit_cast: types must be equal size"); - static_assert(std::is_pod::value, "bit_cast: source must be POD"); - static_assert(std::is_pod::value, "bit_cast: destination must be POD"); - T2 dst; - memcpy(&dst, &src, sizeof(T2)); - return dst; -} diff --git a/common/common.vcxproj b/common/common.vcxproj index 29dca1956d..d3ac561dec 100644 --- a/common/common.vcxproj +++ b/common/common.vcxproj @@ -105,7 +105,6 @@ - diff --git a/common/common.vcxproj.filters b/common/common.vcxproj.filters index 000faa1024..b866f5a12f 100644 --- a/common/common.vcxproj.filters +++ b/common/common.vcxproj.filters @@ -276,9 +276,6 @@ Header Files - - Header Files - Header Files diff --git a/pcsx2-qt/Debugger/CpuWidget.cpp b/pcsx2-qt/Debugger/CpuWidget.cpp index db68e712b5..e7794a8042 100644 --- a/pcsx2-qt/Debugger/CpuWidget.cpp +++ b/pcsx2-qt/Debugger/CpuWidget.cpp @@ -26,7 +26,6 @@ #include "DebugTools/Breakpoints.h" #include "DebugTools/BiosDebugData.h" #include "DebugTools/MipsStackWalk.h" -#include "common/BitCast.h" #include "QtUtils.h" #include @@ -539,7 +538,7 @@ static std::vector searchWorker(DebugInterface* cpu, u32 start, u32 end, T { const float fTop = value + 0.00001f; const float fBottom = value - 0.00001f; - const float memValue = bit_cast(cpu->read32(addr)); + const float memValue = std::bit_cast(cpu->read32(addr)); if (fBottom < memValue && memValue < fTop) { hitAddresses.emplace_back(addr); @@ -556,7 +555,7 @@ static std::vector searchWorker(DebugInterface* cpu, u32 start, u32 end, T { const double dTop = value + 0.00001f; const double dBottom = value - 0.00001f; - const double memValue = bit_cast(cpu->read64(addr)); + const double memValue = std::bit_cast(cpu->read64(addr)); if (dBottom < memValue && memValue < dTop) { hitAddresses.emplace_back(addr); @@ -588,7 +587,7 @@ static std::vector searchWorkerByteArray(DebugInterface* cpu, u32 start, u3 for (u32 addr = start; addr < end; addr += 1) { bool hit = true; - for (size_t i = 0; i < value.length(); i++) + for (qsizetype i = 0; i < value.length(); i++) { if (cpu->read8(addr + i) != value[i]) { diff --git a/pcsx2-qt/Debugger/MemoryViewWidget.cpp b/pcsx2-qt/Debugger/MemoryViewWidget.cpp index aca700e870..4e6cc5a5c8 100644 --- a/pcsx2-qt/Debugger/MemoryViewWidget.cpp +++ b/pcsx2-qt/Debugger/MemoryViewWidget.cpp @@ -17,8 +17,6 @@ #include "MemoryViewWidget.h" -#include "common/BitCast.h" - #include "QtHost.h" #include "QtUtils.h" #include diff --git a/pcsx2-qt/Debugger/RegisterWidget.cpp b/pcsx2-qt/Debugger/RegisterWidget.cpp index f53eb84e24..0aa236df19 100644 --- a/pcsx2-qt/Debugger/RegisterWidget.cpp +++ b/pcsx2-qt/Debugger/RegisterWidget.cpp @@ -17,8 +17,6 @@ #include "RegisterWidget.h" -#include "common/BitCast.h" - #include "QtUtils.h" #include #include @@ -30,6 +28,7 @@ #include #include +#include #define CAT_SHOW_FLOAT (categoryIndex == EECAT_FPR && m_showFPRFloat) || (categoryIndex == EECAT_VU0F && m_showVU0FFloat) @@ -151,7 +150,7 @@ void RegisterWidget::paintEvent(QPaintEvent* event) if (categoryIndex == EECAT_VU0F && m_showVU0FFloat) painter.drawText(m_fieldStartX[j], yStart, m_fieldWidth, m_rowHeight, Qt::AlignLeft, - painter.fontMetrics().elidedText(QString::number(bit_cast(m_cpu->getRegister(categoryIndex, registerIndex)._u32[regIndex])), Qt::ElideRight, m_fieldWidth - painter.fontMetrics().averageCharWidth())); + painter.fontMetrics().elidedText(QString::number(std::bit_cast(m_cpu->getRegister(categoryIndex, registerIndex)._u32[regIndex])), Qt::ElideRight, m_fieldWidth - painter.fontMetrics().averageCharWidth())); else painter.drawText(m_fieldStartX[j], yStart, m_fieldWidth, m_rowHeight, Qt::AlignLeft, FilledQStringFromValue(curRegister._u32[regIndex], 16)); @@ -168,7 +167,7 @@ void RegisterWidget::paintEvent(QPaintEvent* event) if (categoryIndex == EECAT_FPR && m_showFPRFloat) painter.drawText(safeValueStartX, yStart, renderSize.width(), m_rowHeight, Qt::AlignLeft, - QString("%1").arg(QString::number(bit_cast(m_cpu->getRegister(categoryIndex, registerIndex)._u32[0]))).toUpper()); + QString("%1").arg(QString::number(std::bit_cast(m_cpu->getRegister(categoryIndex, registerIndex)._u32[0]))).toUpper()); else if (m_cpu->getRegisterSize(categoryIndex) == 64) painter.drawText(safeValueStartX, yStart, renderSize.width(), m_rowHeight, Qt::AlignLeft, FilledQStringFromValue(m_cpu->getRegister(categoryIndex, registerIndex).lo, 16)); @@ -299,7 +298,7 @@ void RegisterWidget::contextCopyValue() const int categoryIndex = ui.registerTabs->currentIndex(); const u128 val = m_cpu->getRegister(categoryIndex, m_selectedRow); if (CAT_SHOW_FLOAT) - QApplication::clipboard()->setText(QString("%1").arg(QString::number(bit_cast(val._u32[0])).toUpper(), 16)); + QApplication::clipboard()->setText(QString("%1").arg(QString::number(std::bit_cast(val._u32[0])).toUpper(), 16)); else QApplication::clipboard()->setText(QString("%1").arg(QString::number(val._u64[0], 16).toUpper(), 16)); } @@ -323,7 +322,7 @@ void RegisterWidget::contextCopySegment() const int categoryIndex = ui.registerTabs->currentIndex(); const u128 val = m_cpu->getRegister(categoryIndex, m_selectedRow); if (CAT_SHOW_FLOAT) - QApplication::clipboard()->setText(FilledQStringFromValue(bit_cast(val._u32[3 - m_selected128Field]), 10)); + QApplication::clipboard()->setText(FilledQStringFromValue(std::bit_cast(val._u32[3 - m_selected128Field]), 10)); else QApplication::clipboard()->setText(FilledQStringFromValue(val._u32[3 - m_selected128Field], 16)); } @@ -340,7 +339,7 @@ bool RegisterWidget::contextFetchNewValue(u64& out, u64 currentValue, bool segme if (!floatingPoint) existingValue = existingValue.arg(currentValue, regSize == 64 ? 16 : 8, 16, QChar('0')); else - existingValue = existingValue.arg(bit_cast((u32)currentValue)); + existingValue = existingValue.arg(std::bit_cast((u32)currentValue)); //: Changing the value in a CPU register (e.g. "Change t0") QString input = QInputDialog::getText(this, tr("Change %1").arg(m_cpu->getRegisterName(categoryIndex, m_selectedRow)), "", @@ -360,7 +359,7 @@ bool RegisterWidget::contextFetchNewValue(u64& out, u64 currentValue, bool segme } else { - out = bit_cast(input.toFloat(&ok)); + out = std::bit_cast(input.toFloat(&ok)); if (!ok) { QMessageBox::warning(this, tr("Invalid register value"), tr("Invalid floating-point register value."));