From dfce4619084ba13c1b8eb870526084b5a1a5d5d2 Mon Sep 17 00:00:00 2001 From: Lander Gallastegi Date: Thu, 10 Oct 2024 15:37:33 +0200 Subject: [PATCH] Some review changes --- src/common/cstring.h | 12 ----- src/core/libraries/dialogs/ime_dialog.cpp | 31 ++----------- src/core/libraries/dialogs/ime_dialog.h | 56 ++++++++++++++++++----- 3 files changed, 48 insertions(+), 51 deletions(-) diff --git a/src/common/cstring.h b/src/common/cstring.h index aeed33fb1..070ed6fad 100644 --- a/src/common/cstring.h +++ b/src/common/cstring.h @@ -152,21 +152,9 @@ public: static_assert(sizeof(CString<13>) == sizeof(char[13])); // Ensure size still matches a simple array static_assert(std::weakly_incrementable::Iterator>); -/** - * @brief A null-terminated wide string with a fixed maximum length - * This class is not meant to be used as a general-purpose string class - * It is meant to be used as `char[N]` where memory layout is fixed - * @tparam N Maximum length of the string - */ template using CWString = CString; -/** - * @brief A null-terminated 16-bit char string with a fixed maximum length - * This class is not meant to be used as a general-purpose string class - * It is meant to be used as `char[N]` where memory layout is fixed - * @tparam N Maximum length of the string - */ template using CU16String = CString; diff --git a/src/core/libraries/dialogs/ime_dialog.cpp b/src/core/libraries/dialogs/ime_dialog.cpp index 4b6a60fbd..3d168bb79 100644 --- a/src/core/libraries/dialogs/ime_dialog.cpp +++ b/src/core/libraries/dialogs/ime_dialog.cpp @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include +#include #include #include "common/logging/log.h" #include "core/libraries/error_codes.h" @@ -9,8 +9,8 @@ #include "ime_dialog.h" #include "ime_dialog_ui.h" -static constexpr float MAX_X_POSITIONS[] = {3840.0f, 1920.0f}; -static constexpr float MAX_Y_POSITIONS[] = {2160.0f, 1080.0f}; +static constexpr std::array MAX_X_POSITIONS = {3840.0f, 1920.0f}; +static constexpr std::array MAX_Y_POSITIONS = {2160.0f, 1080.0f}; namespace Libraries::ImeDialog { @@ -38,11 +38,6 @@ static bool IsValidOption(OrbisImeDialogOption option, OrbisImeType type) { return true; } -static bool IsMemZero(const void* ptr, size_t size) { - return std::all_of(static_cast(ptr), static_cast(ptr) + size, - [](u8 c) { return c == 0; }); -} - Error PS4_SYSV_ABI sceImeDialogAbort() { if (g_ime_dlg_status == OrbisImeDialogStatus::NONE) { LOG_INFO(Lib_ImeDialog, "IME dialog not in use"); @@ -108,11 +103,6 @@ Error PS4_SYSV_ABI sceImeDialogGetResult(OrbisImeDialogResult* result) { return Error::INVALID_ADDRESS; } - if (!IsMemZero(result->reserved, 12)) { - LOG_INFO(Lib_ImeDialog, "Invalid result->reserved"); - return Error::INVALID_RESERVED; - } - result->endstatus = g_ime_dlg_result.endstatus; if (g_ime_dlg_status == OrbisImeDialogStatus::RUNNING) { @@ -179,16 +169,6 @@ Error PS4_SYSV_ABI sceImeDialogInit(OrbisImeDialogParam* param, OrbisImeParamExt return Error::INVALID_PARAM; } - if (param->userId != 1) { // We only support user 1 for now - LOG_INFO(Lib_ImeDialog, "Invalid param->userId"); - return Error::INVALID_USER_ID; - } - - if (!IsMemZero(param->reserved, 16)) { - LOG_INFO(Lib_ImeDialog, "Invalid param->reserved"); - return Error::INVALID_RESERVED; - } - if (param->inputTextBuffer == nullptr) { LOG_INFO(Lib_ImeDialog, "Invalid param->inputTextBuffer"); return Error::INVALID_INPUT_TEXT_BUFFER; @@ -202,11 +182,6 @@ Error PS4_SYSV_ABI sceImeDialogInit(OrbisImeDialogParam* param, OrbisImeParamExt // TODO: do correct extended->option validation - if (!IsMemZero(extended->reserved, 60)) { - LOG_INFO(Lib_ImeDialog, "Invalid extended->reserved"); - return Error::INVALID_EXTENDED; - } - if ((extended->extKeyboardMode & 0xe3fffffc) != 0) { LOG_INFO(Lib_ImeDialog, "Invalid extended->extKeyboardMode"); return Error::INVALID_EXTENDED; diff --git a/src/core/libraries/dialogs/ime_dialog.h b/src/core/libraries/dialogs/ime_dialog.h index ae6228fca..66cf9fb93 100644 --- a/src/core/libraries/dialogs/ime_dialog.h +++ b/src/core/libraries/dialogs/ime_dialog.h @@ -53,16 +53,35 @@ enum class Error : u32 { DIALOG_INVALID_TITLE = 0x80bc0101, DIALOG_NOT_RUNNING = 0x80bc0105, DIALOG_NOT_FINISHED = 0x80bc0106, - DIALOG_NOT_IN_USE = 0x80bc0107 + DIALOG_NOT_IN_USE = 0x80bc0107, }; -enum class OrbisImeDialogStatus : u32 { NONE = 0, RUNNING = 1, FINISHED = 2 }; +enum class OrbisImeDialogStatus : u32 { + NONE = 0, + RUNNING = 1, + FINISHED = 2, +}; -enum class OrbisImeDialogEndStatus : u32 { OK = 0, USER_CANCELED = 1, ABORTED = 2 }; +enum class OrbisImeDialogEndStatus : u32 { + OK = 0, + USER_CANCELED = 1, + ABORTED = 2, +}; -enum class OrbisImeType : u32 { DEFAULT = 0, BASIC_LATIN = 1, URL = 2, MAIL = 3, NUMBER = 4 }; +enum class OrbisImeType : u32 { + DEFAULT = 0, + BASIC_LATIN = 1, + URL = 2, + MAIL = 3, + NUMBER = 4, +}; -enum class OrbisImeEnterLabel : u32 { DEFAULT = 0, SEND = 1, SEARCH = 2, GO = 3 }; +enum class OrbisImeEnterLabel : u32 { + DEFAULT = 0, + SEND = 1, + SEARCH = 2, + GO = 3, +}; enum class OrbisImeDialogOption : u32 { DEFAULT = 0, @@ -70,18 +89,33 @@ enum class OrbisImeDialogOption : u32 { NO_AUTO_CORRECTION = 2, NO_AUTO_COMPLETION = 4, // TODO: Document missing options - LARGE_RESOLUTION = 1024 + LARGE_RESOLUTION = 1024, }; DECLARE_ENUM_FLAG_OPERATORS(OrbisImeDialogOption) -enum class OrbisImeInputMethod : u32 { DEFAULT = 0 }; +enum class OrbisImeInputMethod : u32 { + DEFAULT = 0, +}; -enum class OrbisImeHorizontalAlignment : u32 { LEFT = 0, CENTER = 1, RIGHT = 2 }; +enum class OrbisImeHorizontalAlignment : u32 { + LEFT = 0, + CENTER = 1, + RIGHT = 2, +}; -enum class OrbisImeVerticalAlignment : u32 { TOP = 0, CENTER = 1, BOTTOM = 2 }; +enum class OrbisImeVerticalAlignment : u32 { + TOP = 0, + CENTER = 1, + BOTTOM = 2, +}; -enum class OrbisImePanelPriority : u32 { DEFAULT = 0, ALPHABET = 1, SYMBOL = 2, ACCENT = 3 }; +enum class OrbisImePanelPriority : u32 { + DEFAULT = 0, + ALPHABET = 1, + SYMBOL = 2, + ACCENT = 3, +}; enum class OrbisImeKeyboardType : u32 { NONE = 0, @@ -121,7 +155,7 @@ enum class OrbisImeKeyboardType : u32 { INDONESIAN = 34, VIETNAMESE = 35, ROMANIAN = 36, - HUNGARIAN = 37 + HUNGARIAN = 37, }; struct OrbisImeColor {