triskele/include/ArrayTree/Leader.tpp
Git Merciol f687310939 modifié : CMakeLists.txt
modifié :         CMakeListsOTB.txt
	modifié :         LICENSE
	modifié :         MakefileNoOTB
	modifié :         Readme.html
	modifié :         Readme.txt
	modifié :         include/Appli/Option.hpp
	modifié :         include/Appli/Selected.hpp
	modifié :         include/Appli/Selected.tpp
	modifié :         include/ArrayTree/ArrayTreeBuilder.hpp
	modifié :         include/ArrayTree/ArrayTreeBuilder.tpp
	modifié :         include/ArrayTree/Border.hpp
	modifié :         include/ArrayTree/Border.tpp
	modifié :         include/ArrayTree/GraphWalker.hpp
	modifié :         include/ArrayTree/GraphWalker.tpp
	modifié :         include/ArrayTree/Leader.hpp
	modifié :         include/ArrayTree/Leader.tpp
	modifié :         include/ArrayTree/Weight.hpp
	modifié :         include/ArrayTree/Weight.tpp
	modifié :         include/ArrayTree/triskeleArrayTreeBase.hpp
	modifié :         include/ArrayTree/triskeleArrayTreeBase.tpp
	modifié :         include/ArrayTree/triskeleSort.hpp
	modifié :         include/ArrayTree/triskeleSort.tpp
	modifié :         include/AttributeProfiles.hpp
	modifié :         include/AttributeProfiles.tpp
	modifié :         include/Attributes/AreaAttributes.hpp
	modifié :         include/Attributes/AreaAttributes.tpp
	modifié :         include/Attributes/AverageAttributes.hpp
	modifié :         include/Attributes/AverageAttributes.tpp
	modifié :         include/Attributes/MoIAttributes.hpp
	modifié :         include/Attributes/MoIAttributes.tpp
	modifié :         include/Attributes/SDAttributes.hpp
	modifié :         include/Attributes/SDAttributes.tpp
	modifié :         include/Attributes/WeightAttributes.hpp
	modifié :         include/Attributes/WeightAttributes.tpp
	modifié :         include/Attributes/XYAttributes.hpp
	modifié :         include/Attributes/XYAttributes.tpp
	modifié :         include/CompAttribute.hpp
	modifié :         include/CompAttribute.tpp
	modifié :         include/IImage.hpp
	modifié :         include/IImage.tpp
	modifié :         include/QuadTree/QuadTreeBuilder.hpp
	modifié :         include/Tree.hpp
	modifié :         include/Tree.tpp
	modifié :         include/TreeBuilder.hpp
	modifié :         include/TreeBuilder.tpp
	modifié :         include/TreeStats.hpp
	modifié :         include/TreeStats.tpp
	modifié :         include/XMLTree/XMLTreeBuilder.hpp
	modifié :         include/triskeleBase.hpp
	modifié :         include/triskeleBase.tpp
	modifié :         include/triskeleDealThreads.hpp
	modifié :         include/triskeleDealThreads.tpp
	modifié :         include/triskeleDebug.hpp
	modifié :         include/triskeleGdalGetType.hpp
	modifié :         otb-module.cmake
	modifié :         src/Appli/Option.cpp
	modifié :         src/Appli/Selected.cpp
	modifié :         src/ArrayTree/triskeleArrayTreeBase.cpp
	modifié :         src/CMakeLists.txt
	modifié :         src/IImage.cpp
	modifié :         src/PerfArrayTreeBuilder.cpp
	modifié :         src/QuadTree/QuadTreeBuilder.cpp
	modifié :         src/TestArrayTreeBuilder.cpp
	modifié :         src/Tree.cpp
	modifié :         src/TreeStats.cpp
	modifié :         src/XMLTree/XMLTreeBuilder.cpp
	modifié :         src/apGenerator.cpp
	modifié :         src/triskeleBase.cpp
	modifié :         src/triskeleDebug.cpp
2018-04-02 19:25:37 +02:00

77 lines
1.6 KiB
C++

#ifndef _OTB_TRISKELE_ARRAY_TREE_LEADER_TPP
#define _OTB_TRISKELE_ARRAY_TREE_LEADER_TPP
// ========================================
inline
Leader::Leader (DimImg vertexCount)
: size (vertexCount),
leaders (size, DimImg_MAX) {
}
inline
Leader::~Leader () {
free ();
}
// ========================================
inline void
Leader::book (DimImg vertexCount) {
SMART_DEF_LOG ("Leader::book", "vertexCount:" << vertexCount);
size = vertexCount;
leaders.assign (size, DimImg_MAX);
}
// ---------------------------------------
inline void
Leader::free () {
SMART_DEF_LOG ("Leader::free", "");
leaders = vector<DimImg> ();
size = 0;
}
// ========================================
inline DimImg
Leader::find (DimImg a) const {
BOOST_ASSERT (a < size);
for (;;) {
// On recherche le leader de a dans le tableau
DimImg p = leaders[a];
// Si p est size, p n'a pas de leader donc p était le leader de a
if (p == DimImg_MAX)
break;
a = p;
}
BOOST_ASSERT (a < size);
return a;
}
// ----------------------------------------
inline void
Leader::link (DimImg a, const DimImg &r) {
BOOST_ASSERT (a < size);
BOOST_ASSERT (r < size);
for (; a != r;) {
// On affecte une variable "temporaire" qui joue le rôle du leader de a
DimImg p = leaders[a];
//
leaders[a] = r;
if (p == DimImg_MAX)
return;
a = p;
}
}
// ========================================
inline DimImg *
Leader::getLeaders () {
return &leaders[0];
}
inline vector<DimImg> &
Leader::getLeadersVector () {
return leaders;
}
// ========================================
#endif // _OTB_TRISKELE_ARRAY_TREE_LEADER_TPP