logic: Fixed bundling of referencing types

This commit is contained in:
Eberhard Graether
2016-04-22 00:09:43 +02:00
parent 780530ba3c
commit 1b23a44f20
@@ -701,7 +701,7 @@ bool GraphController::isTypeNodeWithSingleAggregation(
if (count > 1)
{
return false;
matches = false;
}
return matches;
@@ -812,13 +812,26 @@ bool GraphController::isTypeUserNode(const DummyNode& node) const
n->forEachEdge(
[tokenId, &matches](Edge* edge)
{
if (edge->isType(Edge::EDGE_MEMBER | Edge::EDGE_AGGREGATION))
if (edge->isType(Edge::EDGE_MEMBER))
{
return;
}
if (edge->isType(Edge::EDGE_AGGREGATION))
{
TokenComponentAggregation::Direction dir =
edge->getComponent<TokenComponentAggregation>()->getDirection();
if ((dir == TokenComponentAggregation::DIRECTION_FORWARD && edge->getTo()->getId() == tokenId) ||
(dir == TokenComponentAggregation::DIRECTION_BACKWARD && edge->getTo()->getId() != tokenId))
{
matches = false;
}
return;
}
if (!edge->isType(Edge::EDGE_TYPE_USAGE | Edge::EDGE_TYPE_OF | Edge::EDGE_TEMPLATE_ARGUMENT | Edge::EDGE_TYPEDEF_OF) ||
edge->getFrom()->getId() != tokenId)
edge->getTo()->getId() == tokenId)
{
matches = false;
}