MCPcopy Create free account
hub / github.com/OpenMW/openmw / traverse

Method traverse

components/lua/inputactions.cpp:48–73  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46
47 template <typename Function>
48 void MultiTree::traverse(Function callback) const
49 {
50 std::queue<Node> nodeQueue;
51 std::vector<bool> complete(size(), false);
52 for (Node root = 0; root < size(); ++root)
53 {
54 if (!complete[root])
55 nodeQueue.push(root);
56 while (!nodeQueue.empty())
57 {
58 Node node = nodeQueue.back();
59 nodeQueue.pop();
60
61 bool isComplete = true;
62 for (Node parent : mParents[node])
63 isComplete = isComplete && complete[parent];
64 complete[node] = isComplete;
65 if (isComplete)
66 {
67 callback(node);
68 for (Node child : mChildren[node])
69 nodeQueue.push(child);
70 }
71 }
72 }
73 }
74
75 bool MultiTree::multiEdge(Node target, const std::vector<Node>& source)
76 {

Callers 1

updateMethod · 0.45

Calls 4

sizeFunction · 0.50
pushMethod · 0.45
emptyMethod · 0.45
popMethod · 0.45

Tested by

no test coverage detected