[ox/std] Specify std::bit_cast in Vector
This commit is contained in:
parent
90b2e7a43c
commit
b61f7a95ad
31
deps/ox/src/ox/std/vector.hpp
vendored
31
deps/ox/src/ox/std/vector.hpp
vendored
@ -32,9 +32,9 @@ struct SmallVector {
|
||||
protected:
|
||||
constexpr void initItems(T **items, std::size_t cap) noexcept {
|
||||
if (cap <= Size) {
|
||||
*items = bit_cast<T*>(m_data);
|
||||
*items = std::bit_cast<T*>(m_data);
|
||||
} else {
|
||||
*items = bit_cast<T*>(new AllocAlias<T>[cap]);
|
||||
*items = std::bit_cast<T*>(new AllocAlias<T>[cap]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,12 +51,12 @@ struct SmallVector {
|
||||
|
||||
constexpr void moveItemsFrom(T **items, SmallVector &src, const std::size_t count, const std::size_t cap) noexcept {
|
||||
if (cap <= Size) {
|
||||
const auto dstItems = bit_cast<T*>(m_data);
|
||||
const auto srcItems = bit_cast<T*>(src.m_data);
|
||||
const auto dstItems = std::bit_cast<T*>(m_data);
|
||||
const auto srcItems = std::bit_cast<T*>(src.m_data);
|
||||
for (auto i = 0u; i < count; ++i) {
|
||||
dstItems[i] = move(srcItems[i]);
|
||||
}
|
||||
*items = bit_cast<T*>(m_data);
|
||||
*items = std::bit_cast<T*>(m_data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ struct SmallVector<T, 0> {
|
||||
SmallVector(SmallVector&&) noexcept = default;
|
||||
protected:
|
||||
constexpr void initItems(T **items, std::size_t cap) noexcept {
|
||||
*items = bit_cast<T*>(new AllocAlias<T>[cap]);
|
||||
*items = std::bit_cast<T*>(new AllocAlias<T>[cap]);
|
||||
}
|
||||
|
||||
[[maybe_unused]]
|
||||
@ -382,7 +382,7 @@ Vector<T, SmallVectorSize>::Vector(Vector &&other) noexcept {
|
||||
template<typename T, std::size_t SmallVectorSize>
|
||||
Vector<T, SmallVectorSize>::~Vector() {
|
||||
clear();
|
||||
this->clearItems(bit_cast<AllocAlias<T>*>(m_items));
|
||||
this->clearItems(std::bit_cast<AllocAlias<T>*>(m_items));
|
||||
m_items = nullptr;
|
||||
}
|
||||
|
||||
@ -403,7 +403,7 @@ template<typename T, std::size_t SmallVectorSize>
|
||||
constexpr Vector<T, SmallVectorSize> &Vector<T, SmallVectorSize>::operator=(const Vector &other) {
|
||||
if (this != &other) {
|
||||
clear();
|
||||
this->clearItems(bit_cast<AllocAlias<T>*>(m_items));
|
||||
this->clearItems(std::bit_cast<AllocAlias<T>*>(m_items));
|
||||
m_items = nullptr;
|
||||
m_size = other.m_size;
|
||||
m_cap = other.m_cap;
|
||||
@ -419,7 +419,7 @@ template<typename T, std::size_t SmallVectorSize>
|
||||
constexpr Vector<T, SmallVectorSize> &Vector<T, SmallVectorSize>::operator=(Vector &&other) noexcept {
|
||||
if (this != &other) {
|
||||
clear();
|
||||
this->clearItems(bit_cast<AllocAlias<T>*>(m_items));
|
||||
this->clearItems(std::bit_cast<AllocAlias<T>*>(m_items));
|
||||
m_size = other.m_size;
|
||||
m_cap = other.m_cap;
|
||||
m_items = other.m_items;
|
||||
@ -445,7 +445,7 @@ template<typename T, std::size_t SmallVectorSize>
|
||||
Result<T&> Vector<T, SmallVectorSize>::front() noexcept {
|
||||
if (!m_size) {
|
||||
AllocAlias<T> v;
|
||||
return {*bit_cast<T*>(&v), OxError(1)};
|
||||
return {*std::bit_cast<T*>(&v), OxError(1)};
|
||||
}
|
||||
return m_items[0];
|
||||
}
|
||||
@ -454,7 +454,7 @@ template<typename T, std::size_t SmallVectorSize>
|
||||
Result<const T&> Vector<T, SmallVectorSize>::front() const noexcept {
|
||||
if (!m_size) {
|
||||
AllocAlias<T> v;
|
||||
return {*bit_cast<T*>(&v), OxError(1)};
|
||||
return {*std::bit_cast<T*>(&v), OxError(1)};
|
||||
}
|
||||
return m_items[0];
|
||||
}
|
||||
@ -463,7 +463,7 @@ template<typename T, std::size_t SmallVectorSize>
|
||||
Result<T&> Vector<T, SmallVectorSize>::back() noexcept {
|
||||
if (!m_size) {
|
||||
AllocAlias<T> v;
|
||||
return {*bit_cast<T*>(&v), OxError(1)};
|
||||
return {*std::bit_cast<T*>(&v), OxError(1)};
|
||||
}
|
||||
return m_items[m_size - 1];
|
||||
}
|
||||
@ -472,7 +472,7 @@ template<typename T, std::size_t SmallVectorSize>
|
||||
Result<const T&> Vector<T, SmallVectorSize>::back() const noexcept {
|
||||
if (!m_size) {
|
||||
AllocAlias<T> v;
|
||||
return {*bit_cast<T*>(&v), OxError(1)};
|
||||
return {*std::bit_cast<T*>(&v), OxError(1)};
|
||||
}
|
||||
return m_items[m_size - 1];
|
||||
}
|
||||
@ -601,7 +601,10 @@ void Vector<T, SmallVectorSize>::expandCap(std::size_t cap) {
|
||||
for (std::size_t i = 0; i < itRange; i++) {
|
||||
new (&m_items[i]) T(move(oldItems[i]));
|
||||
}
|
||||
this->clearItems(bit_cast<AllocAlias<T>*>(oldItems));
|
||||
for (std::size_t i = itRange; i < m_cap; i++) {
|
||||
new (&m_items[i]) T;
|
||||
}
|
||||
this->clearItems(std::bit_cast<AllocAlias<T>*>(oldItems));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user