LeechCraft
0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
xmlnode.h
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
#pragma once
10
11
#include <utility>
12
#include <variant>
13
#include <QString>
14
#include <QVector>
15
#include "
sllconfig.h
"
16
17
class
QSize;
18
19
namespace
LC::Util
20
{
21
using
TagAttrs
= QVector<std::pair<QByteArray, QString>>;
22
23
struct
Tag
;
24
25
struct
NoNode
{};
26
27
using
Node
= std::variant<Tag, QString, NoNode>;
28
using
Nodes
= QVector<Node>;
29
30
UTIL_SLL_API
Nodes
operator+
(
Node
&&,
Nodes
&&);
31
UTIL_SLL_API
Nodes
operator+
(
Nodes
&&,
Node
&&);
32
UTIL_SLL_API
Nodes
operator+
(
Node
&&,
Node
&&);
33
34
template
<
typename
T>
35
concept
XmlRepr
= std::is_same_v<T, QString> || std::is_same_v<T, QByteArray>;
36
37
struct
NoDtd
{};
38
struct
Html5Dtd
{};
39
struct
CustomDtd
{ QString
Dtd_
; };
40
using
Dtd
= std::variant<NoDtd, Html5Dtd, CustomDtd>;
41
42
struct
TagSerializeConfig
43
{
44
bool
Prolog_
=
false
;
45
Dtd
Dtd_
=
NoDtd
{};
46
std::optional<int>
Indent_
= {};
47
};
48
49
struct
Tag
50
{
51
QByteArray
Name_
;
52
TagAttrs
Attrs_
{};
53
54
Nodes
Children_
{};
55
56
UTIL_SLL_API
static
Tag
WithText
(
const
QByteArray& name,
const
QString& contents);
57
UTIL_SLL_API
static
Node
WithTextNonEmpty
(
const
QByteArray& name,
const
QString& contents);
58
59
template
<XmlRepr T = QString>
60
[[nodiscard]]
61
UTIL_SLL_API
T
Serialize
(
const
TagSerializeConfig
& = {})
const
;
62
63
UTIL_SLL_API
Tag
&
WithAttr
(QByteArray, QString) &&;
64
};
65
66
namespace
Tags
67
{
68
extern
const
Tag
Br
;
69
70
UTIL_SLL_API
Tag
Html
(
Nodes
&& children);
71
UTIL_SLL_API
Tag
Charset
(
const
QString& charset);
72
UTIL_SLL_API
Tag
Title
(
const
QString& title);
73
UTIL_SLL_API
Tag
Style
(
const
QString& style);
74
75
UTIL_SLL_API
Tag
Body
(
Nodes
&& children);
76
77
UTIL_SLL_API
Tag
Image
(
const
QString& url);
78
UTIL_SLL_API
Tag
Image
(
const
QString& url,
const
QSize&);
79
UTIL_SLL_API
Tag
Li
(
Nodes
&& children);
80
UTIL_SLL_API
Tag
Ul
(
Nodes
&& children);
81
82
UTIL_SLL_API
Tag
P
(
Nodes
&& children);
83
84
UTIL_SLL_API
Nodes
TableGrid
(
size_t
rows,
size_t
cols,
const
std::function<
Nodes
(
size_t
,
size_t
)>& cell);
85
}
86
}
LC::Util::XmlRepr
Definition
xmlnode.h:35
LC::Util::Tags::Html
Tag Html(Nodes &&children)
Definition
xmlnode.cpp:109
LC::Util::Tags::Charset
Tag Charset(const QString &charset)
Definition
xmlnode.cpp:119
LC::Util::Tags::Image
Tag Image(const QString &url)
Definition
xmlnode.cpp:139
LC::Util::Tags::Li
Tag Li(Nodes &&children)
Definition
xmlnode.cpp:155
LC::Util::Tags::Br
UTIL_SLL_API const Tag Br
Definition
xmlnode.cpp:107
LC::Util::Tags::Body
Tag Body(Nodes &&children)
Definition
xmlnode.cpp:134
LC::Util::Tags::Style
Tag Style(const QString &style)
Definition
xmlnode.cpp:129
LC::Util::Tags::P
Tag P(Nodes &&children)
Definition
xmlnode.cpp:165
LC::Util::Tags::TableGrid
Nodes TableGrid(size_t rows, size_t cols, const std::function< Nodes(size_t, size_t)> &cell)
Definition
xmlnode.cpp:170
LC::Util::Tags::Title
Tag Title(const QString &title)
Definition
xmlnode.cpp:124
LC::Util::Tags::Ul
Tag Ul(Nodes &&children)
Definition
xmlnode.cpp:160
LC::Util
Definition
icoreproxy.h:34
LC::Util::Dtd
std::variant< NoDtd, Html5Dtd, CustomDtd > Dtd
Definition
xmlnode.h:40
LC::Util::Nodes
QVector< Node > Nodes
Definition
xmlnode.h:28
LC::Util::operator+
constexpr auto operator+(RawStr< N1, Char > s1, CtString< N2, Char > s2) noexcept
Definition
ctstring.h:167
LC::Util::TagAttrs
QVector< std::pair< QByteArray, QString > > TagAttrs
Definition
xmlnode.h:21
LC::Util::Node
std::variant< Tag, QString, NoNode > Node
Definition
xmlnode.h:27
sllconfig.h
UTIL_SLL_API
#define UTIL_SLL_API
Definition
sllconfig.h:16
LC::Util::CustomDtd
Definition
xmlnode.h:39
LC::Util::CustomDtd::Dtd_
QString Dtd_
Definition
xmlnode.h:39
LC::Util::Html5Dtd
Definition
xmlnode.h:38
LC::Util::NoDtd
Definition
xmlnode.h:37
LC::Util::NoNode
Definition
xmlnode.h:25
LC::Util::Tag
Definition
xmlnode.h:50
LC::Util::Tag::WithAttr
UTIL_SLL_API Tag & WithAttr(QByteArray, QString) &&
Definition
xmlnode.cpp:99
LC::Util::Tag::WithText
static UTIL_SLL_API Tag WithText(const QByteArray &name, const QString &contents)
Definition
xmlnode.cpp:34
LC::Util::Tag::Children_
Nodes Children_
Definition
xmlnode.h:54
LC::Util::Tag::Attrs_
TagAttrs Attrs_
Definition
xmlnode.h:52
LC::Util::Tag::Name_
QByteArray Name_
Definition
xmlnode.h:51
LC::Util::Tag::Serialize
UTIL_SLL_API T Serialize(const TagSerializeConfig &={}) const
LC::Util::Tag::WithTextNonEmpty
static UTIL_SLL_API Node WithTextNonEmpty(const QByteArray &name, const QString &contents)
Definition
xmlnode.cpp:39
LC::Util::TagSerializeConfig
Definition
xmlnode.h:43
LC::Util::TagSerializeConfig::Indent_
std::optional< int > Indent_
Definition
xmlnode.h:46
LC::Util::TagSerializeConfig::Dtd_
Dtd Dtd_
Definition
xmlnode.h:45
LC::Util::TagSerializeConfig::Prolog_
bool Prolog_
Definition
xmlnode.h:44
src
util
sll
xmlnode.h
Generated by
1.17.0