summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bx/include/tinystl/vector.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bx/include/tinystl/vector.h')
-rw-r--r--3rdparty/bx/include/tinystl/vector.h50
1 files changed, 47 insertions, 3 deletions
diff --git a/3rdparty/bx/include/tinystl/vector.h b/3rdparty/bx/include/tinystl/vector.h
index 3a8e28a4551..96fe1b4ef62 100644
--- a/3rdparty/bx/include/tinystl/vector.h
+++ b/3rdparty/bx/include/tinystl/vector.h
@@ -1,5 +1,5 @@
/*-
- * Copyright 2012 Matthew Endsley
+ * Copyright 2012-1015 Matthew Endsley
* All rights reserved
*
* Redistribution and use in source and binary forms, with or without
@@ -56,6 +56,8 @@ namespace tinystl {
T& operator[](size_t idx);
const T& operator[](size_t idx) const;
+ const T& front() const;
+ T& front();
const T& back() const;
T& back();
@@ -67,6 +69,10 @@ namespace tinystl {
void push_back(const T& t);
void pop_back();
+ void emplace_back();
+ template<typename Param>
+ void emplace_back(const Param& param);
+
void shrink_to_fit();
void swap(vector& other);
@@ -81,9 +87,13 @@ namespace tinystl {
const_iterator begin() const;
const_iterator end() const;
+ void insert(iterator where);
void insert(iterator where, const T& value);
void insert(iterator where, const T* first, const T* last);
+ template<typename Param>
+ void emplace(iterator where, const Param& param);
+
iterator erase(iterator where);
iterator erase(iterator first, iterator last);
@@ -109,7 +119,7 @@ namespace tinystl {
template<typename T, typename Alloc>
inline vector<T, Alloc>::vector(size_t _size) {
buffer_init(&m_buffer);
- buffer_resize(&m_buffer, _size, T());
+ buffer_resize(&m_buffer, _size);
}
template<typename T, typename Alloc>
@@ -177,6 +187,16 @@ namespace tinystl {
}
template<typename T, typename Alloc>
+ inline const T& vector<T, Alloc>::front() const {
+ return m_buffer.first[0];
+ }
+
+ template<typename T, typename Alloc>
+ inline T& vector<T, Alloc>::front() {
+ return m_buffer.first[0];
+ }
+
+ template<typename T, typename Alloc>
inline const T& vector<T, Alloc>::back() const {
return m_buffer.last[-1];
}
@@ -188,7 +208,7 @@ namespace tinystl {
template<typename T, typename Alloc>
inline void vector<T, Alloc>::resize(size_t _size) {
- buffer_resize(&m_buffer, _size, T());
+ buffer_resize(&m_buffer, _size);
}
template<typename T, typename Alloc>
@@ -212,6 +232,19 @@ namespace tinystl {
}
template<typename T, typename Alloc>
+ inline void vector<T, Alloc>::emplace_back()
+ {
+ buffer_insert(&m_buffer, m_buffer.last, 1);
+ }
+
+ template<typename T, typename Alloc>
+ template<typename Param>
+ inline void vector<T, Alloc>::emplace_back(const Param& param)
+ {
+ buffer_insert(&m_buffer, m_buffer.last, &param, &param + 1);
+ }
+
+ template<typename T, typename Alloc>
inline void vector<T, Alloc>::pop_back() {
buffer_erase(&m_buffer, m_buffer.last - 1, m_buffer.last);
}
@@ -247,6 +280,11 @@ namespace tinystl {
}
template<typename T, typename Alloc>
+ inline void vector<T, Alloc>::insert(iterator where) {
+ buffer_insert(&m_buffer, where, 1);
+ }
+
+ template<typename T, typename Alloc>
inline void vector<T, Alloc>::insert(iterator where, const T& value) {
buffer_insert(&m_buffer, where, &value, &value + 1);
}
@@ -275,6 +313,12 @@ namespace tinystl {
inline typename vector<T, Alloc>::iterator vector<T, Alloc>::erase_unordered(iterator first, iterator last) {
return buffer_erase_unordered(&m_buffer, first, last);
}
+
+ template<typename T, typename Alloc>
+ template<typename Param>
+ void vector<T, Alloc>::emplace(iterator where, const Param& param) {
+ buffer_insert(&m_buffer, where, &param, &param + 1);
+ }
}
#endif