Squashed 'external/ircolib/' changes from bb3f168e1..d611a21e5

d611a21e5 imma stop using size_t

git-subtree-dir: external/ircolib
git-subtree-split: d611a21e50fcfdfb5f34a7f79c4c690c50d85c5f
This commit is contained in:
2026-05-19 08:51:06 +02:00
parent a8099e3aea
commit f070e484cd
3 changed files with 22 additions and 24 deletions
+4 -5
View File
@@ -4,9 +4,8 @@
#include <vector> #include <vector>
#include <filesystem> #include <filesystem>
namespace fs = std::filesystem;
namespace ircolib { namespace ircolib {
namespace fs = std::filesystem;
static inline std::vector<u8> read_file_binary(const std::string &path) { static inline std::vector<u8> read_file_binary(const std::string &path) {
std::ifstream file(path, std::ios::binary); std::ifstream file(path, std::ios::binary);
return {std::istreambuf_iterator{file}, {}}; return {std::istreambuf_iterator{file}, {}};
@@ -17,19 +16,19 @@ static inline void write_file_binary(const std::vector<u8> &data, const std::str
std::copy(data.begin(), data.end(), std::ostreambuf_iterator{file}); std::copy(data.begin(), data.end(), std::ostreambuf_iterator{file});
} }
static inline void write_file_binary(const u8 *data, const size_t size, const std::string &path) { static inline void write_file_binary(const u8 *data, const u32 size, const std::string &path) {
FILE *out = fopen(path.c_str(), "wb"); FILE *out = fopen(path.c_str(), "wb");
fwrite(data, size, 1, out); fwrite(data, size, 1, out);
fclose(out); fclose(out);
} }
template <size_t Size> template <u32 Size>
static inline void write_file_binary(const std::array<u8, Size> &data, const std::string &path) { static inline void write_file_binary(const std::array<u8, Size> &data, const std::string &path) {
std::ofstream file(path, std::ios::binary); std::ofstream file(path, std::ios::binary);
std::copy(data.begin(), data.end(), std::ostreambuf_iterator{file}); std::copy(data.begin(), data.end(), std::ostreambuf_iterator{file});
} }
static inline size_t next_pow2(size_t num) { static inline u32 next_pow2(u32 num) {
// Taken from "Bit Twiddling Hacks" by Sean Anderson: // Taken from "Bit Twiddling Hacks" by Sean Anderson:
// https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 // https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
--num; --num;
+13 -13
View File
@@ -35,14 +35,14 @@ template <typename T>
static constexpr inline T read_access(const u8 *data, const u32 index); static constexpr inline T read_access(const u8 *data, const u32 index);
template <typename T> template <typename T>
static constexpr inline T read_access(const std::vector<u8> &data, const u32 index); static constexpr inline T read_access(const std::vector<u8> &data, const u32 index);
template <typename T, size_t Size> template <typename T, u32 Size>
static constexpr inline T read_access(const std::array<u8, Size> &data, const u32 index); static constexpr inline T read_access(const std::array<u8, Size> &data, const u32 index);
template <typename T> template <typename T>
static constexpr inline void write_access(u8 *data, const u32 index, const T val); static constexpr inline void write_access(u8 *data, const u32 index, const T val);
template <typename T> template <typename T>
static constexpr inline void write_access(std::vector<u8> &data, const u32 index, const T val); static constexpr inline void write_access(std::vector<u8> &data, const u32 index, const T val);
template <typename T, size_t Size> template <typename T, u32 Size>
static constexpr inline void write_access(std::array<u8, Size> &data, const u32 index, const T val); static constexpr inline void write_access(std::array<u8, Size> &data, const u32 index, const T val);
template <> template <>
@@ -70,19 +70,19 @@ static constexpr inline T read_access(const std::vector<u8> &data, const u32 ind
return *reinterpret_cast<const T *>(&data[index]); return *reinterpret_cast<const T *>(&data[index]);
} }
template <size_t Size> template <u32 Size>
constexpr inline u64 read_access(const std::array<u8, Size> &data, const u32 index) { constexpr inline u64 read_access(const std::array<u8, Size> &data, const u32 index) {
u32 hi = *reinterpret_cast<const u32 *>(&data[index + 0]); u32 hi = *reinterpret_cast<const u32 *>(&data[index + 0]);
u32 lo = *reinterpret_cast<const u32 *>(&data[index + 4]); u32 lo = *reinterpret_cast<const u32 *>(&data[index + 4]);
return static_cast<u64>(hi) << 32 | static_cast<u64>(lo); return static_cast<u64>(hi) << 32 | static_cast<u64>(lo);
} }
template <typename T, size_t Size> template <typename T, u32 Size>
static constexpr inline T read_access(const std::array<u8, Size> &data, const u32 index) { static constexpr inline T read_access(const std::array<u8, Size> &data, const u32 index) {
return *reinterpret_cast<const T *>(&data[index]); return *reinterpret_cast<const T *>(&data[index]);
} }
template <size_t Size> template <u32 Size>
constexpr inline void write_access(std::array<u8, Size> &data, const u32 index, const u64 val) { constexpr inline void write_access(std::array<u8, Size> &data, const u32 index, const u64 val) {
const u32 hi = val >> 32; const u32 hi = val >> 32;
const u32 lo = val; const u32 lo = val;
@@ -91,7 +91,7 @@ constexpr inline void write_access(std::array<u8, Size> &data, const u32 index,
*reinterpret_cast<u32 *>(&data[index + 4]) = lo; *reinterpret_cast<u32 *>(&data[index + 4]) = lo;
} }
template <typename T, size_t Size> template <typename T, u32 Size>
static constexpr inline void write_access(std::array<u8, Size> &data, const u32 index, const T val) { static constexpr inline void write_access(std::array<u8, Size> &data, const u32 index, const T val) {
*reinterpret_cast<T *>(&data[index]) = val; *reinterpret_cast<T *>(&data[index]) = val;
} }
@@ -126,34 +126,34 @@ static constexpr inline void write_access(u8 *data, const u32 index, const T val
template <typename T> template <typename T>
static constexpr inline void swap_buffer(std::vector<u8> &data) { static constexpr inline void swap_buffer(std::vector<u8> &data) {
for (size_t i = 0; i < data.size(); i += sizeof(T)) { for (u32 i = 0; i < data.size(); i += sizeof(T)) {
const T original = *reinterpret_cast<T *>(&data[i]); const T original = *reinterpret_cast<T *>(&data[i]);
*reinterpret_cast<T *>(&data[i]) = std::byteswap(original); *reinterpret_cast<T *>(&data[i]) = std::byteswap(original);
} }
} }
template <typename T, size_t Size> template <typename T, u32 Size>
static constexpr inline void swap_buffer(std::array<u8, Size> &data) { static constexpr inline void swap_buffer(std::array<u8, Size> &data) {
for (size_t i = 0; i < data.size(); i += sizeof(T)) { for (u32 i = 0; i < data.size(); i += sizeof(T)) {
const T original = *reinterpret_cast<T *>(&data[i]); const T original = *reinterpret_cast<T *>(&data[i]);
*reinterpret_cast<T *>(&data[i]) = std::byteswap(original); *reinterpret_cast<T *>(&data[i]) = std::byteswap(original);
} }
} }
template <typename T> template <typename T>
static constexpr inline void swap_buffer(u8 *data, size_t size) { static constexpr inline void swap_buffer(u8 *data, u32 size) {
for (size_t i = 0; i < size; i += sizeof(T)) { for (u32 i = 0; i < size; i += sizeof(T)) {
const T original = *reinterpret_cast<T *>(&data[i]); const T original = *reinterpret_cast<T *>(&data[i]);
*reinterpret_cast<T *>(&data[i]) = std::byteswap(original); *reinterpret_cast<T *>(&data[i]) = std::byteswap(original);
} }
} }
#ifdef _WIN32 #ifdef _WIN32
inline void *aligned_alloc(const size_t alignment, const size_t size) { return _aligned_malloc(size, alignment); } inline void *aligned_alloc(const u32 alignment, const u32 size) { return _aligned_malloc(size, alignment); }
inline void aligned_free(void *ptr) { _aligned_free(ptr); } inline void aligned_free(void *ptr) { _aligned_free(ptr); }
#else #else
inline void *aligned_alloc(const size_t alignment, const size_t size) { return std::aligned_alloc(alignment, size); } inline void *aligned_alloc(const u32 alignment, const u32 size) { return std::aligned_alloc(alignment, size); }
inline void aligned_free(void *ptr) { std::free(ptr); } inline void aligned_free(void *ptr) { std::free(ptr); }
#endif #endif
+5 -6
View File
@@ -1,6 +1,5 @@
#pragma once #pragma once
#include <cstdint> #include <cstdint>
#include <cstddef>
namespace ircolib { namespace ircolib {
using u8 = uint8_t; using u8 = uint8_t;
@@ -12,28 +11,28 @@ using s16 = int16_t;
using s32 = int32_t; using s32 = int32_t;
using s64 = int64_t; using s64 = int64_t;
template <typename T, std::size_t bit> template <typename T, u32 bit>
static constexpr bool is_bit_set(const T &val) { static constexpr bool is_bit_set(const T &val) {
return val & (1 << bit); return val & (1 << bit);
} }
template <typename T, std::size_t bit> template <typename T, u32 bit>
static constexpr void set_bit(T &val) { static constexpr void set_bit(T &val) {
val |= 1 << bit; val |= 1 << bit;
} }
template <typename T> template <typename T>
inline bool is_bit_set(const T &val, const std::size_t &bit) { inline bool is_bit_set(const T &val, const u32 &bit) {
return val & (1 << bit); return val & (1 << bit);
} }
template <typename T> template <typename T>
inline void set_bit(T &val, const std::size_t &bit) { inline void set_bit(T &val, const u32 &bit) {
val |= 1 << bit; val |= 1 << bit;
} }
template <typename T> template <typename T>
inline void clear_bit(T &val, const std::size_t &bit) { inline void clear_bit(T &val, const u32 &bit) {
val &= ~(1 << bit); val &= ~(1 << bit);
} }
} // namespace ircolib } // namespace ircolib