Backported the Vector function to_byte_array and slice
This commit is contained in:
parent
3ba980379d
commit
6f24727916
1 changed files with 35 additions and 0 deletions
|
@ -123,6 +123,41 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector<uint8_t> to_byte_array() const {
|
||||||
|
Vector<uint8_t> ret;
|
||||||
|
ret.resize(size() * sizeof(T));
|
||||||
|
memcpy(ret.ptrw(), ptr(), sizeof(T) * size());
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector<T> slice(int p_begin, int p_end = INT32_MAX) const {
|
||||||
|
Vector<T> result;
|
||||||
|
|
||||||
|
const int s = size();
|
||||||
|
|
||||||
|
int begin = CLAMP(p_begin, -s, s);
|
||||||
|
if (begin < 0) {
|
||||||
|
begin += s;
|
||||||
|
}
|
||||||
|
int end = CLAMP(p_end, -s, s);
|
||||||
|
if (end < 0) {
|
||||||
|
end += s;
|
||||||
|
}
|
||||||
|
|
||||||
|
ERR_FAIL_COND_V(begin > end, result);
|
||||||
|
|
||||||
|
int result_size = end - begin;
|
||||||
|
result.resize(result_size);
|
||||||
|
|
||||||
|
const T *const r = ptr();
|
||||||
|
T *const w = result.ptrw();
|
||||||
|
for (int i = 0; i < result_size; ++i) {
|
||||||
|
w[i] = r[begin + i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ ~Vector() {}
|
_FORCE_INLINE_ ~Vector() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue