mirror of
https://github.com/citra-emu/citra.git
synced 2024-11-15 05:00:06 +00:00
General: Remove usages of ARRAY_SIZE where applicable. (#5392)
Same behavior, but without our own boilerplate function.
This commit is contained in:
parent
f7aaa37bf2
commit
8ce81b19be
@ -373,7 +373,7 @@ GraphicsVertexShaderWidget::GraphicsVertexShaderWidget(
|
||||
auto input_data_mapper = new QSignalMapper(this);
|
||||
|
||||
// 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]->setValidator(new QDoubleValidator(input_data[i]));
|
||||
}
|
||||
@ -401,7 +401,7 @@ GraphicsVertexShaderWidget::GraphicsVertexShaderWidget(
|
||||
connect(cycle_index, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
|
||||
&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,
|
||||
static_cast<void (QSignalMapper::*)()>(&QSignalMapper::map));
|
||||
input_data_mapper->setMapping(input_data[i], i);
|
||||
|
@ -67,13 +67,14 @@ private:
|
||||
QTreeView* binary_list;
|
||||
GraphicsVertexShaderModel* model;
|
||||
|
||||
/// 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
|
||||
std::array<QWidget*, 16>
|
||||
input_data_container; // QWidget containing the QLayout containing each vertex attribute
|
||||
std::array<QLabel*, 16> input_data_mapping; // A QLabel denoting the shader input attribute
|
||||
// which the vertex attribute maps to
|
||||
// TODO: Move these into a single struct
|
||||
|
||||
// A text box for each of the 4 components of up to 16 vertex attributes
|
||||
std::array<QLineEdit*, 4 * 16> input_data;
|
||||
// QWidget containing the QLayout containing each vertex attribute
|
||||
std::array<QWidget*, 16> input_data_container;
|
||||
// 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
|
||||
QLabel* breakpoint_warning;
|
||||
|
@ -11,8 +11,6 @@
|
||||
#endif
|
||||
#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.
|
||||
#define CONCAT2(x, y) DO_CONCAT2(x, y)
|
||||
#define DO_CONCAT2(x, y) x##y
|
||||
|
@ -167,12 +167,16 @@ struct ExHeader_ARM11_SystemLocalCaps {
|
||||
};
|
||||
|
||||
struct ExHeader_ARM11_KernelCaps {
|
||||
u32_le descriptors[28];
|
||||
static constexpr std::size_t NUM_DESCRIPTORS = 28;
|
||||
|
||||
u32_le descriptors[NUM_DESCRIPTORS];
|
||||
u8 reserved[0x10];
|
||||
};
|
||||
|
||||
struct ExHeader_ARM9_AccessControl {
|
||||
u8 descriptors[15];
|
||||
static constexpr std::size_t NUM_DESCRIPTORS = 15;
|
||||
|
||||
u8 descriptors[NUM_DESCRIPTORS];
|
||||
u8 descversion;
|
||||
};
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <cinttypes>
|
||||
#include <map>
|
||||
#include <fmt/format.h>
|
||||
@ -182,7 +183,7 @@ private:
|
||||
const char* name;
|
||||
};
|
||||
|
||||
static const FunctionDef SVC_Table[];
|
||||
static const std::array<FunctionDef, 126> SVC_Table;
|
||||
static const FunctionDef* GetSVCInfo(u32 func_num);
|
||||
};
|
||||
|
||||
@ -1458,7 +1459,7 @@ ResultCode SVC::GetProcessInfo(s64* out, Handle process_handle, u32 type) {
|
||||
return RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
const SVC::FunctionDef SVC::SVC_Table[] = {
|
||||
const std::array<SVC::FunctionDef, 126> SVC::SVC_Table{{
|
||||
{0x00, nullptr, "Unknown"},
|
||||
{0x01, &SVC::Wrap<&SVC::ControlMemory>, "ControlMemory"},
|
||||
{0x02, &SVC::Wrap<&SVC::QueryMemory>, "QueryMemory"},
|
||||
@ -1585,10 +1586,10 @@ const SVC::FunctionDef SVC::SVC_Table[] = {
|
||||
{0x7B, nullptr, "Backdoor"},
|
||||
{0x7C, nullptr, "KernelSetState"},
|
||||
{0x7D, &SVC::Wrap<&SVC::QueryProcessMemory>, "QueryProcessMemory"},
|
||||
};
|
||||
}};
|
||||
|
||||
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);
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -675,7 +675,7 @@ std::u16string Module::GetUsername() {
|
||||
|
||||
// the username string in the block isn't null-terminated,
|
||||
// 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');
|
||||
if (pos != std::u16string::npos)
|
||||
username.erase(pos);
|
||||
|
@ -2,6 +2,7 @@
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <array>
|
||||
#include <cstring>
|
||||
#include "common/archives.h"
|
||||
#include "common/common_funcs.h"
|
||||
@ -29,12 +30,12 @@ void Y2R_U::serialize(Archive& ar, const unsigned int) {
|
||||
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, 0x193, 0x77, 0x2F, 0x1DB, -0x1933, 0xA7C, -0x1D51}}, // ITU_Rec709
|
||||
{{0x12A, 0x198, 0xD0, 0x64, 0x204, -0x1BDE, 0x10F2, -0x229B}}, // ITU_Rec601_Scaling
|
||||
{{0x12A, 0x1CA, 0x88, 0x36, 0x21C, -0x1F04, 0x99C, -0x2421}}, // ITU_Rec709_Scaling
|
||||
};
|
||||
}};
|
||||
|
||||
ResultCode ConversionConfiguration::SetInputLineWidth(u16 width) {
|
||||
if (width == 0 || width > 1024 || width % 8 != 0) {
|
||||
@ -66,8 +67,8 @@ ResultCode ConversionConfiguration::SetInputLines(u16 lines) {
|
||||
|
||||
ResultCode ConversionConfiguration::SetStandardCoefficient(
|
||||
StandardCoefficient standard_coefficient) {
|
||||
std::size_t index = static_cast<std::size_t>(standard_coefficient);
|
||||
if (index >= ARRAY_SIZE(standard_coefficients)) {
|
||||
const auto index = static_cast<std::size_t>(standard_coefficient);
|
||||
if (index >= standard_coefficients.size()) {
|
||||
return ResultCode(ErrorDescription::InvalidEnumValue, ErrorModule::CAM,
|
||||
ErrorSummary::InvalidArgument, ErrorLevel::Usage); // 0xE0E053ED
|
||||
}
|
||||
@ -457,9 +458,9 @@ void Y2R_U::SetStandardCoefficient(Kernel::HLERequestContext& ctx) {
|
||||
|
||||
void Y2R_U::GetStandardCoefficient(Kernel::HLERequestContext& ctx) {
|
||||
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);
|
||||
rb.Push(RESULT_SUCCESS);
|
||||
rb.PushRaw(standard_coefficients[index]);
|
||||
|
@ -134,8 +134,8 @@ ResultStatus AppLoader_NCCH::LoadExec(std::shared_ptr<Kernel::Process>& process)
|
||||
overlay_ncch->exheader_header.arm11_system_local_caps.ideal_processor;
|
||||
|
||||
// Copy data while converting endianness
|
||||
std::array<u32, ARRAY_SIZE(overlay_ncch->exheader_header.arm11_kernel_caps.descriptors)>
|
||||
kernel_caps;
|
||||
using KernelCaps = std::array<u32, ExHeader_ARM11_KernelCaps::NUM_DESCRIPTORS>;
|
||||
KernelCaps kernel_caps;
|
||||
std::copy_n(overlay_ncch->exheader_header.arm11_kernel_caps.descriptors, kernel_caps.size(),
|
||||
begin(kernel_caps));
|
||||
process->ParseKernelCaps(kernel_caps.data(), kernel_caps.size());
|
||||
|
@ -206,7 +206,7 @@ void OpenGLState::Apply() const {
|
||||
}
|
||||
|
||||
// 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) {
|
||||
glActiveTexture(TextureUnits::PicaTexture(i).Enum());
|
||||
glBindTexture(GL_TEXTURE_2D, texture_units[i].texture_2d);
|
||||
|
@ -90,10 +90,11 @@ public:
|
||||
GLenum logic_op; // GL_LOGIC_OP_MODE
|
||||
|
||||
// 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 sampler; // GL_SAMPLER_BINDING
|
||||
} texture_units[3];
|
||||
};
|
||||
std::array<TextureUnit, 3> texture_units;
|
||||
|
||||
struct {
|
||||
GLuint texture_cube; // GL_TEXTURE_BINDING_CUBE_MAP
|
||||
|
Loading…
Reference in New Issue
Block a user