MCPcopy Create free account
hub / github.com/MyGUI/mygui / traverse

Method traverse

UnitTests/TestApp/pugixml.cpp:5143–5189  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5141 }
5142
5143 PUGI__FN bool xml_node::traverse(xml_tree_walker& walker)
5144 {
5145 walker._depth = -1;
5146
5147 xml_node arg_begin = *this;
5148 if (!walker.begin(arg_begin))
5149 return false;
5150
5151 xml_node cur = first_child();
5152
5153 if (cur)
5154 {
5155 ++walker._depth;
5156
5157 do
5158 {
5159 xml_node arg_for_each = cur;
5160 if (!walker.for_each(arg_for_each))
5161 return false;
5162
5163 if (cur.first_child())
5164 {
5165 ++walker._depth;
5166 cur = cur.first_child();
5167 }
5168 else if (cur.next_sibling())
5169 cur = cur.next_sibling();
5170 else
5171 {
5172 // Borland C++ workaround
5173 while (!cur.next_sibling() && cur != *this && !cur.parent().empty())
5174 {
5175 --walker._depth;
5176 cur = cur.parent();
5177 }
5178
5179 if (cur != *this)
5180 cur = cur.next_sibling();
5181 }
5182 } while (cur && cur != *this);
5183 }
5184
5185 assert(walker._depth == -1);
5186
5187 xml_node arg_end = *this;
5188 return walker.end(arg_end);
5189 }
5190
5191 PUGI__FN size_t xml_node::hash_value() const
5192 {

Callers

nothing calls this directly

Calls 6

beginMethod · 0.45
first_childMethod · 0.45
next_siblingMethod · 0.45
emptyMethod · 0.45
parentMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected