libgpiod
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 
20 namespace gpiod {
21 
22 class edge_event;
23 class line_request;
24 
32 class edge_event_buffer final
33 {
34 public:
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 
55  edge_event_buffer(edge_event_buffer&& other) noexcept;
56 
58 
59  edge_event_buffer& operator=(const edge_event_buffer& other) = delete;
60 
66  edge_event_buffer& operator=(edge_event_buffer&& other) noexcept;
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 
101 private:
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__ */
Definition: chip-info.hpp:18
edge_event_buffer(::std::size_t capacity=64)
Constructor. Creates a new edge event buffer with given capacity.
const_iterator begin() const noexcept
Get a constant iterator to the first edge event currently stored in the buffer.
::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
Immutable object containing data about a single edge event.
Definition: edge-event.hpp:28
Stores the context of a set of requested GPIO lines.
Definition: line-request.hpp:32
::std::size_t num_events() const
Get the number of edge events currently stored in the buffer.
::std::size_t capacity() const noexcept
Maximum capacity of the buffer.
Object into which edge events are read for better performance.
Definition: edge-event-buffer.hpp:32
const edge_event & get_event(unsigned int index) const
Get the constant reference to the edge event at given index.
const_iterator end() const noexcept
Get a constant iterator to the element after the last edge event in the buffer.