libgpiod
Loading...
Searching...
No Matches
edge-event-buffer.hpp
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/* SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <brgl@bgdev.pl> */
3
8#ifndef __LIBGPIOD_CXX_EDGE_EVENT_BUFFER_HPP__
9#define __LIBGPIOD_CXX_EDGE_EVENT_BUFFER_HPP__
10
11#if !defined(__LIBGPIOD_GPIOD_CXX_INSIDE__)
12#error "Only gpiod.hpp can be included directly."
13#endif
14
15#include <cstddef>
16#include <iostream>
17#include <memory>
18#include <vector>
19
20namespace gpiod {
21
22class edge_event;
23class line_request;
24
33{
34public:
35
40 using const_iterator = ::std::vector<edge_event>::const_iterator;
41
47 explicit edge_event_buffer(::std::size_t capacity = 64);
48
49 edge_event_buffer(const edge_event_buffer& other) = delete;
50
56
58
60
67
73 const edge_event& get_event(unsigned int index) const;
74
79 ::std::size_t num_events() const;
80
85 ::std::size_t capacity() const noexcept;
86
92 const_iterator begin() const noexcept;
93
99 const_iterator end() const noexcept;
100
101private:
102
103 struct impl;
104
105 ::std::unique_ptr<impl> _m_priv;
106
107 friend line_request;
108};
109
116::std::ostream& operator<<(::std::ostream& out, const edge_event_buffer& buf);
117
118} /* namespace gpiod */
119
120#endif /* __LIBGPIOD_CXX_EDGE_EVENT_BUFFER_HPP__ */
Object into which edge events are read for better performance.
Definition edge-event-buffer.hpp:33
edge_event_buffer & operator=(const edge_event_buffer &other)=delete
::std::size_t num_events() const
Get the number of edge events currently stored in the buffer.
edge_event_buffer & operator=(edge_event_buffer &&other) noexcept
Move assignment operator.
const_iterator begin() const noexcept
Get a constant iterator to the first edge event currently stored in the buffer.
edge_event_buffer(edge_event_buffer &&other) noexcept
Move constructor.
::std::size_t capacity() const noexcept
Maximum capacity of the buffer.
edge_event_buffer(const edge_event_buffer &other)=delete
::std::vector< edge_event >::const_iterator const_iterator
Constant iterator for iterating over edge events stored in the buffer.
Definition edge-event-buffer.hpp:40
const_iterator end() const noexcept
Get a constant iterator to the element after the last edge event in the buffer.
edge_event_buffer(::std::size_t capacity=64)
Constructor. Creates a new edge event buffer with given capacity.
const edge_event & get_event(unsigned int index) const
Get the constant reference to the edge event at given index.
Immutable object containing data about a single edge event.
Definition edge-event.hpp:29
Stores the context of a set of requested GPIO lines.
Definition line-request.hpp:33
Definition chip-info.hpp:18