Files
Sourcetrail/src/lib/data/graph/token_component/TokenComponentBundledEdges.cpp
T
Eberhard GrätherandGitHub 3950da7999 src: Rename aggregation edge to bundled edges (#1051)
The term aggregation is misleading. Bundled edges is a better definition for this type of edge.

closes #962
2020-06-29 19:41:12 +02:00

81 lines
1.6 KiB
C++

#include "TokenComponentBundledEdges.h"
TokenComponentBundledEdges::Direction TokenComponentBundledEdges::opposite(Direction direction)
{
if (direction == DIRECTION_FORWARD)
{
return DIRECTION_BACKWARD;
}
else if (direction == DIRECTION_BACKWARD)
{
return DIRECTION_FORWARD;
}
return direction;
}
TokenComponentBundledEdges::TokenComponentBundledEdges(): m_direction(DIRECTION_INVALID) {}
TokenComponentBundledEdges::~TokenComponentBundledEdges() {}
std::shared_ptr<TokenComponent> TokenComponentBundledEdges::copy() const
{
return std::make_shared<TokenComponentBundledEdges>(*this);
}
int TokenComponentBundledEdges::getBundledEdgesCount() const
{
return static_cast<int>(m_ids.size());
}
std::set<Id> TokenComponentBundledEdges::getBundledEdgesIds() const
{
std::set<Id> ids;
for (const std::pair<Id, Direction>& p: m_ids)
{
ids.insert(p.first);
}
return ids;
}
void TokenComponentBundledEdges::addBundledEdgesId(Id id, bool forward)
{
m_ids.emplace(id, forward ? DIRECTION_FORWARD : DIRECTION_BACKWARD);
m_direction = DIRECTION_INVALID;
}
void TokenComponentBundledEdges::removeBundledEdgesId(Id id)
{
m_ids.erase(id);
m_direction = DIRECTION_INVALID;
}
TokenComponentBundledEdges::Direction TokenComponentBundledEdges::getDirection()
{
if (m_direction != DIRECTION_INVALID)
{
return m_direction;
}
m_direction = DIRECTION_NONE;
for (const std::pair<Id, Direction>& p: m_ids)
{
if (m_direction == DIRECTION_NONE)
{
m_direction = p.second;
}
else if (m_direction != p.second)
{
m_direction = DIRECTION_NONE;
break;
}
}
return m_direction;
}