mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-25 20:22:30 +01:00
dfd50d0185
Partial implementation of std::bit_cast from C++20. Also fix most strict-aliasing rule break warnings (gcc).
43 lines
561 B
C++
43 lines
561 B
C++
#pragma once
|
|
|
|
#include "BEType.h"
|
|
#include <vector>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
|
|
enum class patch_type
|
|
{
|
|
load,
|
|
byte,
|
|
le16,
|
|
le32,
|
|
le64,
|
|
lef32,
|
|
lef64,
|
|
be16,
|
|
be32,
|
|
be64,
|
|
bef32,
|
|
bef64,
|
|
};
|
|
|
|
class patch_engine
|
|
{
|
|
struct patch
|
|
{
|
|
patch_type type;
|
|
u32 offset;
|
|
u64 value;
|
|
};
|
|
|
|
// Database
|
|
std::unordered_map<std::string, std::vector<patch>> m_map;
|
|
|
|
public:
|
|
// Load from file
|
|
void append(const std::string& path);
|
|
|
|
// Apply patch (returns the number of entries applied)
|
|
std::size_t apply(const std::string& name, u8* dst) const;
|
|
};
|