mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-28 13:28:01 +03:00
Fix some -Weffc++ warnings (part 1)
This commit is contained in:
parent
deacf05769
commit
2212a131ef
24 changed files with 162 additions and 56 deletions
|
@ -3,6 +3,11 @@
|
||||||
#include "util/types.hpp"
|
#include "util/types.hpp"
|
||||||
#include "Utilities/StrFmt.h"
|
#include "Utilities/StrFmt.h"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
|
#endif
|
||||||
|
|
||||||
template<typename T, uint N>
|
template<typename T, uint N>
|
||||||
struct bf_base
|
struct bf_base
|
||||||
{
|
{
|
||||||
|
@ -250,6 +255,10 @@ struct ff_t : bf_base<T, N>
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
template<typename T, uint I, uint N>
|
template<typename T, uint I, uint N>
|
||||||
struct fmt_unveil<bf_t<T, I, N>, void>
|
struct fmt_unveil<bf_t<T, I, N>, void>
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,11 +48,11 @@ namespace cfg
|
||||||
// Config tree entry abstract base class
|
// Config tree entry abstract base class
|
||||||
class _base
|
class _base
|
||||||
{
|
{
|
||||||
const type m_type;
|
const type m_type{};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_dynamic = true;
|
bool m_dynamic = true;
|
||||||
const std::string m_name;
|
const std::string m_name{};
|
||||||
|
|
||||||
// Ownerless entry constructor
|
// Ownerless entry constructor
|
||||||
_base(type _type);
|
_base(type _type);
|
||||||
|
@ -65,6 +65,8 @@ namespace cfg
|
||||||
|
|
||||||
_base& operator=(const _base&) = delete;
|
_base& operator=(const _base&) = delete;
|
||||||
|
|
||||||
|
virtual ~_base() = default;
|
||||||
|
|
||||||
// Get type
|
// Get type
|
||||||
type get_type() const { return m_type; }
|
type get_type() const { return m_type; }
|
||||||
|
|
||||||
|
@ -98,7 +100,7 @@ namespace cfg
|
||||||
// Config tree node which contains another nodes
|
// Config tree node which contains another nodes
|
||||||
class node : public _base
|
class node : public _base
|
||||||
{
|
{
|
||||||
std::vector<_base*> m_nodes;
|
std::vector<_base*> m_nodes{};
|
||||||
|
|
||||||
friend class _base;
|
friend class _base;
|
||||||
|
|
||||||
|
@ -443,7 +445,7 @@ namespace cfg
|
||||||
// Simple set entry (TODO: template for various types)
|
// Simple set entry (TODO: template for various types)
|
||||||
class set_entry final : public _base
|
class set_entry final : public _base
|
||||||
{
|
{
|
||||||
std::set<std::string> m_set;
|
std::set<std::string> m_set{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Default value is empty list in current implementation
|
// Default value is empty list in current implementation
|
||||||
|
@ -479,7 +481,7 @@ namespace cfg
|
||||||
|
|
||||||
class log_entry final : public _base
|
class log_entry final : public _base
|
||||||
{
|
{
|
||||||
std::map<std::string, logs::level> m_map;
|
std::map<std::string, logs::level> m_map{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
log_entry(node* owner, const std::string& name)
|
log_entry(node* owner, const std::string& name)
|
||||||
|
|
|
@ -210,9 +210,9 @@ namespace fs
|
||||||
|
|
||||||
class device_manager final
|
class device_manager final
|
||||||
{
|
{
|
||||||
mutable shared_mutex m_mutex;
|
mutable shared_mutex m_mutex{};
|
||||||
|
|
||||||
std::unordered_map<std::string, std::shared_ptr<device_base>> m_map;
|
std::unordered_map<std::string, std::shared_ptr<device_base>> m_map{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
std::shared_ptr<device_base> get_device(const std::string& path);
|
std::shared_ptr<device_base> get_device(const std::string& path);
|
||||||
|
@ -1339,6 +1339,10 @@ fs::file::file(const void* ptr, usz size)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memory_stream(const memory_stream&) = delete;
|
||||||
|
|
||||||
|
memory_stream& operator=(const memory_stream&) = delete;
|
||||||
|
|
||||||
bool trunc(u64) override
|
bool trunc(u64) override
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -1509,6 +1513,10 @@ bool fs::dir::open(const std::string& path)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unix_dir(const unix_dir&) = delete;
|
||||||
|
|
||||||
|
unix_dir& operator=(const unix_dir&) = delete;
|
||||||
|
|
||||||
~unix_dir() override
|
~unix_dir() override
|
||||||
{
|
{
|
||||||
::closedir(m_dd);
|
::closedir(m_dd);
|
||||||
|
@ -1843,8 +1851,8 @@ fs::file fs::make_gather(std::vector<fs::file> files)
|
||||||
{
|
{
|
||||||
u64 pos = 0;
|
u64 pos = 0;
|
||||||
u64 end = 0;
|
u64 end = 0;
|
||||||
std::vector<file> files;
|
std::vector<file> files{};
|
||||||
std::map<u64, u64> ends; // Fragment End Offset -> Index
|
std::map<u64, u64> ends{}; // Fragment End Offset -> Index
|
||||||
|
|
||||||
gather_stream(std::vector<fs::file> arg)
|
gather_stream(std::vector<fs::file> arg)
|
||||||
: files(std::move(arg))
|
: files(std::move(arg))
|
||||||
|
|
|
@ -95,7 +95,7 @@ namespace fs
|
||||||
// Directory entry (TODO)
|
// Directory entry (TODO)
|
||||||
struct dir_entry : stat_t
|
struct dir_entry : stat_t
|
||||||
{
|
{
|
||||||
std::string name;
|
std::string name{};
|
||||||
|
|
||||||
dir_entry()
|
dir_entry()
|
||||||
: stat_t{}
|
: stat_t{}
|
||||||
|
@ -198,7 +198,7 @@ namespace fs
|
||||||
|
|
||||||
class file final
|
class file final
|
||||||
{
|
{
|
||||||
std::unique_ptr<file_base> m_file;
|
std::unique_ptr<file_base> m_file{};
|
||||||
|
|
||||||
bool strict_read_check(u64 size, u64 type_size) const;
|
bool strict_read_check(u64 size, u64 type_size) const;
|
||||||
|
|
||||||
|
@ -501,7 +501,7 @@ namespace fs
|
||||||
|
|
||||||
class dir final
|
class dir final
|
||||||
{
|
{
|
||||||
std::unique_ptr<dir_base> m_dir;
|
std::unique_ptr<dir_base> m_dir{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
dir() = default;
|
dir() = default;
|
||||||
|
@ -562,7 +562,7 @@ namespace fs
|
||||||
class iterator
|
class iterator
|
||||||
{
|
{
|
||||||
const dir* m_parent;
|
const dir* m_parent;
|
||||||
dir_entry m_entry;
|
dir_entry m_entry{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum class mode
|
enum class mode
|
||||||
|
@ -590,6 +590,14 @@ namespace fs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iterator(const iterator&) = default;
|
||||||
|
|
||||||
|
iterator(iterator&&) = default;
|
||||||
|
|
||||||
|
iterator& operator=(const iterator&) = default;
|
||||||
|
|
||||||
|
iterator& operator=(iterator&&) = default;
|
||||||
|
|
||||||
dir_entry& operator *()
|
dir_entry& operator *()
|
||||||
{
|
{
|
||||||
return m_entry;
|
return m_entry;
|
||||||
|
@ -627,7 +635,7 @@ namespace fs
|
||||||
// Unique pending file creation destined to be renamed to the destination file
|
// Unique pending file creation destined to be renamed to the destination file
|
||||||
struct pending_file
|
struct pending_file
|
||||||
{
|
{
|
||||||
fs::file file;
|
fs::file file{};
|
||||||
|
|
||||||
// This is meant to modify files atomically, overwriting is likely
|
// This is meant to modify files atomically, overwriting is likely
|
||||||
bool commit(bool overwrite = true);
|
bool commit(bool overwrite = true);
|
||||||
|
@ -636,8 +644,8 @@ namespace fs
|
||||||
~pending_file();
|
~pending_file();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_path; // Pending file path
|
std::string m_path{}; // Pending file path
|
||||||
std::string m_dest; // Destination file path
|
std::string m_dest{}; // Destination file path
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get real path for comparisons (TODO: investigate std::filesystem::path::compare implementation)
|
// Get real path for comparisons (TODO: investigate std::filesystem::path::compare implementation)
|
||||||
|
|
|
@ -284,6 +284,7 @@ asmjit::Runtime& asmjit::get_global_runtime()
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||||
#pragma GCC diagnostic ignored "-Wredundant-decls"
|
#pragma GCC diagnostic ignored "-Wredundant-decls"
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
#endif
|
#endif
|
||||||
#include "llvm/Support/TargetSelect.h"
|
#include "llvm/Support/TargetSelect.h"
|
||||||
#include "llvm/Support/FormattedStream.h"
|
#include "llvm/Support/FormattedStream.h"
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||||
#pragma GCC diagnostic ignored "-Wredundant-decls"
|
#pragma GCC diagnostic ignored "-Wredundant-decls"
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
#ifndef __clang__
|
#ifndef __clang__
|
||||||
#pragma GCC diagnostic ignored "-Wduplicated-branches"
|
#pragma GCC diagnostic ignored "-Wduplicated-branches"
|
||||||
#endif
|
#endif
|
||||||
|
@ -186,6 +187,7 @@ inline FT build_function_asm(F&& builder)
|
||||||
#pragma GCC diagnostic ignored "-Wsuggest-override"
|
#pragma GCC diagnostic ignored "-Wsuggest-override"
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
#pragma clang diagnostic ignored "-Winconsistent-missing-override"
|
#pragma clang diagnostic ignored "-Winconsistent-missing-override"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -49,12 +49,12 @@ public:
|
||||||
{
|
{
|
||||||
patch_type type = patch_type::load;
|
patch_type type = patch_type::load;
|
||||||
u32 offset = 0;
|
u32 offset = 0;
|
||||||
std::string original_value; // Used for import consistency (avoid rounding etc.)
|
std::string original_value{}; // Used for import consistency (avoid rounding etc.)
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
u64 long_value;
|
u64 long_value;
|
||||||
f64 double_value;
|
f64 double_value;
|
||||||
} value { 0 };
|
} value{0};
|
||||||
};
|
};
|
||||||
|
|
||||||
using patch_app_versions = std::unordered_map<std::string /*app_version*/, bool /*enabled*/>;
|
using patch_app_versions = std::unordered_map<std::string /*app_version*/, bool /*enabled*/>;
|
||||||
|
@ -64,25 +64,25 @@ public:
|
||||||
struct patch_info
|
struct patch_info
|
||||||
{
|
{
|
||||||
// Patch information
|
// Patch information
|
||||||
std::vector<patch_data> data_list;
|
std::vector<patch_data> data_list{};
|
||||||
patch_titles titles;
|
patch_titles titles{};
|
||||||
std::string description;
|
std::string description{};
|
||||||
std::string patch_version;
|
std::string patch_version{};
|
||||||
std::string patch_group;
|
std::string patch_group{};
|
||||||
std::string author;
|
std::string author{};
|
||||||
std::string notes;
|
std::string notes{};
|
||||||
std::string source_path;
|
std::string source_path{};
|
||||||
|
|
||||||
// Redundant information for accessibility (see patch_container)
|
// Redundant information for accessibility (see patch_container)
|
||||||
std::string hash;
|
std::string hash{};
|
||||||
std::string version;
|
std::string version{};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct patch_container
|
struct patch_container
|
||||||
{
|
{
|
||||||
std::unordered_map<std::string /*description*/, patch_info> patch_info_map;
|
std::unordered_map<std::string /*description*/, patch_info> patch_info_map{};
|
||||||
std::string hash;
|
std::string hash{};
|
||||||
std::string version;
|
std::string version{};
|
||||||
};
|
};
|
||||||
|
|
||||||
using patch_map = std::unordered_map<std::string /*hash*/, patch_container>;
|
using patch_map = std::unordered_map<std::string /*hash*/, patch_container>;
|
||||||
|
@ -140,8 +140,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Database
|
// Database
|
||||||
patch_map m_map;
|
patch_map m_map{};
|
||||||
|
|
||||||
// Only one patch per patch group can be applied
|
// Only one patch per patch group can be applied
|
||||||
std::set<std::string> m_applied_groups;
|
std::set<std::string> m_applied_groups{};
|
||||||
};
|
};
|
||||||
|
|
|
@ -315,10 +315,6 @@ public:
|
||||||
auto fetch_or(const bs_t&) = delete;
|
auto fetch_or(const bs_t&) = delete;
|
||||||
auto or_fetch(const bs_t&) = delete;
|
auto or_fetch(const bs_t&) = delete;
|
||||||
auto operator |=(const bs_t&) = delete;
|
auto operator |=(const bs_t&) = delete;
|
||||||
auto operator ++() = delete;
|
|
||||||
auto operator --() = delete;
|
|
||||||
auto operator ++(int) = delete;
|
|
||||||
auto operator --(int) = delete;
|
|
||||||
|
|
||||||
bs_t operator +(bs_t rhs) const
|
bs_t operator +(bs_t rhs) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,9 +18,9 @@ class cpu_thread;
|
||||||
class CPUDisAsm
|
class CPUDisAsm
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
const cpu_disasm_mode m_mode;
|
const cpu_disasm_mode m_mode{};
|
||||||
const std::add_pointer_t<const u8> m_offset;
|
const std::add_pointer_t<const u8> m_offset{};
|
||||||
const std::add_pointer_t<const cpu_thread> m_cpu;
|
const std::add_pointer_t<const cpu_thread> m_cpu{};
|
||||||
u32 m_op = 0;
|
u32 m_op = 0;
|
||||||
|
|
||||||
void Write(const std::string& value)
|
void Write(const std::string& value)
|
||||||
|
@ -62,8 +62,8 @@ protected:
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
std::string last_opcode;
|
std::string last_opcode{};
|
||||||
u32 dump_pc;
|
u32 dump_pc{};
|
||||||
|
|
||||||
template <typename T, std::enable_if_t<std::is_base_of_v<CPUDisAsm, T>, int> = 0>
|
template <typename T, std::enable_if_t<std::is_base_of_v<CPUDisAsm, T>, int> = 0>
|
||||||
static T copy_and_change_mode(const T& dis, cpu_disasm_mode mode)
|
static T copy_and_change_mode(const T& dis, cpu_disasm_mode mode)
|
||||||
|
@ -79,7 +79,13 @@ protected:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual u32 DisAsmBranchTarget(s32 /*imm*/) { return 0; };
|
CPUDisAsm(const CPUDisAsm&) = delete;
|
||||||
|
|
||||||
|
CPUDisAsm& operator=(const CPUDisAsm&) = delete;
|
||||||
|
|
||||||
|
virtual ~CPUDisAsm() = default;
|
||||||
|
|
||||||
|
virtual u32 DisAsmBranchTarget(s32 /*imm*/);
|
||||||
|
|
||||||
// TODO: Add builtin fmt helpper for best performance
|
// TODO: Add builtin fmt helpper for best performance
|
||||||
template <typename T, std::enable_if_t<std::is_integral_v<T>, int> = 0>
|
template <typename T, std::enable_if_t<std::is_integral_v<T>, int> = 0>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "CPUThread.h"
|
#include "CPUThread.h"
|
||||||
|
#include "CPUDisAsm.h"
|
||||||
|
|
||||||
#include "Emu/System.h"
|
#include "Emu/System.h"
|
||||||
#include "Emu/system_config.h"
|
#include "Emu/system_config.h"
|
||||||
|
@ -1185,3 +1186,9 @@ void cpu_thread::flush_profilers() noexcept
|
||||||
g_fxo->get<cpu_profiler>().registered.push(0);
|
g_fxo->get<cpu_profiler>().registered.push(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 CPUDisAsm::DisAsmBranchTarget(s32 /*imm*/)
|
||||||
|
{
|
||||||
|
// Unused
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -46,6 +46,9 @@ protected:
|
||||||
cpu_thread(u32 id);
|
cpu_thread(u32 id);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
cpu_thread(const cpu_thread&) = delete;
|
||||||
|
cpu_thread& operator=(const cpu_thread&) = delete;
|
||||||
|
|
||||||
virtual ~cpu_thread();
|
virtual ~cpu_thread();
|
||||||
void operator()();
|
void operator()();
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
#endif
|
#endif
|
||||||
#include "llvm/IR/LLVMContext.h"
|
#include "llvm/IR/LLVMContext.h"
|
||||||
#include "llvm/IR/IRBuilder.h"
|
#include "llvm/IR/IRBuilder.h"
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
#endif
|
#endif
|
||||||
#include "llvm/Support/FormattedStream.h"
|
#include "llvm/Support/FormattedStream.h"
|
||||||
#include "llvm/Support/MemoryBuffer.h"
|
#include "llvm/Support/MemoryBuffer.h"
|
||||||
|
|
|
@ -129,6 +129,9 @@ public:
|
||||||
|
|
||||||
ppu_thread(const ppu_thread_params&, std::string_view name, u32 prio, int detached = 0);
|
ppu_thread(const ppu_thread_params&, std::string_view name, u32 prio, int detached = 0);
|
||||||
|
|
||||||
|
ppu_thread(const ppu_thread&) = delete;
|
||||||
|
ppu_thread& operator=(const ppu_thread&) = delete;
|
||||||
|
|
||||||
u64 gpr[32] = {}; // General-Purpose Registers
|
u64 gpr[32] = {}; // General-Purpose Registers
|
||||||
f64 fpr[32] = {}; // Floating Point Registers
|
f64 fpr[32] = {}; // Floating Point Registers
|
||||||
v128 vr[32] = {}; // Vector Registers
|
v128 vr[32] = {}; // Vector Registers
|
||||||
|
|
|
@ -3228,6 +3228,7 @@ void spu_recompiler_base::dump(const spu_program& result, std::string& out)
|
||||||
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
||||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
#endif
|
#endif
|
||||||
#include "llvm/ADT/Triple.h"
|
#include "llvm/ADT/Triple.h"
|
||||||
#include "llvm/IR/LegacyPassManager.h"
|
#include "llvm/IR/LegacyPassManager.h"
|
||||||
|
|
|
@ -642,6 +642,9 @@ public:
|
||||||
|
|
||||||
spu_thread(lv2_spu_group* group, u32 index, std::string_view name, u32 lv2_id, bool is_isolated = false, u32 option = 0);
|
spu_thread(lv2_spu_group* group, u32 index, std::string_view name, u32 lv2_id, bool is_isolated = false, u32 option = 0);
|
||||||
|
|
||||||
|
spu_thread(const spu_thread&) = delete;
|
||||||
|
spu_thread& operator=(const spu_thread&) = delete;
|
||||||
|
|
||||||
u32 pc = 0;
|
u32 pc = 0;
|
||||||
u32 dbg_step_pc = 0;
|
u32 dbg_step_pc = 0;
|
||||||
|
|
||||||
|
|
|
@ -172,6 +172,8 @@ struct lv2_fs_object
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual ~lv2_fs_object() = default;
|
||||||
|
|
||||||
static lv2_fs_mount_point* get_mp(std::string_view filename);
|
static lv2_fs_mount_point* get_mp(std::string_view filename);
|
||||||
|
|
||||||
static std::array<char, 0x420> get_name(std::string_view filename)
|
static std::array<char, 0x420> get_name(std::string_view filename)
|
||||||
|
|
|
@ -893,11 +893,10 @@ namespace rsx
|
||||||
class atomic_bitmask_t
|
class atomic_bitmask_t
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
atomic_t<bitmask_type> m_data;
|
atomic_t<bitmask_type> m_data{0};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
atomic_bitmask_t() { m_data.store(0); }
|
atomic_bitmask_t() = default;
|
||||||
~atomic_bitmask_t() = default;
|
|
||||||
|
|
||||||
T load() const
|
T load() const
|
||||||
{
|
{
|
||||||
|
@ -988,7 +987,7 @@ namespace rsx
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
simple_array(const simple_array<Ty>& other)
|
simple_array(const simple_array& other)
|
||||||
{
|
{
|
||||||
_capacity = other._capacity;
|
_capacity = other._capacity;
|
||||||
_size = other._size;
|
_size = other._size;
|
||||||
|
@ -998,11 +997,27 @@ namespace rsx
|
||||||
std::memcpy(_data, other._data, size_bytes);
|
std::memcpy(_data, other._data, size_bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
simple_array(simple_array<Ty>&& other) noexcept
|
simple_array(simple_array&& other) noexcept
|
||||||
{
|
{
|
||||||
swap(other);
|
swap(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
simple_array& operator=(const simple_array& other)
|
||||||
|
{
|
||||||
|
if (&other != this)
|
||||||
|
{
|
||||||
|
simple_array{other}.swap(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
simple_array& operator=(simple_array&& other) noexcept
|
||||||
|
{
|
||||||
|
swap(other);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
~simple_array()
|
~simple_array()
|
||||||
{
|
{
|
||||||
if (_data)
|
if (_data)
|
||||||
|
|
|
@ -17,18 +17,18 @@
|
||||||
struct vfs_directory
|
struct vfs_directory
|
||||||
{
|
{
|
||||||
// Real path (empty if root or not exists)
|
// Real path (empty if root or not exists)
|
||||||
std::string path;
|
std::string path{};
|
||||||
|
|
||||||
// Virtual subdirectories (vector because only vector allows incomplete types)
|
// Virtual subdirectories (vector because only vector allows incomplete types)
|
||||||
std::vector<std::pair<std::string, vfs_directory>> dirs;
|
std::vector<std::pair<std::string, vfs_directory>> dirs{};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct vfs_manager
|
struct vfs_manager
|
||||||
{
|
{
|
||||||
shared_mutex mutex;
|
shared_mutex mutex{};
|
||||||
|
|
||||||
// VFS root
|
// VFS root
|
||||||
vfs_directory root;
|
vfs_directory root{};
|
||||||
};
|
};
|
||||||
|
|
||||||
bool vfs::mount(std::string_view vpath, std::string_view path)
|
bool vfs::mount(std::string_view vpath, std::string_view path)
|
||||||
|
|
|
@ -783,7 +783,7 @@ namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
// Advance: linearly to prevent self-collisions, but always switch between two big 2^16 chunks
|
// Advance: linearly to prevent self-collisions, but always switch between two big 2^16 chunks
|
||||||
void operator++(int) noexcept
|
void advance() noexcept
|
||||||
{
|
{
|
||||||
if (id >= 0x10000)
|
if (id >= 0x10000)
|
||||||
{
|
{
|
||||||
|
@ -840,7 +840,7 @@ atomic_t<u16>* root_info::slot_alloc(uptr ptr) noexcept
|
||||||
|
|
||||||
u32 limit = 0;
|
u32 limit = 0;
|
||||||
|
|
||||||
for (hash_engine _this(ptr);; _this++)
|
for (hash_engine _this(ptr);; _this.advance())
|
||||||
{
|
{
|
||||||
slot = _this->bits.atomic_op([&](slot_allocator& bits) -> atomic_t<u16>*
|
slot = _this->bits.atomic_op([&](slot_allocator& bits) -> atomic_t<u16>*
|
||||||
{
|
{
|
||||||
|
@ -919,7 +919,7 @@ void root_info::slot_free(uptr iptr, atomic_t<u16>* slot, u32 tls_slot) noexcept
|
||||||
cond_free(cond_id, tls_slot);
|
cond_free(cond_id, tls_slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (hash_engine curr(iptr);; curr++)
|
for (hash_engine curr(iptr);; curr.advance())
|
||||||
{
|
{
|
||||||
// Reset reference counter and allocation bit in every slot
|
// Reset reference counter and allocation bit in every slot
|
||||||
curr->bits.atomic_op([&](slot_allocator& bits)
|
curr->bits.atomic_op([&](slot_allocator& bits)
|
||||||
|
@ -945,7 +945,7 @@ FORCE_INLINE auto root_info::slot_search(uptr iptr, u128 mask, F func) noexcept
|
||||||
u32 index = 0;
|
u32 index = 0;
|
||||||
u32 total = 0;
|
u32 total = 0;
|
||||||
|
|
||||||
for (hash_engine _this(iptr);; _this++)
|
for (hash_engine _this(iptr);; _this.advance())
|
||||||
{
|
{
|
||||||
const auto bits = _this->bits.load();
|
const auto bits = _this->bits.load();
|
||||||
|
|
||||||
|
|
|
@ -1083,6 +1083,11 @@ struct atomic_storage<T, 16> : atomic_storage<T, 0>
|
||||||
// TODO
|
// TODO
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
|
#endif
|
||||||
|
|
||||||
// Atomic type with lock-free and standard layout guarantees (and appropriate limitations)
|
// Atomic type with lock-free and standard layout guarantees (and appropriate limitations)
|
||||||
template <typename T, usz Align = sizeof(T)>
|
template <typename T, usz Align = sizeof(T)>
|
||||||
class atomic_t
|
class atomic_t
|
||||||
|
@ -1710,3 +1715,7 @@ namespace atomic_wait
|
||||||
template <usz Align>
|
template <usz Align>
|
||||||
constexpr u128 default_mask<atomic_t<bool, Align>> = 1;
|
constexpr u128 default_mask<atomic_t<bool, Align>> = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
#include "Emu/RSX/RSXThread.h"
|
#include "Emu/RSX/RSXThread.h"
|
||||||
#include "Emu/RSX/Capture/rsx_capture.h"
|
#include "Emu/RSX/Capture/rsx_capture.h"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "cereal/archives/binary.hpp"
|
#include "cereal/archives/binary.hpp"
|
||||||
#include <cereal/types/vector.hpp>
|
#include <cereal/types/vector.hpp>
|
||||||
#include <cereal/types/array.hpp>
|
#include <cereal/types/array.hpp>
|
||||||
|
|
|
@ -12,6 +12,22 @@ namespace utils
|
||||||
dynamic_library() = default;
|
dynamic_library() = default;
|
||||||
dynamic_library(const std::string& path);
|
dynamic_library(const std::string& path);
|
||||||
|
|
||||||
|
dynamic_library(const dynamic_library&) = delete;
|
||||||
|
|
||||||
|
dynamic_library(dynamic_library&& other)
|
||||||
|
: m_handle(other.m_handle)
|
||||||
|
{
|
||||||
|
other.m_handle = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
dynamic_library& operator=(const dynamic_library&) = delete;
|
||||||
|
|
||||||
|
dynamic_library& operator=(dynamic_library&& other)
|
||||||
|
{
|
||||||
|
std::swap(m_handle, other.m_handle);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
~dynamic_library();
|
~dynamic_library();
|
||||||
|
|
||||||
bool load(const std::string& path);
|
bool load(const std::string& path);
|
||||||
|
|
|
@ -2,6 +2,11 @@
|
||||||
|
|
||||||
#include "util/types.hpp"
|
#include "util/types.hpp"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace stx
|
namespace stx
|
||||||
{
|
{
|
||||||
template <typename T, usz Align = alignof(T), usz Size = sizeof(T)>
|
template <typename T, usz Align = alignof(T), usz Size = sizeof(T)>
|
||||||
|
@ -467,3 +472,7 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue