DamBreak++ Wave Simulator 0.3
DamBreak++ Simulation Framework
Loading...
Searching...
No Matches
Testvs19_ListSectionsFlow.hpp
Go to the documentation of this file.
1#pragma once
2
3// C++ include
4#include <vector>
5// SfxBase19 include
6#include "include/Sfx_IListBase.hpp"
7
8// forward declaration
9namespace Testvs19 {
10 template<typename T> class ListSectionsIterator;
11}
12
13namespace Testvs19
14{
19 template<typename T>
20 class ListSectionsFlow : public Sfx::IListBase<T>
21 {
22 public:
26 using listIter = std::vector<T>::iterator;
27 using clistIter = std::vector<T>::const_iterator;
28 using size_type = std::vector<T>::size_type;
29
30 using value_type = std::iter_value_t<listIter>;
35 listIter begin() { return m_listPhysObj.begin(); }
36 listIter end() { return m_listPhysObj.end(); }
37 clistIter cbegin() const { return m_listPhysObj.cbegin(); }
38 clistIter cend() const { return m_listPhysObj.cend(); }
39
40 public:
44 void flush() override final { m_listPhysObj.clear(); }
49 void putInFront(const T aData) override final {}
54 void append(const T aData) override final { m_listPhysObj.push_back(aData); }
58 void delFromFront() override final {}
63 const T& getFirst() const override final { return m_listPhysObj.front(); }
64 T& getFirst() override final { return m_listPhysObj.front(); }
69 const T& getLast() const override final { return m_listPhysObj.back(); }
70 T& getLast() override final { return m_listPhysObj.back(); }
75 [[nodiscard]] bool isEmpty() const override final { return m_listPhysObj.empty(); }
80 size_type size() const { return m_listPhysObj.size();}
85 void reserve(size_t aCapacity) noexcept { m_listPhysObj.reserve(aCapacity); }
89 void shrinkToFit() noexcept { m_listPhysObj.shrink_to_fit(); }
94 bool isAllSectionsUnitWidth() const noexcept { return true; }
99 bool isAllSectionsFrictionLess() const noexcept { return true; }
104 bool isAllSectionsFlatBottom() const noexcept { return true; }
108 friend class ListSectionsIterator<T>;
109 private:
110 std::vector<T> m_listPhysObj;
111 };
112}// End of namespace
List of physical objects under study.
Definition Testvs19_ListSectionsFlow.hpp:21
std::vector< T > m_listPhysObj
Definition Testvs19_ListSectionsFlow.hpp:110
clistIter cend() const
Definition Testvs19_ListSectionsFlow.hpp:38
bool isAllSectionsFrictionLess() const noexcept
check if all sections are frictionless
Definition Testvs19_ListSectionsFlow.hpp:99
bool isAllSectionsUnitWidth() const noexcept
check if all sections are unit width
Definition Testvs19_ListSectionsFlow.hpp:94
void flush() override final
empty the list
Definition Testvs19_ListSectionsFlow.hpp:44
void delFromFront() override final
delete elemenmt starting beginning
Definition Testvs19_ListSectionsFlow.hpp:58
T & getFirst() override final
Definition Testvs19_ListSectionsFlow.hpp:64
std::vector< T >::const_iterator clistIter
Definition Testvs19_ListSectionsFlow.hpp:27
clistIter cbegin() const
Definition Testvs19_ListSectionsFlow.hpp:37
T & getLast() override final
Definition Testvs19_ListSectionsFlow.hpp:70
std::vector< T >::iterator listIter
Aliases.
Definition Testvs19_ListSectionsFlow.hpp:26
size_type size() const
number of elements in the list
Definition Testvs19_ListSectionsFlow.hpp:80
void reserve(size_t aCapacity) noexcept
allocate memory to store data
Definition Testvs19_ListSectionsFlow.hpp:85
const T & getLast() const override final
return last element in the list
Definition Testvs19_ListSectionsFlow.hpp:69
bool isEmpty() const override final
check if list conatains element
Definition Testvs19_ListSectionsFlow.hpp:75
void shrinkToFit() noexcept
shrink list to fit size
Definition Testvs19_ListSectionsFlow.hpp:89
void putInFront(const T aData) override final
add element in the fron
Definition Testvs19_ListSectionsFlow.hpp:49
void append(const T aData) override final
add an element at the end
Definition Testvs19_ListSectionsFlow.hpp:54
listIter begin()
helpers to iterate (begin to end)
Definition Testvs19_ListSectionsFlow.hpp:35
bool isAllSectionsFlatBottom() const noexcept
check if all sections have flat bottom
Definition Testvs19_ListSectionsFlow.hpp:104
std::iter_value_t< listIter > value_type
Definition Testvs19_ListSectionsFlow.hpp:30
std::vector< T >::size_type size_type
Definition Testvs19_ListSectionsFlow.hpp:28
const T & getFirst() const override final
return first element in the list
Definition Testvs19_ListSectionsFlow.hpp:63
listIter end()
Definition Testvs19_ListSectionsFlow.hpp:36
List iterator on list of sections flow.
Definition Testvs19_ListSectionsIterator.hpp:20
Definition Testvs19_BaseRhsPhysicsAlgorithm.cpp:19