mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
make code compact
This commit is contained in:
parent
8aa0177932
commit
32b41af8dd
@ -204,7 +204,6 @@ namespace pkpy
|
|||||||
template<typename T, std::size_t N>
|
template<typename T, std::size_t N>
|
||||||
class small_vector
|
class small_vector
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
alignas(T) char m_buffer[sizeof(T) * N];
|
alignas(T) char m_buffer[sizeof(T) * N];
|
||||||
T* m_begin;
|
T* m_begin;
|
||||||
T* m_end;
|
T* m_end;
|
||||||
@ -224,65 +223,32 @@ namespace pkpy
|
|||||||
using const_reverse_iterator = std::reverse_iterator<const_iterator>;
|
using const_reverse_iterator = std::reverse_iterator<const_iterator>;
|
||||||
|
|
||||||
[[nodiscard]] bool is_small() const { return m_begin == reinterpret_cast<const T*>(m_buffer); }
|
[[nodiscard]] bool is_small() const { return m_begin == reinterpret_cast<const T*>(m_buffer); }
|
||||||
|
|
||||||
[[nodiscard]] size_type size() const { return m_end - m_begin; }
|
[[nodiscard]] size_type size() const { return m_end - m_begin; }
|
||||||
|
|
||||||
[[nodiscard]] size_type capacity() const { return m_max - m_begin; }
|
[[nodiscard]] size_type capacity() const { return m_max - m_begin; }
|
||||||
|
|
||||||
[[nodiscard]] bool empty() const { return m_begin == m_end; }
|
[[nodiscard]] bool empty() const { return m_begin == m_end; }
|
||||||
|
|
||||||
pointer data() { return m_begin; }
|
pointer data() { return m_begin; }
|
||||||
|
|
||||||
const_pointer data() const { return m_begin; }
|
const_pointer data() const { return m_begin; }
|
||||||
|
|
||||||
reference operator[](size_type index) { return data()[index]; }
|
reference operator[](size_type index) { return data()[index]; }
|
||||||
|
|
||||||
const_reference operator[](size_type index) const { return data()[index]; }
|
const_reference operator[](size_type index) const { return data()[index]; }
|
||||||
|
|
||||||
iterator begin() { return m_begin; }
|
iterator begin() { return m_begin; }
|
||||||
|
|
||||||
const_iterator begin() const { return m_begin; }
|
const_iterator begin() const { return m_begin; }
|
||||||
|
|
||||||
const_iterator cbegin() const { return m_begin; }
|
|
||||||
|
|
||||||
iterator end() { return m_end; }
|
iterator end() { return m_end; }
|
||||||
|
|
||||||
const_iterator end() const { return m_end; }
|
const_iterator end() const { return m_end; }
|
||||||
|
|
||||||
const_iterator cend() const { return m_end; }
|
|
||||||
|
|
||||||
reference front() { return *begin(); }
|
reference front() { return *begin(); }
|
||||||
|
|
||||||
const_reference front() const { return *begin(); }
|
const_reference front() const { return *begin(); }
|
||||||
|
|
||||||
reference back() { return *(end() - 1); }
|
reference back() { return *(end() - 1); }
|
||||||
|
|
||||||
const_reference back() const { return *(end() - 1); }
|
const_reference back() const { return *(end() - 1); }
|
||||||
|
|
||||||
reverse_iterator rbegin() { return reverse_iterator(end()); }
|
reverse_iterator rbegin() { return reverse_iterator(end()); }
|
||||||
|
|
||||||
const_reverse_iterator rbegin() const
|
const_reverse_iterator rbegin() const
|
||||||
{
|
{
|
||||||
return const_reverse_iterator(end());
|
return const_reverse_iterator(end());
|
||||||
}
|
}
|
||||||
|
|
||||||
const_reverse_iterator crbegin() const
|
|
||||||
{
|
|
||||||
return const_reverse_iterator(end());
|
|
||||||
}
|
|
||||||
|
|
||||||
reverse_iterator rend() { return reverse_iterator(begin()); }
|
reverse_iterator rend() { return reverse_iterator(begin()); }
|
||||||
|
|
||||||
const_reverse_iterator rend() const
|
const_reverse_iterator rend() const
|
||||||
{
|
{
|
||||||
return const_reverse_iterator(begin());
|
return const_reverse_iterator(begin());
|
||||||
}
|
}
|
||||||
|
|
||||||
const_reverse_iterator crend() const
|
|
||||||
{
|
|
||||||
return const_reverse_iterator(begin());
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void uninitialized_copy_n(const void* src, size_type n, void* dest)
|
static void uninitialized_copy_n(const void* src, size_type n, void* dest)
|
||||||
{
|
{
|
||||||
@ -371,10 +337,7 @@ namespace pkpy
|
|||||||
~small_vector()
|
~small_vector()
|
||||||
{
|
{
|
||||||
std::destroy(m_begin, m_end);
|
std::destroy(m_begin, m_end);
|
||||||
if (!is_small())
|
if (!is_small()) std::free(m_begin);
|
||||||
{
|
|
||||||
std::free(m_begin);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename... Args>
|
template<typename... Args>
|
||||||
@ -412,7 +375,6 @@ namespace pkpy
|
|||||||
}
|
}
|
||||||
|
|
||||||
void push_back(const T& value) { emplace_back(value); }
|
void push_back(const T& value) { emplace_back(value); }
|
||||||
|
|
||||||
void push_back(T&& value) { emplace_back(std::move(value)); }
|
void push_back(T&& value) { emplace_back(std::move(value)); }
|
||||||
|
|
||||||
void pop_back()
|
void pop_back()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user