/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
App/util/SpanningEdge.cpp
72 строки
2 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */ #include "stdafx.h" #include "Util/SpanningEdge.h" #include "Util/SpanningNode.h" namespace RBX { const SpanningNode* SpanningEdge::getConstParentSpanningNode() const { const SpanningNode* child = getConstChildSpanningNode(); return otherConstNode(child); } const SpanningNode* SpanningEdge::getConstChildSpanningNode() const { for (int i = 0; i < 2; ++i) { const SpanningNode* n = getConstNode(i); if (n && (n->getConstEdgeToParent() == this)) { return n; } } RBXASSERT(0); return NULL; } SpanningNode* SpanningEdge::getChildSpanningNode() { return const_cast<SpanningNode*>(getConstChildSpanningNode()); } SpanningNode* SpanningEdge::getParentSpanningNode() { return const_cast<SpanningNode*>(getConstParentSpanningNode()); } void SpanningEdge::removeFromSpanningTree() { SpanningNode* child = getChildSpanningNode(); RBXASSERT(child); child->setIndexedTreeParent(NULL); child->setEdgeToParent(NULL); } void SpanningEdge::addToSpanningTree(SpanningNode* newParent) { SpanningNode* child = this->otherNode(newParent); RBXASSERT(this->otherNode(child) == newParent); RBXASSERT(child); RBXASSERT(!child->getParent()); RBXASSERT(!child->getEdgeToParent()); child->setEdgeToParent(this); // do first so sort will work child->setIndexedTreeParent(newParent); } bool SpanningEdge::inSpanningTree() const { for (int i = 0; i < 2; ++i) { const SpanningNode* n = getConstNode(i); if (n && (n->getConstEdgeToParent() == this)) { return true; } } return false; } } // namespace