Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qchar_generator.h
Go to the documentation of this file.
1
// Copyright (C) 2022 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4
#
pragma
once
5
6
#
include
"../namespaces.h"
7
#
include
"../utilities/semantics/move_into_vector.h"
8
#
include
"combinators/oneof_generator.h"
9
10
#
include
<
catch
/
catch
.
hpp
>
11
12
#
include
<
random
>
13
14
#
include
<
QChar
>
15
16
namespace
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE
{
17
namespace
QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE
{
18
19
class
QCharGenerator
:
public
Catch
::
Generators
::
IGenerator
<
QChar
> {
20
public
:
21
QCharGenerator
(
22
char16_t
lower_bound =
std
::numeric_limits<
char16_t
>::min(),
23
char16_t
upper_bound =
std
::numeric_limits<
char16_t
>::max()
24
) : random_engine{
std
::random_device{}()},
25
distribution
{
static_cast
<
unsigned
int
>(
lower_bound
),
static_cast
<
unsigned
int
>(
upper_bound
)}
26
{
27
assert
(lower_bound <= upper_bound);
28
static_cast
<
void
>(
next
(
)
);
29
}
30
31
QChar
const
&
get
()
const
override
{
return
current_character; }
32
33
bool
next
()
override
{
34
current_character = QChar(
static_cast
<
char16_t
>(distribution(random_engine)));
35
36
return
true
;
37
}
38
39
private
:
40
QChar current_character;
41
42
std
::mt19937 random_engine;
43
std
::uniform_int_distribution<
unsigned
int
> distribution;
44
};
45
46
}
// end QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE
47
48
49
/*!
50
* Returns a generator of that generates elements of QChar whose
51
* ucs value is in the range [\a lower_bound, \a upper_bound].
52
*
53
* When \a lower_bound = \a upper_bound, the generator infinitely
54
* generates the same character.
55
*/
56
inline
Catch
::
Generators
::
GeneratorWrapper
<
QChar
>
character
(
char16_t
lower_bound =
std
::numeric_limits<
char16_t
>::min(),
char16_t
upper_bound =
std
::numeric_limits<
char16_t
>::max()) {
57
return
Catch::Generators::GeneratorWrapper<QChar>(std::unique_ptr<Catch::Generators::IGenerator<QChar>>(
new
QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE
::QCharGenerator(lower_bound, upper_bound)));
58
}
59
60
61
namespace
QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE
{
62
63
namespace
QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE
{
64
65
enum
class
Alphabets
:
std
::
size_t
{
digit
,
ascii_lowercase
,
ascii_uppercase
,
ascii_alpha
,
ascii_alphanumeric
,
portable_posix_filename
};
66
67
template
<
Alphabets
alphabet>
68
struct
sizeof_alphabet
;
69
70
template
<
Alphabets
alphabet
>
71
inline
constexpr
std
::
size_t
sizeof_alphabet_v
=
sizeof_alphabet
<
alphabet
>::
value
;
72
73
template
<>
struct
sizeof_alphabet
<
Alphabets
::
digit
> {
static
constexpr
std
::size_t
value
{
'9'
-
'0'
}; };
74
template
<>
struct
sizeof_alphabet
<
Alphabets
::
ascii_lowercase
> {
static
constexpr
std
::size_t
value
{
'z'
-
'a'
}; };
75
template
<>
struct
sizeof_alphabet
<
Alphabets
::
ascii_uppercase
> {
static
constexpr
std
::size_t
value
{
'Z'
-
'A'
}; };
76
template
<>
struct
sizeof_alphabet
<
Alphabets
::
ascii_alpha
> {
static
constexpr
std
::size_t
value
{
sizeof_alphabet_v
<
Alphabets
::
ascii_lowercase
> +
sizeof_alphabet_v
<
Alphabets
::
ascii_uppercase
>}; };
77
template
<>
struct
sizeof_alphabet
<
Alphabets
::
ascii_alphanumeric
>{
static
constexpr
std
::size_t
value
{
sizeof_alphabet_v
<
Alphabets
::
ascii_alpha
> +
sizeof_alphabet_v
<
Alphabets
::
digit
>}; };
78
79
}
// end QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE
80
81
82
inline
Catch
::
Generators
::
GeneratorWrapper
<
QChar
>
digit
() {
83
return
Catch::Generators::GeneratorWrapper<QChar>(std::unique_ptr<Catch::Generators::IGenerator<QChar>>(
new
QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE
::QCharGenerator(
'0'
,
'9'
)));
84
}
85
86
inline
Catch
::
Generators
::
GeneratorWrapper
<
QChar
>
ascii_lowercase
() {
87
return
Catch::Generators::GeneratorWrapper<QChar>(std::unique_ptr<Catch::Generators::IGenerator<QChar>>(
new
QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE
::QCharGenerator(
'a'
,
'z'
)));
88
}
89
90
inline
Catch
::
Generators
::
GeneratorWrapper
<
QChar
>
ascii_uppercase
() {
91
return
Catch::Generators::GeneratorWrapper<QChar>(std::unique_ptr<Catch::Generators::IGenerator<QChar>>(
new
QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE
::QCharGenerator(
'A'
,
'Z'
)));
92
}
93
94
inline
Catch
::
Generators
::
GeneratorWrapper
<
QChar
>
ascii_alpha
() {
95
return
uniform_oneof(
QDOC_CATCH_GENERATORS_UTILITIES_ABSOLUTE_NAMESPACE
::move_into_vector(ascii_lowercase(), ascii_uppercase()));
96
}
97
98
inline
Catch
::
Generators
::
GeneratorWrapper
<
QChar
>
ascii_alphanumeric
() {
99
return
uniformly_valued_oneof(
QDOC_CATCH_GENERATORS_UTILITIES_ABSOLUTE_NAMESPACE
::move_into_vector(ascii_alpha(), digit()), std::vector{traits::sizeof_alphabet_v<traits::Alphabets::ascii_alpha> , traits::sizeof_alphabet_v<traits::Alphabets::digit>});
100
}
101
102
inline
Catch
::
Generators
::
GeneratorWrapper
<
QChar
>
portable_posix_filename
() {
103
return
uniformly_valued_oneof(
QDOC_CATCH_GENERATORS_UTILITIES_ABSOLUTE_NAMESPACE
::move_into_vector(ascii_alphanumeric(), character(
'.'
,
'.'
), character(
'-'
,
'-'
), character(
'_'
,
'_'
)),
104
std::vector{traits::sizeof_alphabet_v<traits::Alphabets::ascii_alphanumeric>, std::size_t{1}, std::size_t{1}, std::size_t{1}});
105
}
106
107
}
// end QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE
108
109
110
}
// end QDOC_CATCH_GENERATORS_ROOT_NAMESPACE
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE::QCharGenerator
Definition
qchar_generator.h:19
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE::QCharGenerator::next
bool next() override
Definition
qchar_generator.h:33
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE::QCharGenerator::QCharGenerator
QCharGenerator(char16_t lower_bound=std::numeric_limits< char16_t >::min(), char16_t upper_bound=std::numeric_limits< char16_t >::max())
Definition
qchar_generator.h:21
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE::QCharGenerator::get
QChar const & get() const override
Definition
qchar_generator.h:31
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet_v
constexpr std::size_t sizeof_alphabet_v
Definition
qchar_generator.h:71
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::Alphabets
Alphabets
Definition
qchar_generator.h:65
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::Alphabets::digit
@ digit
Definition
qchar_generator.h:65
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::Alphabets::ascii_alphanumeric
@ ascii_alphanumeric
Definition
qchar_generator.h:65
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::Alphabets::ascii_alpha
@ ascii_alpha
Definition
qchar_generator.h:65
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::Alphabets::ascii_uppercase
@ ascii_uppercase
Definition
qchar_generator.h:65
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::Alphabets::ascii_lowercase
@ ascii_lowercase
Definition
qchar_generator.h:65
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::Alphabets::portable_posix_filename
@ portable_posix_filename
Definition
qchar_generator.h:65
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::digit
Catch::Generators::GeneratorWrapper< QChar > digit()
Definition
qchar_generator.h:82
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::portable_posix_filename
Catch::Generators::GeneratorWrapper< QChar > portable_posix_filename()
Definition
qchar_generator.h:102
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::ascii_alpha
Catch::Generators::GeneratorWrapper< QChar > ascii_alpha()
Definition
qchar_generator.h:94
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::ascii_lowercase
Catch::Generators::GeneratorWrapper< QChar > ascii_lowercase()
Definition
qchar_generator.h:86
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::ascii_uppercase
Catch::Generators::GeneratorWrapper< QChar > ascii_uppercase()
Definition
qchar_generator.h:90
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::ascii_alphanumeric
Catch::Generators::GeneratorWrapper< QChar > ascii_alphanumeric()
Definition
qchar_generator.h:98
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::character
Catch::Generators::GeneratorWrapper< QChar > character(char16_t lower_bound=std::numeric_limits< char16_t >::min(), char16_t upper_bound=std::numeric_limits< char16_t >::max())
Returns a generator of that generates elements of QChar whose ucs value is in the range [lower_bound,...
Definition
qchar_generator.h:56
QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE
#define QDOC_CATCH_GENERATORS_PRIVATE_NAMESPACE
Definition
namespaces.h:8
QDOC_CATCH_GENERATORS_UTILITIES_ABSOLUTE_NAMESPACE
#define QDOC_CATCH_GENERATORS_UTILITIES_ABSOLUTE_NAMESPACE
Definition
namespaces.h:14
QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE
#define QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE
Definition
namespaces.h:12
QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE
#define QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE
Definition
namespaces.h:10
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE
#define QDOC_CATCH_GENERATORS_ROOT_NAMESPACE
Definition
namespaces.h:6
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
assert
#define assert
Definition
qcborcommon_p.h:29
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::ascii_lowercase >
Definition
qchar_generator.h:74
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::ascii_lowercase >::value
static constexpr std::size_t value
Definition
qchar_generator.h:74
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::digit >
Definition
qchar_generator.h:73
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::digit >::value
static constexpr std::size_t value
Definition
qchar_generator.h:73
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::ascii_uppercase >
Definition
qchar_generator.h:75
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::ascii_uppercase >::value
static constexpr std::size_t value
Definition
qchar_generator.h:75
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::ascii_alphanumeric >
Definition
qchar_generator.h:77
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::ascii_alphanumeric >::value
static constexpr std::size_t value
Definition
qchar_generator.h:77
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet
Definition
qchar_generator.h:68
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::ascii_alpha >
Definition
qchar_generator.h:76
QDOC_CATCH_GENERATORS_ROOT_NAMESPACE::QDOC_CATCH_GENERATORS_QCHAR_ALPHABETS_NAMESPACE::QDOC_CATCH_GENERATORS_TRAITS_NAMESPACE::sizeof_alphabet< Alphabets::ascii_alpha >::value
static constexpr std::size_t value
Definition
qchar_generator.h:76
qttools
src
qdoc
catch_generators
src
catch_generators
generators
qchar_generator.h
Generated on
for Qt by
1.18.0