tmp
This commit is contained in:
parent
a72a3646cd
commit
d5954c4a15
6 changed files with 505 additions and 99 deletions
|
|
@ -1,100 +1,4 @@
|
|||
#pragma once
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#define DEBUG_ASSERT(x) assert(x)
|
||||
#define ASSERT(x) assert(x)
|
||||
|
||||
// #define MEM_STACK_TRACE
|
||||
#define MEM_DEBUG
|
||||
|
||||
namespace tp {
|
||||
using ualni = unsigned long long int;
|
||||
using alni = unsigned long long int;
|
||||
using halnf = float;
|
||||
using uhalni = unsigned long int;
|
||||
using int1 = char;
|
||||
using uint1 = unsigned char;
|
||||
|
||||
enum {
|
||||
ENV_ALNI_SIZE_B = sizeof(ualni)
|
||||
};
|
||||
|
||||
inline int1 memCompare(const void* left, const void* right, uhalni len) {
|
||||
if (!len) return 0;
|
||||
|
||||
ualni alignedLength = len / sizeof(alni);
|
||||
for (ualni idx = 0; idx < alignedLength; idx++) {
|
||||
if (((alni*) left)[idx] == ((alni*) right)[idx]) {
|
||||
continue;
|
||||
}
|
||||
if (((alni*) left)[idx] > ((alni*) right)[idx]) {
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
ualni unalignedLength = len - (alignedLength * sizeof(alni));
|
||||
for (ualni idx = 0; idx < unalignedLength; idx++) {
|
||||
if (((uint1*) left)[len - idx - 1] == ((uint1*) right)[len - idx - 1]) {
|
||||
continue;
|
||||
}
|
||||
if (((uint1*) left)[len - idx - 1] > ((uint1*) right)[len - idx - 1]) {
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline bool memEqual(const void* left, const void* right, uhalni len) { return memCompare(left, right, len) == 0; }
|
||||
|
||||
inline int1 memCompareVal(const void* left, uhalni len, uint1 val) {
|
||||
if (!len) return 0;
|
||||
|
||||
alni valAligned = val;
|
||||
valAligned = (valAligned << 8) | valAligned;
|
||||
valAligned = (valAligned << 16) | valAligned;
|
||||
valAligned = (valAligned << 32) | valAligned;
|
||||
|
||||
ualni alignedLength = len / sizeof(alni);
|
||||
for (ualni idx = 0; idx < alignedLength; idx++) {
|
||||
if (((alni*) left)[idx] == valAligned) {
|
||||
continue;
|
||||
}
|
||||
if (((alni*) left)[idx] > valAligned) {
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
ualni unalignedLength = len - (alignedLength * sizeof(alni));
|
||||
for (ualni idx = 0; idx < unalignedLength; idx++) {
|
||||
if (((uint1*) left)[len - idx - 1] == val) {
|
||||
continue;
|
||||
}
|
||||
if (((uint1*) left)[len - idx - 1] > val) {
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline void memSetVal(void* p, uhalni byteSize, uint1 val) {
|
||||
alni alignedVal = val;
|
||||
alignedVal = (alignedVal << 8) | alignedVal;
|
||||
alignedVal = (alignedVal << 16) | alignedVal;
|
||||
alignedVal = (alignedVal << 32) | alignedVal;
|
||||
|
||||
ualni alignedLen = byteSize / sizeof(alni);
|
||||
for (ualni idx = 0; idx < alignedLen; idx++) {
|
||||
((alni*) p)[idx] = alignedVal;
|
||||
}
|
||||
|
||||
ualni unalignedLen = byteSize - (alignedLen * sizeof(alni));
|
||||
for (ualni idx = 0; idx < unalignedLen; idx++) {
|
||||
((uint1*) p)[byteSize - idx - 1] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "Environment.hpp"
|
||||
#include "Utils.hpp"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue