projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lttng: reuse random_access_container_wrapper for session_list
[lttng-tools.git]
/
src
/
common
/
container-wrapper.hpp
diff --git
a/src/common/container-wrapper.hpp
b/src/common/container-wrapper.hpp
index 09097e9358855977837eca2efd86f689f872ea29..bccb23ddaeaf05efc27c51985ddd5a67004ceaa9 100644
(file)
--- a/
src/common/container-wrapper.hpp
+++ b/
src/common/container-wrapper.hpp
@@
-24,10
+24,10
@@
namespace utils {
*/
template <typename ContainerType, typename ElementType, typename ContainerOperations>
class random_access_container_wrapper {
*/
template <typename ContainerType, typename ElementType, typename ContainerOperations>
class random_access_container_wrapper {
+ template <typename IteratorContainerType, typename IteratorElementType>
class _iterator : public std::iterator<std::random_access_iterator_tag, std::size_t> {
public:
class _iterator : public std::iterator<std::random_access_iterator_tag, std::size_t> {
public:
- explicit _iterator(const random_access_container_wrapper& container,
- std::size_t start_index = 0) :
+ explicit _iterator(IteratorContainerType& container, std::size_t start_index = 0) :
_container(container), _index(start_index)
{
}
_container(container), _index(start_index)
{
}
@@
-68,23
+68,25
@@
class random_access_container_wrapper {
return !(*this == other);
}
return !(*this == other);
}
- typename std::conditional<std::is_pointer<ElementType>::value,
- ElementType,
- ElementType&>::type
+ typename std::conditional<std::is_pointer<
Iterator
ElementType>::value,
+
Iterator
ElementType,
+
Iterator
ElementType&>::type
operator*() const noexcept
{
return _container[_index];
}
private:
operator*() const noexcept
{
return _container[_index];
}
private:
-
const random_access_container_wrapper
& _container;
+
IteratorContainerType
& _container;
std::size_t _index;
};
std::size_t _index;
};
- using iterator = _iterator;
+ using iterator = _iterator<random_access_container_wrapper, ElementType>;
+ using const_iterator = _iterator<const random_access_container_wrapper, const ElementType>;
public:
public:
- explicit random_access_container_wrapper(ContainerType container) : _container{ container }
+ explicit random_access_container_wrapper(ContainerType container) :
+ _container{ std::move(container) }
{
}
{
}
@@
-98,6
+100,16
@@
public:
return iterator(*this, ContainerOperations::size(_container));
}
return iterator(*this, ContainerOperations::size(_container));
}
+ const_iterator begin() const noexcept
+ {
+ return const_iterator(*this);
+ }
+
+ const_iterator end() const noexcept
+ {
+ return const_iterator(*this, ContainerOperations::size(_container));
+ }
+
std::size_t size() const noexcept
{
return ContainerOperations::size(_container);
std::size_t size() const noexcept
{
return ContainerOperations::size(_container);
@@
-119,7
+131,7
@@
public:
return ContainerOperations::get(_container, index);
}
return ContainerOperations::get(_container, index);
}
-pr
ivate
:
+pr
otected
:
ContainerType _container;
};
} /* namespace utils */
ContainerType _container;
};
} /* namespace utils */
This page took
0.025076 seconds
and
4
git commands to generate.