LeechCraft
0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
domchildrenrange.cpp
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#include "
domchildrenrange.h
"
10
#include <QVector>
11
12
namespace
LC::Util
13
{
14
namespace
15
{
16
void
DomDescendants
(
const
QDomElement& parent,
const
QString& tag, QVector<QDomElement>& result)
17
{
18
for
(
const
auto
& elem :
DomChildren
(parent, {}))
19
{
20
if
(elem.tagName () == tag)
21
result << elem;
22
23
DomDescendants
(elem, tag, result);
24
}
25
}
26
}
27
28
QVector<QDomElement>
DomDescendants
(
const
QDomElement& parent,
const
QString& tag)
29
{
30
const
auto
& allElems = parent.elementsByTagName (tag);
31
const
auto
elemsCount = allElems.size ();
32
33
QVector<QDomElement> result;
34
result.reserve (elemsCount);
35
36
// QDomNodeList operations are slower than explicit recursion for bigger lists,
37
// and this is a somewhat empirical threshold.
38
constexpr
auto
countThreshold = 200;
39
40
if
(elemsCount < countThreshold)
41
for
(
int
i = 0; i < allElems.size (); ++i)
42
result << allElems.at (i).toElement ();
43
else
44
DomDescendants
(parent, tag, result);
45
46
return
result;
47
}
48
}
domchildrenrange.h
LC::Util
Definition
icoreproxy.h:34
LC::Util::DomChildren
auto DomChildren(const QDomNode &parent, const QString &tag)
Creates a range iterating over direct children named tag.
Definition
domchildrenrange.h:43
LC::Util::DomDescendants
QVector< QDomElement > DomDescendants(const QDomElement &parent, const QString &tag)
Creates a vector with all descendants of parent named tag.
Definition
domchildrenrange.cpp:28
src
util
sll
domchildrenrange.cpp
Generated by
1.17.0