citra-emu
/
citra-canary
Archived
1
0
Fork 0

General: Remove usages of ARRAY_SIZE where applicable. (#5392)

Same behavior, but without our own boilerplate function.
This commit is contained in:
LC 2020-06-19 10:10:45 -04:00 committed by GitHub
parent f7aaa37bf2
commit 8ce81b19be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 35 additions and 29 deletions

View File

@ -373,7 +373,7 @@ GraphicsVertexShaderWidget::GraphicsVertexShaderWidget(
auto input_data_mapper = new QSignalMapper(this); auto input_data_mapper = new QSignalMapper(this);
// TODO: Support inputting data in hexadecimal raw format // TODO: Support inputting data in hexadecimal raw format
for (unsigned i = 0; i < ARRAY_SIZE(input_data); ++i) { for (std::size_t i = 0; i < input_data.size(); ++i) {
input_data[i] = new QLineEdit; input_data[i] = new QLineEdit;
input_data[i]->setValidator(new QDoubleValidator(input_data[i])); input_data[i]->setValidator(new QDoubleValidator(input_data[i]));
} }
@ -401,7 +401,7 @@ GraphicsVertexShaderWidget::GraphicsVertexShaderWidget(
connect(cycle_index, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, connect(cycle_index, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
&GraphicsVertexShaderWidget::OnCycleIndexChanged); &GraphicsVertexShaderWidget::OnCycleIndexChanged);
for (unsigned i = 0; i < ARRAY_SIZE(input_data); ++i) { for (u32 i = 0; i < input_data.size(); ++i) {
connect(input_data[i], &QLineEdit::textEdited, input_data_mapper, connect(input_data[i], &QLineEdit::textEdited, input_data_mapper,
static_cast<void (QSignalMapper::*)()>(&QSignalMapper::map)); static_cast<void (QSignalMapper::*)()>(&QSignalMapper::map));
input_data_mapper->setMapping(input_data[i], i); input_data_mapper->setMapping(input_data[i], i);

View File

@ -67,13 +67,14 @@ private:
QTreeView* binary_list; QTreeView* binary_list;
GraphicsVertexShaderModel* model; GraphicsVertexShaderModel* model;
/// TODO: Move these into a single struct // TODO: Move these into a single struct
std::array<QLineEdit*, 4 * 16>
input_data; // A text box for each of the 4 components of up to 16 vertex attributes // A text box for each of the 4 components of up to 16 vertex attributes
std::array<QWidget*, 16> std::array<QLineEdit*, 4 * 16> input_data;
input_data_container; // QWidget containing the QLayout containing each vertex attribute // QWidget containing the QLayout containing each vertex attribute
std::array<QLabel*, 16> input_data_mapping; // A QLabel denoting the shader input attribute std::array<QWidget*, 16> input_data_container;
// which the vertex attribute maps to // A QLabel denoting the shader input attribute which the vertex attribute maps to
std::array<QLabel*, 16> input_data_mapping;
// Text to be shown when input vertex data is not retrievable // Text to be shown when input vertex data is not retrievable
QLabel* breakpoint_warning; QLabel* breakpoint_warning;

View File

@ -11,8 +11,6 @@
#endif #endif
#include "common/common_types.h" #include "common/common_types.h"
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
/// Textually concatenates two tokens. The double-expansion is required by the C preprocessor. /// Textually concatenates two tokens. The double-expansion is required by the C preprocessor.
#define CONCAT2(x, y) DO_CONCAT2(x, y) #define CONCAT2(x, y) DO_CONCAT2(x, y)
#define DO_CONCAT2(x, y) x##y #define DO_CONCAT2(x, y) x##y

View File

@ -167,12 +167,16 @@ struct ExHeader_ARM11_SystemLocalCaps {
}; };
struct ExHeader_ARM11_KernelCaps { struct ExHeader_ARM11_KernelCaps {
u32_le descriptors[28]; static constexpr std::size_t NUM_DESCRIPTORS = 28;
u32_le descriptors[NUM_DESCRIPTORS];
u8 reserved[0x10]; u8 reserved[0x10];
}; };
struct ExHeader_ARM9_AccessControl { struct ExHeader_ARM9_AccessControl {
u8 descriptors[15]; static constexpr std::size_t NUM_DESCRIPTORS = 15;
u8 descriptors[NUM_DESCRIPTORS];
u8 descversion; u8 descversion;
}; };

View File

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <algorithm> #include <algorithm>
#include <array>
#include <cinttypes> #include <cinttypes>
#include <map> #include <map>
#include <fmt/format.h> #include <fmt/format.h>
@ -182,7 +183,7 @@ private:
const char* name; const char* name;
}; };
static const FunctionDef SVC_Table[]; static const std::array<FunctionDef, 126> SVC_Table;
static const FunctionDef* GetSVCInfo(u32 func_num); static const FunctionDef* GetSVCInfo(u32 func_num);
}; };
@ -1458,7 +1459,7 @@ ResultCode SVC::GetProcessInfo(s64* out, Handle process_handle, u32 type) {
return RESULT_SUCCESS; return RESULT_SUCCESS;
} }
const SVC::FunctionDef SVC::SVC_Table[] = { const std::array<SVC::FunctionDef, 126> SVC::SVC_Table{{
{0x00, nullptr, "Unknown"}, {0x00, nullptr, "Unknown"},
{0x01, &SVC::Wrap<&SVC::ControlMemory>, "ControlMemory"}, {0x01, &SVC::Wrap<&SVC::ControlMemory>, "ControlMemory"},
{0x02, &SVC::Wrap<&SVC::QueryMemory>, "QueryMemory"}, {0x02, &SVC::Wrap<&SVC::QueryMemory>, "QueryMemory"},
@ -1585,10 +1586,10 @@ const SVC::FunctionDef SVC::SVC_Table[] = {
{0x7B, nullptr, "Backdoor"}, {0x7B, nullptr, "Backdoor"},
{0x7C, nullptr, "KernelSetState"}, {0x7C, nullptr, "KernelSetState"},
{0x7D, &SVC::Wrap<&SVC::QueryProcessMemory>, "QueryProcessMemory"}, {0x7D, &SVC::Wrap<&SVC::QueryProcessMemory>, "QueryProcessMemory"},
}; }};
const SVC::FunctionDef* SVC::GetSVCInfo(u32 func_num) { const SVC::FunctionDef* SVC::GetSVCInfo(u32 func_num) {
if (func_num >= ARRAY_SIZE(SVC_Table)) { if (func_num >= SVC_Table.size()) {
LOG_ERROR(Kernel_SVC, "unknown svc=0x{:02X}", func_num); LOG_ERROR(Kernel_SVC, "unknown svc=0x{:02X}", func_num);
return nullptr; return nullptr;
} }

View File

@ -675,7 +675,7 @@ std::u16string Module::GetUsername() {
// the username string in the block isn't null-terminated, // the username string in the block isn't null-terminated,
// so we need to find the end manually. // so we need to find the end manually.
std::u16string username(block.username, ARRAY_SIZE(block.username)); std::u16string username(block.username, std::size(block.username));
const std::size_t pos = username.find(u'\0'); const std::size_t pos = username.find(u'\0');
if (pos != std::u16string::npos) if (pos != std::u16string::npos)
username.erase(pos); username.erase(pos);

View File

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <array>
#include <cstring> #include <cstring>
#include "common/archives.h" #include "common/archives.h"
#include "common/common_funcs.h" #include "common/common_funcs.h"
@ -29,12 +30,12 @@ void Y2R_U::serialize(Archive& ar, const unsigned int) {
ar& spacial_dithering_enabled; ar& spacial_dithering_enabled;
} }
static const CoefficientSet standard_coefficients[4] = { constexpr std::array<CoefficientSet, 4> standard_coefficients{{
{{0x100, 0x166, 0xB6, 0x58, 0x1C5, -0x166F, 0x10EE, -0x1C5B}}, // ITU_Rec601 {{0x100, 0x166, 0xB6, 0x58, 0x1C5, -0x166F, 0x10EE, -0x1C5B}}, // ITU_Rec601
{{0x100, 0x193, 0x77, 0x2F, 0x1DB, -0x1933, 0xA7C, -0x1D51}}, // ITU_Rec709 {{0x100, 0x193, 0x77, 0x2F, 0x1DB, -0x1933, 0xA7C, -0x1D51}}, // ITU_Rec709
{{0x12A, 0x198, 0xD0, 0x64, 0x204, -0x1BDE, 0x10F2, -0x229B}}, // ITU_Rec601_Scaling {{0x12A, 0x198, 0xD0, 0x64, 0x204, -0x1BDE, 0x10F2, -0x229B}}, // ITU_Rec601_Scaling
{{0x12A, 0x1CA, 0x88, 0x36, 0x21C, -0x1F04, 0x99C, -0x2421}}, // ITU_Rec709_Scaling {{0x12A, 0x1CA, 0x88, 0x36, 0x21C, -0x1F04, 0x99C, -0x2421}}, // ITU_Rec709_Scaling
}; }};
ResultCode ConversionConfiguration::SetInputLineWidth(u16 width) { ResultCode ConversionConfiguration::SetInputLineWidth(u16 width) {
if (width == 0 || width > 1024 || width % 8 != 0) { if (width == 0 || width > 1024 || width % 8 != 0) {
@ -66,8 +67,8 @@ ResultCode ConversionConfiguration::SetInputLines(u16 lines) {
ResultCode ConversionConfiguration::SetStandardCoefficient( ResultCode ConversionConfiguration::SetStandardCoefficient(
StandardCoefficient standard_coefficient) { StandardCoefficient standard_coefficient) {
std::size_t index = static_cast<std::size_t>(standard_coefficient); const auto index = static_cast<std::size_t>(standard_coefficient);
if (index >= ARRAY_SIZE(standard_coefficients)) { if (index >= standard_coefficients.size()) {
return ResultCode(ErrorDescription::InvalidEnumValue, ErrorModule::CAM, return ResultCode(ErrorDescription::InvalidEnumValue, ErrorModule::CAM,
ErrorSummary::InvalidArgument, ErrorLevel::Usage); // 0xE0E053ED ErrorSummary::InvalidArgument, ErrorLevel::Usage); // 0xE0E053ED
} }
@ -457,9 +458,9 @@ void Y2R_U::SetStandardCoefficient(Kernel::HLERequestContext& ctx) {
void Y2R_U::GetStandardCoefficient(Kernel::HLERequestContext& ctx) { void Y2R_U::GetStandardCoefficient(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x21, 1, 0); IPC::RequestParser rp(ctx, 0x21, 1, 0);
u32 index = rp.Pop<u32>(); const u32 index = rp.Pop<u32>();
if (index < ARRAY_SIZE(standard_coefficients)) { if (index < standard_coefficients.size()) {
IPC::RequestBuilder rb = rp.MakeBuilder(5, 0); IPC::RequestBuilder rb = rp.MakeBuilder(5, 0);
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.PushRaw(standard_coefficients[index]); rb.PushRaw(standard_coefficients[index]);

View File

@ -134,8 +134,8 @@ ResultStatus AppLoader_NCCH::LoadExec(std::shared_ptr<Kernel::Process>& process)
overlay_ncch->exheader_header.arm11_system_local_caps.ideal_processor; overlay_ncch->exheader_header.arm11_system_local_caps.ideal_processor;
// Copy data while converting endianness // Copy data while converting endianness
std::array<u32, ARRAY_SIZE(overlay_ncch->exheader_header.arm11_kernel_caps.descriptors)> using KernelCaps = std::array<u32, ExHeader_ARM11_KernelCaps::NUM_DESCRIPTORS>;
kernel_caps; KernelCaps kernel_caps;
std::copy_n(overlay_ncch->exheader_header.arm11_kernel_caps.descriptors, kernel_caps.size(), std::copy_n(overlay_ncch->exheader_header.arm11_kernel_caps.descriptors, kernel_caps.size(),
begin(kernel_caps)); begin(kernel_caps));
process->ParseKernelCaps(kernel_caps.data(), kernel_caps.size()); process->ParseKernelCaps(kernel_caps.data(), kernel_caps.size());

View File

@ -206,7 +206,7 @@ void OpenGLState::Apply() const {
} }
// Textures // Textures
for (unsigned i = 0; i < ARRAY_SIZE(texture_units); ++i) { for (u32 i = 0; i < texture_units.size(); ++i) {
if (texture_units[i].texture_2d != cur_state.texture_units[i].texture_2d) { if (texture_units[i].texture_2d != cur_state.texture_units[i].texture_2d) {
glActiveTexture(TextureUnits::PicaTexture(i).Enum()); glActiveTexture(TextureUnits::PicaTexture(i).Enum());
glBindTexture(GL_TEXTURE_2D, texture_units[i].texture_2d); glBindTexture(GL_TEXTURE_2D, texture_units[i].texture_2d);

View File

@ -90,10 +90,11 @@ public:
GLenum logic_op; // GL_LOGIC_OP_MODE GLenum logic_op; // GL_LOGIC_OP_MODE
// 3 texture units - one for each that is used in PICA fragment shader emulation // 3 texture units - one for each that is used in PICA fragment shader emulation
struct { struct TextureUnit {
GLuint texture_2d; // GL_TEXTURE_BINDING_2D GLuint texture_2d; // GL_TEXTURE_BINDING_2D
GLuint sampler; // GL_SAMPLER_BINDING GLuint sampler; // GL_SAMPLER_BINDING
} texture_units[3]; };
std::array<TextureUnit, 3> texture_units;
struct { struct {
GLuint texture_cube; // GL_TEXTURE_BINDING_CUBE_MAP GLuint texture_cube; // GL_TEXTURE_BINDING_CUBE_MAP