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
qcollator_p.h
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
3
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
// Qt-Security score:significant reason:trivial-impl-only
5
6
#
ifndef
QCOLLATOR_P_H
7
#
define
QCOLLATOR_P_H
8
9
//
10
// W A R N I N G
11
// -------------
12
//
13
// This file is not part of the Qt API. It exists purely as an
14
// implementation detail. This header file may change from version to
15
// version without notice, or even be removed.
16
//
17
// We mean it.
18
//
19
20
#
include
<
QtCore
/
private
/
qglobal_p
.
h
>
21
#
include
"qcollator.h"
22
#
include
"qlocale_p.h"
23
#
include
<
QList
>
24
#
include
<
QtCore
/
qloggingcategory
.
h
>
25
#
if
QT_CONFIG
(
icu
)
||
defined
(
Q_OS_ANDROID
)
26
#
include
<
unicode
/
ucol
.
h
>
27
#
elif
defined
(
Q_OS_MACOS
)
28
#
include
<
CoreServices
/
CoreServices
.
h
>
29
#
elif
defined
(
Q_OS_WIN
)
30
#
include
<
qt_windows
.
h
>
31
#
elif
defined
(
Q_OS_WASM
)
32
#
include
<
emscripten
/
val
.
h
>
33
#
endif
34
#
ifdef
Q_OS_ANDROID
35
#
include
"qjniobject.h"
36
#
include
"qjnitypes.h"
37
#
endif
38
39
QT_BEGIN_NAMESPACE
40
41
Q_DECLARE_LOGGING_CATEGORY(lcQCollator)
42
43
#
if
QT_CONFIG
(
icu
)
||
defined
(
Q_OS_ANDROID
)
44
typedef
UCollator *CollatorType;
45
typedef
QByteArray CollatorKeyType;
46
const
CollatorType NoCollator =
nullptr
;
47
48
#
elif
defined
(
Q_OS_MACOS
)
49
typedef
CollatorRef CollatorType;
50
typedef
QList<UCCollationValue> CollatorKeyType;
51
const
CollatorType NoCollator = 0;
52
53
#
elif
defined
(
Q_OS_WIN
)
54
typedef
QByteArray CollatorKeyType;
55
typedef
int
CollatorType;
56
const
CollatorType NoCollator = 0;
57
58
#
elif
defined
(
Q_OS_WASM
)
59
typedef
emscripten::val *CollatorType;
60
struct
QCollatorSortKeyWasm
61
{
62
QString string;
63
emscripten::val collator = emscripten::val::undefined();
64
};
65
typedef
QCollatorSortKeyWasm CollatorKeyType;
66
const
CollatorType NoCollator =
nullptr
;
67
68
#
else
// posix - ignores CollatorType collator, only handles system locale
69
typedef
QList<
wchar_t
> CollatorKeyType;
70
typedef
bool
CollatorType
;
71
const
CollatorType
NoCollator
=
false
;
72
#
endif
73
74
#
ifdef
Q_OS_ANDROID
75
Q_DECLARE_JNI_CLASS(QtCollator,
"org/qtproject/qt/android/QtCollator"
)
76
Q_DECLARE_JNI_CLASS(Collator,
"android/icu/text/Collator"
)
77
#
endif
78
79
80
class
QCollatorPrivate
81
{
82
public
:
83
using
Opt
=
QCollator
::CollationOption;
84
85
QAtomicInt
ref
= 1;
86
QLocale
locale
;
87
QCollator
::
CollationOptions
options
;
88
bool
dirty
=
true
;
89
90
CollatorType
collator
=
NoCollator
;
91
#
ifdef
Q_OS_ANDROID
92
QtJniTypes
::
Collator
fallbackCollator
=
QJniObject
();
// needs to be null rather than default-constructed
93
#
endif
94
95
QCollatorPrivate
(
const
QLocale &locale) :
locale
(
locale
) {}
96
~
QCollatorPrivate
() {
cleanup
(
)
; }
97
bool
isC
()
const
{
return
locale.language() == QLocale::C; }
98
99
void
clear
() {
100
cleanup
(
)
;
101
collator
=
NoCollator
;
102
}
103
104
void
ensureInitialized
()
105
{
106
if
(
dirty
)
107
init
(
)
;
108
}
109
110
// Implemented by each back-end, in its own way:
111
void
init
();
112
void
cleanup
();
113
114
static
QCollatorSortKey
sortKeyFromData
(CollatorKeyType &&data);
115
116
private
:
117
Q_DISABLE_COPY_MOVE
(
QCollatorPrivate
)
118
};
119
120
class
QCollatorSortKeyPrivate
:
public
QSharedData
121
{
122
public
:
123
explicit
QCollatorSortKeyPrivate
(CollatorKeyType &&list)
124
:
QSharedData
(),
m_key
(
std
::
move
(
list
))
125
{
126
}
127
128
CollatorKeyType
m_key
;
129
130
private
:
131
Q_DISABLE_COPY_MOVE
(
QCollatorSortKeyPrivate
)
132
};
133
134
inline
QCollatorSortKey
QCollatorPrivate
::sortKeyFromData(CollatorKeyType &&data)
135
{
136
return
QCollatorSortKey(
new
QCollatorSortKeyPrivate
(
std
::move(data)));
137
}
138
139
QT_END_NAMESPACE
140
141
#
endif
// QCOLLATOR_P_H
QCollatorPrivate
Definition
qcollator_p.h:81
QCollatorPrivate::ref
QAtomicInt ref
Definition
qcollator_p.h:85
QCollatorPrivate::~QCollatorPrivate
~QCollatorPrivate()
Definition
qcollator_p.h:96
QCollatorPrivate::isC
bool isC() const
Definition
qcollator_p.h:97
QCollatorPrivate::locale
QLocale locale
Definition
qcollator_p.h:86
QCollatorPrivate::ensureInitialized
void ensureInitialized()
Definition
qcollator_p.h:104
QCollatorPrivate::QCollatorPrivate
QCollatorPrivate(const QLocale &locale)
Definition
qcollator_p.h:95
QCollatorPrivate::init
void init()
Definition
qcollator_icu.cpp:54
QCollatorPrivate::dirty
bool dirty
Definition
qcollator_p.h:88
QCollatorPrivate::clear
void clear()
Definition
qcollator_p.h:99
QCollatorPrivate::collator
CollatorType collator
Definition
qcollator_p.h:90
QCollatorPrivate::sortKeyFromData
static QCollatorSortKey sortKeyFromData(CollatorKeyType &&data)
Definition
qcollator_p.h:134
QCollatorPrivate::cleanup
void cleanup()
Definition
qcollator_icu.cpp:177
QCollatorSortKeyPrivate
Definition
qcollator_p.h:121
QCollatorSortKeyPrivate::m_key
CollatorKeyType m_key
Definition
qcollator_p.h:128
QCollatorSortKeyPrivate::QCollatorSortKeyPrivate
QCollatorSortKeyPrivate(CollatorKeyType &&list)
Definition
qcollator_p.h:123
QT_BEGIN_NAMESPACE::GenerationalCollatorHolder
Definition
qcollator.cpp:39
QT_BEGIN_NAMESPACE::GenerationalCollatorHolder::~GenerationalCollatorHolder
~GenerationalCollatorHolder()
Definition
qcollator.cpp:41
QThreadStorage
\inmodule QtCore
Definition
qthreadstorage.h:159
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
NoCollator
const CollatorType NoCollator
Definition
qcollator_p.h:71
CollatorType
bool CollatorType
Definition
qcollator_p.h:70
QT_BEGIN_NAMESPACE::GenerationalCollator
Definition
qcollator.cpp:20
QT_BEGIN_NAMESPACE::GenerationalCollator::collator
QCollator & collator()
Definition
qcollator.cpp:26
QT_BEGIN_NAMESPACE::GenerationalCollator::GenerationalCollator
GenerationalCollator(const QCollator ©)
Definition
qcollator.cpp:25
QT_BEGIN_NAMESPACE::GenerationalCollator::generation
int generation
Definition
qcollator.cpp:22
QT_BEGIN_NAMESPACE::GenerationalCollator::GenerationalCollator
GenerationalCollator()=default
QT_BEGIN_NAMESPACE::GenerationalCollator::theCollator
QCollator theCollator
Definition
qcollator.cpp:21
qtbase
src
corelib
text
qcollator_p.h
Generated on
for Qt by
1.18.0