[*] Remove redundant constructor from UTF8 iterator
[+] Missing members on AuArray
This commit is contained in:
parent
52f3ca8026
commit
b82d7aa98b
@ -8,8 +8,6 @@
|
||||
***/
|
||||
#pragma once
|
||||
|
||||
|
||||
|
||||
/* read-only, null terminated, utf-8 *byte* view */
|
||||
struct AuRONString
|
||||
{
|
||||
|
@ -23,8 +23,8 @@ struct AuROString
|
||||
using const_reference = const char &;
|
||||
using const_iterator = const char *;
|
||||
using iterator = char *;
|
||||
using const_reverse_iterator = typename std::reverse_iterator<const char *>;
|
||||
using reverse_iterator = typename std::reverse_iterator<char *>;
|
||||
using const_reverse_iterator = AuReverseIterator<const char *>;
|
||||
using reverse_iterator = AuReverseIterator<char *>;
|
||||
using size_type = AuUInt;
|
||||
using difference_type = AuSInt;
|
||||
|
||||
|
@ -8,8 +8,8 @@
|
||||
#pragma once
|
||||
|
||||
template<typename Iterator>
|
||||
constexpr AuReverseIterator<Iterator>::AuReverseIterator(Iterator that)
|
||||
: iterator(AuMove(that))
|
||||
constexpr AuReverseIterator<Iterator>::AuReverseIterator(Iterator that) :
|
||||
iterator(AuMove(that))
|
||||
{ }
|
||||
|
||||
template<typename Iterator>
|
||||
|
@ -30,8 +30,6 @@ struct AuUTF8Iterator
|
||||
|
||||
inline AuUTF8Iterator(const AuROString &in, AuUInt uOffset = AuROString::npos);
|
||||
|
||||
inline AuUTF8Iterator(const AuROString &in);
|
||||
|
||||
cstatic AuUTF8Iterator FromStringView(AuROString in, AuUInt uOffset = AuROString::npos);
|
||||
|
||||
inline constexpr const char *base() const;
|
||||
|
@ -50,7 +50,7 @@ inline AuUTF8Iterator::AuUTF8Iterator(const char *pStart)
|
||||
inline AuUTF8Iterator::AuUTF8Iterator(const AuROString &in, AuUInt uOffset)
|
||||
{
|
||||
this->baseView = in;
|
||||
this->pCurrent = in.Begin();
|
||||
this->pCurrent = in.Begin();
|
||||
|
||||
if (uOffset != AuROString::npos)
|
||||
{
|
||||
@ -66,12 +66,6 @@ inline AuUTF8Iterator::AuUTF8Iterator(const AuROString &in, AuUInt uOffset)
|
||||
}
|
||||
}
|
||||
|
||||
inline AuUTF8Iterator::AuUTF8Iterator(const AuROString &in)
|
||||
{
|
||||
this->baseView = in;
|
||||
this->pCurrent = in.Begin();
|
||||
}
|
||||
|
||||
AuUTF8Iterator AuUTF8Iterator::FromStringView(AuROString in, AuUInt uOffset)
|
||||
{
|
||||
return AuUTF8Iterator(in, uOffset);
|
||||
@ -220,7 +214,7 @@ inline constexpr AuUTF8Iterator &AuUTF8Iterator::operator+=(const difference_typ
|
||||
auto pNext = pBegin + uDiff;
|
||||
auto uNext = uLength - uDiff;
|
||||
|
||||
for (AU_ITERATE_N(i, offset))
|
||||
for (AU_ITERATE_N(i, AuUInt(offset)))
|
||||
{
|
||||
if (auto uCount = AuCodepointsNextLength(AuROString(pNext, uNext)))
|
||||
{
|
||||
@ -263,7 +257,7 @@ inline constexpr AuUTF8Iterator &AuUTF8Iterator::operator-=(const difference_typ
|
||||
return *this;
|
||||
}
|
||||
|
||||
for (AU_ITERATE_N(i, offset))
|
||||
for (AU_ITERATE_N(i, AuUInt(offset)))
|
||||
{
|
||||
auto uOffset = AuCodepointsFindPreviousValidByteOffsetFromByteOffset(this->baseView, uDiff);
|
||||
if (uOffset != AuString::npos)
|
||||
|
@ -19,19 +19,22 @@ struct AuArray
|
||||
|
||||
static const AuUInt kElementCount = Count;
|
||||
|
||||
using value_type = T;
|
||||
using value_type = T;
|
||||
|
||||
using size_type = AuUInt;
|
||||
using difference_type = AuSInt;
|
||||
using size_type = AuUInt;
|
||||
using difference_type = AuSInt;
|
||||
|
||||
using pointer = value_type *;
|
||||
using const_pointer = const value_type *;
|
||||
using pointer = value_type *;
|
||||
using const_pointer = const value_type *;
|
||||
|
||||
using reference = value_type &;
|
||||
using const_reference = const value_type &;
|
||||
using reference = value_type &;
|
||||
using const_reference = const value_type &;
|
||||
|
||||
using iterator = pointer;
|
||||
using const_iterator = const_pointer;
|
||||
using iterator = pointer;
|
||||
using const_iterator = const_pointer;
|
||||
|
||||
using reverse_iterator = AuReverseIterator<iterator>;
|
||||
using const_reverse_iterator = AuReverseIterator<const_iterator>;
|
||||
|
||||
void fill(const T &value)
|
||||
{
|
||||
@ -48,11 +51,16 @@ struct AuArray
|
||||
}
|
||||
}
|
||||
|
||||
void Fill(const T &value)
|
||||
{
|
||||
this->fill(value);
|
||||
}
|
||||
|
||||
void swap(AuArray &other)
|
||||
{
|
||||
AuArray temp;
|
||||
|
||||
if constexpr (std::is_trivially_copyable_v<T>)
|
||||
if constexpr (AuIsTriviallyCopyable_v<T>)
|
||||
{
|
||||
AuMemcpy(temp, this->elements, sizeof(this->elements));
|
||||
AuMemcpy(this->elements, other.elements, sizeof(this->elements));
|
||||
@ -77,6 +85,11 @@ struct AuArray
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Swap(AuArray &other)
|
||||
{
|
||||
this->swap(other);
|
||||
}
|
||||
|
||||
constexpr iterator begin()
|
||||
{
|
||||
@ -88,6 +101,16 @@ struct AuArray
|
||||
return this->elements;
|
||||
}
|
||||
|
||||
constexpr iterator Begin()
|
||||
{
|
||||
return this->elements;
|
||||
}
|
||||
|
||||
constexpr const_iterator Begin() const
|
||||
{
|
||||
return this->elements;
|
||||
}
|
||||
|
||||
constexpr iterator end()
|
||||
{
|
||||
return this->elements + kElementCount;
|
||||
@ -98,6 +121,16 @@ struct AuArray
|
||||
return this->elements + kElementCount;
|
||||
}
|
||||
|
||||
constexpr iterator End()
|
||||
{
|
||||
return this->elements + kElementCount;
|
||||
}
|
||||
|
||||
constexpr const_iterator End() const
|
||||
{
|
||||
return this->elements + kElementCount;
|
||||
}
|
||||
|
||||
constexpr const_iterator cbegin() const
|
||||
{
|
||||
return begin();
|
||||
@ -108,21 +141,101 @@ struct AuArray
|
||||
return end();
|
||||
}
|
||||
|
||||
constexpr const_iterator CBegin() const
|
||||
{
|
||||
return begin();
|
||||
}
|
||||
|
||||
constexpr const_iterator CEnd() const
|
||||
{
|
||||
return end();
|
||||
}
|
||||
|
||||
constexpr const_reverse_iterator rbegin() const
|
||||
{
|
||||
return reverse_iterator(end());
|
||||
}
|
||||
|
||||
constexpr reverse_iterator RBegin()
|
||||
{
|
||||
return reverse_iterator(end());
|
||||
}
|
||||
|
||||
constexpr const_reverse_iterator RBegin() const
|
||||
{
|
||||
return const_reverse_iterator(end());
|
||||
}
|
||||
|
||||
constexpr reverse_iterator rend()
|
||||
{
|
||||
return reverse_iterator(begin());
|
||||
}
|
||||
|
||||
constexpr const_reverse_iterator rend() const
|
||||
{
|
||||
return reverse_iterator(begin());
|
||||
}
|
||||
|
||||
constexpr reverse_iterator REnd()
|
||||
{
|
||||
return const_reverse_iterator(begin());
|
||||
}
|
||||
|
||||
constexpr const_reverse_iterator REnd() const
|
||||
{
|
||||
return const_reverse_iterator(begin());
|
||||
}
|
||||
|
||||
constexpr const_reverse_iterator crbegin() const
|
||||
{
|
||||
return const_reverse_iterator(end());
|
||||
}
|
||||
|
||||
constexpr const_reverse_iterator crend() const
|
||||
{
|
||||
return const_reverse_iterator(begin());
|
||||
}
|
||||
|
||||
constexpr const_reverse_iterator CRBegin() const
|
||||
{
|
||||
return const_reverse_iterator(end());
|
||||
}
|
||||
|
||||
constexpr const_reverse_iterator CREnd() const
|
||||
{
|
||||
return const_reverse_iterator(begin());
|
||||
}
|
||||
|
||||
constexpr size_type size() const
|
||||
{
|
||||
return kElementCount;
|
||||
}
|
||||
|
||||
constexpr size_type Size() const
|
||||
{
|
||||
return kElementCount;
|
||||
}
|
||||
|
||||
constexpr size_type max_size() const
|
||||
{
|
||||
return kElementCount;
|
||||
}
|
||||
|
||||
constexpr size_type MaxSize() const
|
||||
{
|
||||
return kElementCount;
|
||||
}
|
||||
|
||||
constexpr bool empty() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
constexpr bool Empty() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
reference at(size_type pos)
|
||||
{
|
||||
#if defined(AU_CFG_ID_DEBUG)
|
||||
@ -146,6 +259,29 @@ struct AuArray
|
||||
return this->elements[pos];
|
||||
}
|
||||
|
||||
reference At(size_type pos)
|
||||
{
|
||||
#if defined(AU_CFG_ID_DEBUG)
|
||||
if (pos >= kElementCount)
|
||||
{
|
||||
AuMemoryPanic("out of bounds access");
|
||||
}
|
||||
#endif
|
||||
|
||||
return this->elements[pos];
|
||||
}
|
||||
|
||||
constexpr const_reference At(size_type pos) const
|
||||
{
|
||||
#if defined(AU_CFG_ID_DEBUG)
|
||||
if (pos >= kElementCount)
|
||||
{
|
||||
AuMemoryPanic("out of bounds access");
|
||||
}
|
||||
#endif
|
||||
return this->elements[pos];
|
||||
}
|
||||
|
||||
reference operator[](size_type pos)
|
||||
{
|
||||
#if defined(AU_CFG_ID_DEBUG)
|
||||
@ -190,6 +326,26 @@ struct AuArray
|
||||
return this->elements[Count - 1];
|
||||
}
|
||||
|
||||
constexpr reference Front()
|
||||
{
|
||||
return this->elements[0];
|
||||
}
|
||||
|
||||
constexpr const_reference Front() const
|
||||
{
|
||||
return this->elements[0];
|
||||
}
|
||||
|
||||
constexpr reference Back()
|
||||
{
|
||||
return this->elements[Count - 1];
|
||||
}
|
||||
|
||||
constexpr const_reference Back() const
|
||||
{
|
||||
return this->elements[Count - 1];
|
||||
}
|
||||
|
||||
constexpr T *data()
|
||||
{
|
||||
return this->elements;
|
||||
@ -200,12 +356,22 @@ struct AuArray
|
||||
return this->elements;
|
||||
}
|
||||
|
||||
constexpr T *Data()
|
||||
{
|
||||
return this->elements;
|
||||
}
|
||||
|
||||
constexpr const T *Data() const
|
||||
{
|
||||
return this->elements;
|
||||
}
|
||||
|
||||
// oh look, its that feature in that nearly 30 year old programming language intended to replace xerox alto's OOP language for the internet era.
|
||||
AuUInt HashCode() const
|
||||
{
|
||||
AuUInt uRet {};
|
||||
|
||||
if constexpr (std::is_trivially_copyable_v<T>)
|
||||
if constexpr (AuIsTriviallyCopyable_v<T>)
|
||||
{
|
||||
return AuFnv1aRuntime(this->elements, sizeof(this->elements));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user