First pass idLib conversion from hex rays4.

This commit is contained in:
Justin Marshall
2026-08-08 13:54:26 -07:00
parent 3d01d735ce
commit 09a4cb91c3
120 changed files with 17718 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
#include "mathlib.h"
#include <cstdint>
int InterleaveBits(const int x, const int y) {
const std::uint32_t xBits = static_cast<std::uint32_t>(x);
const std::uint32_t yBits = static_cast<std::uint32_t>(y);
std::uint32_t interleaved = 0;
for (int bit = 0; bit < 16; ++bit) {
interleaved |= ((xBits >> bit) & 1u) << (bit * 2);
interleaved |= ((yBits >> bit) & 1u) << (bit * 2 + 1);
}
return static_cast<int>(interleaved);
}
void DeInterleaveBits(const int bits, int& x, int& y) {
const std::uint32_t interleaved = static_cast<std::uint32_t>(bits);
std::uint32_t xBits = 0;
std::uint32_t yBits = 0;
for (int bit = 0; bit < 16; ++bit) {
xBits |= ((interleaved >> (bit * 2)) & 1u) << bit;
yBits |= ((interleaved >> (bit * 2 + 1)) & 1u) << bit;
}
x = static_cast<int>(xBits);
y = static_cast<int>(yBits);
}