1 // Copyright (C) 2018 Intel Corporation
3 // SPDX-License-Identifier: Apache-2.0
8 #include "util/assert.hpp"
16 Edge::Edge(Node* prev, Node* next)
18 ASSERT(nullptr != prev);
19 ASSERT(nullptr != next);
31 resetPrevNode(nullptr);
32 resetNextNode(nullptr);
35 void Edge::resetPrevNode(Node* newNode)
37 if (newNode == m_prevNode)
42 if (nullptr != m_prevNode)
44 m_prevNode->removeOutEdge(this);
47 if (nullptr != newNode)
49 newNode->addOutEdge(this);
54 void Edge::resetNextNode(Node* newNode)
56 if (newNode == m_nextNode)
61 if (nullptr != m_nextNode)
63 m_nextNode->removeInEdge(this);
66 if (nullptr != newNode)
68 newNode->addInEdge(this);
73 Graph* Edge::getParent() const
75 if (nullptr != m_prevNode)
77 return m_prevNode->getParent();
79 if (nullptr != m_nextNode)
81 return m_nextNode->getParent();
86 NodeHandle Edge::srcNode() const
88 ASSERT_STRONG(nullptr != m_prevNode);
89 return Graph::HandleMapper()(m_prevNode);
92 NodeHandle Edge::dstNode() const
94 ASSERT_STRONG(nullptr != m_nextNode);
95 return Graph::HandleMapper()(m_nextNode);