Skip to content
Snippets Groups Projects
Commit c2842fce authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

OwningVector: sort fcts; VectorWC ...

parent 33bb3ac6
No related branches found
No related tags found
1 merge request!2384all "set" classes now inherit VectorWC
......@@ -46,33 +46,14 @@ public:
OwningVector& operator=(OwningVector&& other) = default;
void reserve(size_t n) { m_v.reserve(n); }
void clear()
{
for (T* e : *this)
delete e;
m_v.clear();
}
size_t size() const { return m_v.size(); }
bool empty() const { return m_v.empty(); }
const T* operator[](int i) const { return m_v.operator[](i); }
T* operator[](int i) { return m_v.operator[](i); }
const T* at(int i) const { return m_v.at(i); }
T* at(int i) { return m_v.at(i); }
const T* front() const { return m_v.front(); }
T* front() { return m_v.front(); }
const T* back() const { return m_v.back(); }
T* back() { return m_v.back(); }
int index_of(const T* t) const
void push_back(T* e) { m_v.push_back(e); }
void insert_at(size_t i, T* e) { m_v.insert(m_v.begin() + i, e); }
void replace_at(size_t i, T* e)
{
for (size_t i = 0; i < m_v.size(); i++)
if (m_v[i] == t)
return int(i);
return -1;
ASSERT(i < m_v.size());
delete m_v[i];
m_v[i] = e;
}
void delete_element(T* e)
{
if (!e)
......@@ -92,7 +73,7 @@ public:
m_v.erase(m_v.begin() + i);
return;
}
T* release_at(size_t i) // TODO rm
T* release_at(size_t i)
{
if (i >= m_v.size())
return nullptr;
......@@ -100,15 +81,6 @@ public:
m_v.erase(m_v.begin() + i);
return result;
}
void push_back(T* e) { m_v.push_back(e); }
void insert_at(size_t i, T* e) { m_v.insert(m_v.begin() + i, e); }
void replace_at(size_t i, T* e)
{
ASSERT(i < m_v.size());
delete m_v[i];
m_v[i] = e;
}
T* release_back()
{
if (m_v.empty())
......@@ -117,7 +89,6 @@ public:
m_v.pop_back();
return result;
}
T* release_front()
{
if (m_v.empty())
......@@ -126,7 +97,6 @@ public:
m_v.erase(m_v.begin());
return result;
}
void swap(size_t fromIndex, size_t toIndex)
{
if (fromIndex > toIndex)
......@@ -135,6 +105,31 @@ public:
std::rotate(m_v.begin() + fromIndex, m_v.begin() + fromIndex + 1,
m_v.begin() + toIndex + 1);
}
void clear()
{
for (T* e : *this)
delete e;
m_v.clear();
}
const T* operator[](int i) const { return m_v.operator[](i); }
T* operator[](int i) { return m_v.operator[](i); }
const T* at(int i) const { return m_v.at(i); }
T* at(int i) { return m_v.at(i); }
const T* front() const { return m_v.front(); }
T* front() { return m_v.front(); }
const T* back() const { return m_v.back(); }
T* back() { return m_v.back(); }
size_t size() const { return m_v.size(); }
bool empty() const { return m_v.empty(); }
int index_of(const T* t) const
{
for (size_t i = 0; i < m_v.size(); i++)
if (m_v[i] == t)
return int(i);
return -1;
}
const std::vector<T*>& shared() const { return m_v; }
std::vector<T*> cloned_vector() const
......
......@@ -24,6 +24,16 @@
template <class T> class VectorWC : public OwningVector<T> {
public:
void setCurrentIndex(size_t i)
{
ASSERT(i < OwningVector<T>::size() || i == -1);
m_current_index = i;
}
size_t currentIndex() const { return m_current_index; }
private:
size_t m_current_index = -1;
};
#endif // BORNAGAIN_BASE_TYPES_VECTORWC_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment