-/*
- * We don't use a std::vector here because it would make a copy of the C array.
- */
-class session_list {
- template <typename ContainerType, typename DereferenceReturnType>
- class _iterator : public std::iterator<std::random_access_iterator_tag, std::size_t> {
- public:
- explicit _iterator(ContainerType& list, std::size_t k) : _list(list), _index(k)
- {
- }
-
- _iterator& operator++() noexcept
- {
- ++_index;
- return *this;
- }
-
- _iterator& operator--() noexcept
- {
- --_index;
- return *this;
- }
-
- _iterator& operator++(int) noexcept
- {
- _index++;
- return *this;
- }
-
- _iterator& operator--(int) noexcept
- {
- _index--;
- return *this;
- }
-
- bool operator==(_iterator other) const noexcept
- {
- return _index == other._index;
- }
-
- bool operator!=(_iterator other) const noexcept
- {
- return !(*this == other);
- }
-
- DereferenceReturnType& operator*() const noexcept
- {
- return _list[_index];
- }
-
- private:
- ContainerType& _list;
- std::size_t _index;
- };
-
- using iterator = _iterator<session_list, lttng_session>;
- using const_iterator = _iterator<const session_list, const lttng_session>;