slang-netlist  0.9.0
Loading...
Searching...
No Matches
NetlistPath.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <algorithm>
6#include <vector>
7
8namespace slang::netlist {
9
12public:
13 using NodeListType = std::vector<NetlistNode const *>;
14 using iterator = typename NodeListType::iterator;
15 using const_iterator = typename NodeListType::const_iterator;
16
17 NetlistPath() = default;
18
19 NetlistPath(NodeListType nodes) : nodes(std::move(nodes)) {};
20
21 auto begin() const -> const_iterator { return nodes.begin(); }
22 auto end() const -> const_iterator { return nodes.end(); }
23 auto begin() -> iterator { return nodes.begin(); }
24 auto end() -> iterator { return nodes.end(); }
25
26 auto operator[](size_t index) const -> NetlistNode const * {
27 return nodes[index];
28 }
29
30 void add(NetlistNode &node) { nodes.push_back(&node); }
31
32 void add(NetlistNode *node) { nodes.push_back(node); }
33
34 void reverse() { std::ranges::reverse(nodes); }
35
36 auto size() const -> size_t { return nodes.size(); }
37
38 auto empty() const -> bool { return nodes.empty(); }
39 void clear() { nodes.clear(); }
40
41 auto front() const -> NetlistNode const * { return nodes.front(); }
42
43 auto back() const -> NetlistNode const * { return nodes.back(); }
44
45private:
46 NodeListType nodes;
47};
48
49} // namespace slang::netlist
Definition NetlistNode.hpp:33
typename NodeListType::iterator iterator
Definition NetlistPath.hpp:14
std::vector< NetlistNode const * > NodeListType
Definition NetlistPath.hpp:13
auto back() const -> NetlistNode const *
Definition NetlistPath.hpp:43
typename NodeListType::const_iterator const_iterator
Definition NetlistPath.hpp:15
void reverse()
Definition NetlistPath.hpp:34
auto empty() const -> bool
Definition NetlistPath.hpp:38
void clear()
Definition NetlistPath.hpp:39
auto size() const -> size_t
Definition NetlistPath.hpp:36
auto end() -> iterator
Definition NetlistPath.hpp:24
auto operator[](size_t index) const -> NetlistNode const *
Definition NetlistPath.hpp:26
auto begin() const -> const_iterator
Definition NetlistPath.hpp:21
auto end() const -> const_iterator
Definition NetlistPath.hpp:22
void add(NetlistNode &node)
Definition NetlistPath.hpp:30
void add(NetlistNode *node)
Definition NetlistPath.hpp:32
NetlistPath(NodeListType nodes)
Definition NetlistPath.hpp:19
auto front() const -> NetlistNode const *
Definition NetlistPath.hpp:41
auto begin() -> iterator
Definition NetlistPath.hpp:23
Definition Utilities.hpp:16