Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qmath.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QMATH_H
6#define QMATH_H
7
8#if 0
9#pragma qt_class(QtMath)
10#endif
11
12#include <QtCore/qglobal.h>
13#include <QtCore/qalgorithms.h>
14#include <QtCore/qnumeric.h>
15
16#if __has_include(<bit>) && __cplusplus > 201703L
17#include <bit>
18#endif
19
20#include <cmath>
21
23
24#define QT_SINE_TABLE_SIZE 256
25
26extern Q_CORE_EXPORT const qreal qt_sine_table[QT_SINE_TABLE_SIZE];
27
28template <typename T> int qCeil(T v)
29{
30 using std::ceil;
31 return QtPrivate::qCheckedFPConversionToInteger<int>(ceil(v));
32}
33
34template <typename T> int qFloor(T v)
35{
36 using std::floor;
37 return QtPrivate::qCheckedFPConversionToInteger<int>(floor(v));
38}
39
40template <typename T> auto qFabs(T v)
41{
42 using std::fabs;
43 return fabs(v);
44}
45
46template <typename T> auto qSin(T v)
47{
48 using std::sin;
49 return sin(v);
50}
51
52template <typename T> auto qCos(T v)
53{
54 using std::cos;
55 return cos(v);
56}
57
58template <typename T> auto qTan(T v)
59{
60 using std::tan;
61 return tan(v);
62}
63
64template <typename T> auto qAcos(T v)
65{
66 using std::acos;
67 return acos(v);
68}
69
70template <typename T> auto qAsin(T v)
71{
72 using std::asin;
73 return asin(v);
74}
75
76template <typename T> auto qAtan(T v)
77{
78 using std::atan;
79 return atan(v);
80}
81
82template <typename T1, typename T2> auto qAtan2(T1 y, T2 x)
83{
84 using std::atan2;
85 return atan2(y, x);
86}
87
88template <typename T> auto qSqrt(T v)
89{
90 using std::sqrt;
91 return sqrt(v);
92}
93
94namespace QtPrivate {
95template <typename R, typename F> // For qfloat16 to specialize
96struct QHypotType { using type = decltype(std::hypot(R(1), F(1))); };
97
98// Implements hypot() without limiting number of arguments:
99template <typename T>
101{
102 T scale, total;
103 template <typename F> friend class QHypotHelper;
104 QHypotHelper(T first, T prior) : scale(first), total(prior) {}
105public:
106 QHypotHelper(T first) : scale(qAbs(first)), total(1) {}
107 T result() const
108 { return qIsFinite(scale) ? scale > 0 ? scale * T(qSqrt(total)) : T(0) : scale; }
109
110 template<typename F, typename ...Fs>
111 auto add(F first, Fs... rest) const
112 { return add(first).add(rest...); }
113
114 template<typename F, typename R = typename QHypotType<T, F>::type>
115 QHypotHelper<R> add(F next) const
116 {
117 if (qIsInf(scale) || (qIsNaN(scale) && !qIsInf(next)))
118 return QHypotHelper<R>(scale, R(1));
119 if (qIsNaN(next))
120 return QHypotHelper<R>(next, R(1));
121 const R val = qAbs(next);
122 if (!(scale > 0) || qIsInf(next))
123 return QHypotHelper<R>(val, R(1));
124 if (!(val > 0))
125 return QHypotHelper<R>(scale, total);
126 if (val > scale) {
127 const R ratio = scale / next;
128 return QHypotHelper<R>(val, total * ratio * ratio + R(1));
129 }
130 const R ratio = next / scale;
131 return QHypotHelper<R>(scale, total + ratio * ratio);
132 }
133};
134} // QtPrivate
135
136template<typename F, typename ...Fs>
137auto qHypot(F first, Fs... rest)
138{
139 return QtPrivate::QHypotHelper<F>(first).add(rest...).result();
140}
141
142// However, where possible, use the standard library implementations:
143template <typename Tx, typename Ty>
144auto qHypot(Tx x, Ty y)
145{
146 // C99 has hypot(), hence C++11 has std::hypot()
147 using std::hypot;
148 return hypot(x, y);
149}
150
151#if defined(__cpp_lib_hypot) && __cpp_lib_hypot >= 201603L // Expected to be true
152template <typename Tx, typename Ty, typename Tz>
153auto qHypot(Tx x, Ty y, Tz z)
154{
155 using std::hypot;
156 return hypot(x, y, z);
157}
158#endif // else: no need to over-ride the arbitrarily-many-arg form
159
160template <typename T> auto qLn(T v)
161{
162 using std::log;
163 return log(v);
164}
165
166template <typename T> auto qExp(T v)
167{
168 using std::exp;
169 return exp(v);
170}
171
172template <typename T1, typename T2> auto qPow(T1 x, T2 y)
173{
174 using std::pow;
175 return pow(x, y);
176}
177
178// TODO: use template variables (e.g. Qt::pi<type>) for these once we have C++14 support:
179
180#ifndef M_E
181#define M_E (2.7182818284590452354)
182#endif
183
184#ifndef M_LOG2E
185#define M_LOG2E (1.4426950408889634074)
186#endif
187
188#ifndef M_LOG10E
189#define M_LOG10E (0.43429448190325182765)
190#endif
191
192#ifndef M_LN2
193#define M_LN2 (0.69314718055994530942)
194#endif
195
196#ifndef M_LN10
197#define M_LN10 (2.30258509299404568402)
198#endif
199
200#ifndef M_PI
201#define M_PI (3.14159265358979323846)
202#endif
203
204#ifndef M_PI_2
205#define M_PI_2 (1.57079632679489661923)
206#endif
207
208#ifndef M_PI_4
209#define M_PI_4 (0.78539816339744830962)
210#endif
211
212#ifndef M_1_PI
213#define M_1_PI (0.31830988618379067154)
214#endif
215
216#ifndef M_2_PI
217#define M_2_PI (0.63661977236758134308)
218#endif
219
220#ifndef M_2_SQRTPI
221#define M_2_SQRTPI (1.12837916709551257390)
222#endif
223
224#ifndef M_SQRT2
225#define M_SQRT2 (1.41421356237309504880)
226#endif
227
228#ifndef M_SQRT1_2
229#define M_SQRT1_2 (0.70710678118654752440)
230#endif
231
232inline qreal qFastSin(qreal x)
233{
234 int si = int(x * (0.5 * QT_SINE_TABLE_SIZE / M_PI)); // Would be more accurate with qRound, but slower.
235 qreal d = x - si * (2.0 * M_PI / QT_SINE_TABLE_SIZE);
236 int ci = si + QT_SINE_TABLE_SIZE / 4;
237 si &= QT_SINE_TABLE_SIZE - 1;
238 ci &= QT_SINE_TABLE_SIZE - 1;
239 return qt_sine_table[si] + (qt_sine_table[ci] - 0.5 * qt_sine_table[si] * d) * d;
240}
241
242inline qreal qFastCos(qreal x)
243{
244 int ci = int(x * (0.5 * QT_SINE_TABLE_SIZE / M_PI)); // Would be more accurate with qRound, but slower.
245 qreal d = x - ci * (2.0 * M_PI / QT_SINE_TABLE_SIZE);
246 int si = ci + QT_SINE_TABLE_SIZE / 4;
247 si &= QT_SINE_TABLE_SIZE - 1;
248 ci &= QT_SINE_TABLE_SIZE - 1;
249 return qt_sine_table[si] - (qt_sine_table[ci] + 0.5 * qt_sine_table[si] * d) * d;
250}
251
252constexpr inline float qDegreesToRadians(float degrees)
253{
254 return degrees * float(M_PI / 180);
255}
256
257constexpr inline double qDegreesToRadians(double degrees)
258{
259 return degrees * (M_PI / 180);
260}
261
262constexpr inline long double qDegreesToRadians(long double degrees)
263{
264 return degrees * (M_PI / 180);
265}
266
267template <typename T, std::enable_if_t<std::is_integral_v<T>, bool> = true>
268constexpr inline double qDegreesToRadians(T degrees)
269{
270 return qDegreesToRadians(static_cast<double>(degrees));
271}
272
273constexpr inline float qRadiansToDegrees(float radians)
274{
275 return radians * float(180 / M_PI);
276}
277
278constexpr inline double qRadiansToDegrees(double radians)
279{
280 return radians * (180 / M_PI);
281}
282
283constexpr inline long double qRadiansToDegrees(long double radians)
284{
285 return radians * (180 / M_PI);
286}
287
288// A qRadiansToDegrees(Integral) overload isn't here; it's extremely
289// questionable that someone is manipulating quantities in radians
290// using integral datatypes...
291
292constexpr inline quint32 qNextPowerOfTwo(quint32 v)
293{
294 Q_ASSERT(static_cast<qint32>(v) >= 0); // There is a next power of two
295 return q20::bit_ceil(v + 1);
296}
297
298constexpr inline quint64 qNextPowerOfTwo(quint64 v)
299{
300 Q_ASSERT(static_cast<qint64>(v) >= 0); // There is a next power of two
301 return q20::bit_ceil(v + 1);
302}
303
304constexpr inline quint32 qNextPowerOfTwo(qint32 v)
305{
306 return qNextPowerOfTwo(quint32(v));
307}
308
309constexpr inline quint64 qNextPowerOfTwo(qint64 v)
310{
311 return qNextPowerOfTwo(quint64(v));
312}
313
314constexpr inline unsigned long qNextPowerOfTwo(unsigned long v)
315{
316 return qNextPowerOfTwo(QIntegerForSizeof<long>::Unsigned(v));
317}
318
319constexpr inline unsigned long qNextPowerOfTwo(long v)
320{
321 return qNextPowerOfTwo(QIntegerForSizeof<long>::Unsigned(v));
322}
323
324QT_END_NAMESPACE
325
326#endif // QMATH_H
\inmodule QtCore
QDataStream & operator>>(QDataStream &in, QByteArray &ba)
Reads a byte array into ba from the stream in and returns a reference to the stream.
quint16 qChecksum(QByteArrayView data, Qt::ChecksumType standard)
Definition qlist.h:81
static QLatin1StringView scriptToCode(QLocale::Script script)
Definition qlocale.cpp:259
QString toUpper(const QString &str, bool *ok) const
static const QLocalePrivate * get(const QLocale &l)
Definition qlocale_p.h:601
QString toLower(const QString &str, bool *ok) const
quint16 languageId() const
Definition qlocale_p.h:586
static QLocale::Language codeToLanguage(QStringView code, QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode) noexcept
Definition qlocale.cpp:109
const QLocaleData *const m_data
Definition qlocale_p.h:619
QLatin1StringView scriptCode() const
Definition qlocale_p.h:596
QLocale::MeasurementSystem measurementSystem() const
Definition qlocale.cpp:3550
quint16 territoryId() const
Definition qlocale_p.h:587
static QLatin1StringView territoryToCode(QLocale::Territory territory)
Definition qlocale.cpp:267
qsizetype m_index
Definition qlocale_p.h:621
static QLocale::Territory codeToTerritory(QStringView code) noexcept
Definition qlocale.cpp:215
static std::array< char, 4 > languageToCode(QLocale::Language language, QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode)
Definition qlocale.cpp:234
static QLocale::Script codeToScript(QStringView code) noexcept
Definition qlocale.cpp:209
QLocale::NumberOptions m_numberOptions
Definition qlocale_p.h:622
QLatin1StringView territoryCode() const
Definition qlocale_p.h:598
constexpr QLocalePrivate(const QLocaleData *data, qsizetype index, QLocale::NumberOptions numberOptions=QLocale::DefaultNumberOptions, int refs=0)
Definition qlocale_p.h:580
std::array< char, 4 > languageCode(QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode) const
Definition qlocale_p.h:592
static QBasicAtomicInt s_generation
Definition qlocale_p.h:624
QByteArray bcp47Name(char separator='-') const
Definition qlocale.cpp:495
QBasicAtomicInt ref
Definition qlocale_p.h:620
~QScopedArrayPointer()=default
const T & operator[](qsizetype i) const
T & operator[](qsizetype i)
friend bool operator==(std::nullptr_t, const QScopedPointer< T, Cleanup > &rhs) noexcept
bool operator!() const noexcept
T & operator*() const
friend bool operator==(const QScopedPointer< T, Cleanup > &lhs, std::nullptr_t) noexcept
T * operator->() const noexcept
bool isNull() const noexcept
T * get() const noexcept
void reset(T *other=nullptr) noexcept(noexcept(Cleanup::cleanup(std::declval< T * >())))
friend bool operator!=(std::nullptr_t, const QScopedPointer< T, Cleanup > &rhs) noexcept
friend bool operator!=(const QScopedPointer< T, Cleanup > &lhs, std::nullptr_t) noexcept
T * data() const noexcept
friend bool operator!=(const QScopedPointer< T, Cleanup > &lhs, const QScopedPointer< T, Cleanup > &rhs) noexcept
friend bool operator==(const QScopedPointer< T, Cleanup > &lhs, const QScopedPointer< T, Cleanup > &rhs) noexcept
QSpanCommon< T > Base
Definition qspan.h:177
constexpr QSpanBase(It first, qsizetype count)
Definition qspan.h:192
static constexpr qsizetype m_size
Definition qspan.h:181
constexpr QSpanBase(It first, End last)
Definition qspan.h:199
Definition qspan.h:317
constexpr bool empty() const noexcept
Definition qspan.h:369
constexpr pointer data() const noexcept
Definition qspan.h:376
static constexpr std::size_t extent
Definition qspan.h:347
constexpr reverse_iterator rbegin() const noexcept
Definition qspan.h:383
constexpr reference front() const
Definition qspan.h:374
constexpr QSpan< T > sliced(size_type pos, size_type n) const
Definition qspan.h:436
constexpr QSpan< T > sliced(size_type pos) const
Definition qspan.h:435
const T * const_pointer
Definition qspan.h:340
constexpr size_type size() const noexcept
Definition qspan.h:367
const_pointer const_iterator
Definition qspan.h:344
T & reference
Definition qspan.h:341
constexpr iterator end() const noexcept
Definition qspan.h:380
constexpr const_iterator cbegin() const noexcept
Definition qspan.h:381
constexpr QSpan< T > subspan(size_type pos, size_type n) const
Definition qspan.h:430
constexpr const_iterator cend() const noexcept
Definition qspan.h:382
constexpr bool isEmpty() const noexcept
Definition qspan.h:433
constexpr reverse_iterator rend() const noexcept
Definition qspan.h:384
constexpr QSpan< T, Count > last() const noexcept(subspan_always_succeeds_v< Count >)
Definition qspan.h:400
T * pointer
Definition qspan.h:339
constexpr QSpan< T > last(size_type n) const
Definition qspan.h:428
constexpr const_reverse_iterator crend() const noexcept
Definition qspan.h:386
pointer iterator
Definition qspan.h:343
friend QSpan< const std::byte, E==q20::dynamic_extent ? q20::dynamic_extent :E *sizeof(T)> as_bytes(QSpan s) noexcept
Definition qspan.h:464
constexpr size_type size_bytes() const noexcept
Definition qspan.h:368
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition qspan.h:346
constexpr const_reverse_iterator crbegin() const noexcept
Definition qspan.h:385
constexpr reference operator[](size_type idx) const
Definition qspan.h:372
constexpr QSpan< T > first(size_type n) const
Definition qspan.h:427
constexpr reference back() const
Definition qspan.h:375
constexpr QSpan< T > subspan(size_type pos) const
Definition qspan.h:429
constexpr auto subspan() const noexcept(subspan_always_succeeds_v< Offset+Count >)
Definition qspan.h:423
constexpr QSpan< T, Count > first() const noexcept(subspan_always_succeeds_v< Count >)
Definition qspan.h:390
const T & const_reference
Definition qspan.h:342
std::reverse_iterator< iterator > reverse_iterator
Definition qspan.h:345
constexpr QSpan< T > chopped(size_type n) const
Definition qspan.h:437
friend QSpan< std::byte, E==q20::dynamic_extent ? q20::dynamic_extent :E *sizeof(T)> as_writable_bytes(QSpan s) noexcept
Definition qspan.h:478
constexpr iterator begin() const noexcept
Definition qspan.h:379
constexpr auto subspan() const noexcept(subspan_always_succeeds_v< Offset >)
Definition qspan.h:410
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:177
qsizetype fallbackLocaleIndex() const
Definition qlocale_p.h:628
@ StringToAlternateQuotation
Definition qlocale_p.h:181
@ DateTimeToStringShort
Definition qlocale_p.h:169
@ StandaloneMonthNameLong
Definition qlocale_p.h:187
@ ListToSeparatedString
Definition qlocale_p.h:183
@ StandaloneDayNameNarrow
Definition qlocale_p.h:192
@ StandaloneMonthNameNarrow
Definition qlocale_p.h:189
@ StringToStandardQuotation
Definition qlocale_p.h:180
@ StandaloneDayNameShort
Definition qlocale_p.h:191
@ StandaloneDayNameLong
Definition qlocale_p.h:190
@ StandaloneMonthNameShort
Definition qlocale_p.h:188
virtual QLocale fallbackLocale() const
virtual QVariant query(QueryType type, QVariant &&in=QVariant()) const
QHypotHelper< R > add(F next) const
Definition qmath.h:115
QHypotHelper(T first)
Definition qmath.h:106
auto add(F first, Fs... rest) const
Definition qmath.h:111
AdlTester::size_result< Range > adl_size(Range &&r)
Definition qspan.h:103
std::conditional_t< std::is_const_v< From >, const To &, To & > const_propagated(To &in)
Definition qspan.h:50
decltype(QSpanPrivate::adl_begin(std::declval< Range & >())) iterator_t
Definition qspan.h:108
AdlTester::data_result< Range > adl_data(Range &&r)
Definition qspan.h:101
AdlTester::begin_result< Range > adl_begin(Range &&r)
Definition qspan.h:99
constexpr bool is_qualification_conversion_v
Definition qspan.h:83
std::is_convertible< From(*)[], To(*)[]> is_qualification_conversion
Definition qspan.h:80
Combined button and popup list for selecting options.
qsizetype fromUtf8(uchar b, OutputPtr &dst, InputPtr &src, InputPtr end)
char32_t nextUcs4FromUtf8(const qchar8_t *&src, const qchar8_t *end, char32_t errorChar=QChar::ReplacementCharacter)
wrapper around fromUtf8<Traits> to provide a simpler interface for a common case
int toUtf8(char16_t u, OutputPtr &dst, InputPtr &src, InputPtr end)
bool isContinuationByte(uchar b)
constexpr char ascii_space_chars[]
Definition qlocale_p.h:91
constexpr auto makeCharacterSetMatch() noexcept
Definition qlocale_p.h:100
constexpr auto dynamic_extent
Definition qspan.h:27
static constexpr bool isLowerCaseAscii(char c)
static const quint16 crc_tbl[16]
QByteArray qCompress(const uchar *data, qsizetype nbytes, int compressionLevel)
ZLibOp
@ Decompression
static Q_DECL_COLD_FUNCTION const char * zlibOpAsString(ZLibOp op)
static qsizetype q_fromPercentEncoding(QByteArrayView src, char percent, QSpan< char > buffer)
static QByteArray toCase_template(T &input, uchar(*lookup)(uchar))
int qstrnicmp(const char *str1, qsizetype len1, const char *str2, qsizetype len2)
static qsizetype lastIndexOfHelper(const char *haystack, qsizetype l, const char *needle, qsizetype ol, qsizetype from)
static constexpr bool isUpperCaseAscii(char c)
static QByteArray xxflate(ZLibOp op, QArrayDataPointer< char > out, QByteArrayView input, qxp::function_ref< int(z_stream *) const > init, qxp::function_ref< int(z_stream *, size_t) const > processChunk, qxp::function_ref< void(z_stream *) const > deinit)
static constexpr uchar asciiLower(uchar c)
static qsizetype countCharHelper(QByteArrayView haystack, char needle) noexcept
static constexpr uchar asciiUpper(uchar c)
Q_CORE_EXPORT char * qstrncpy(char *dst, const char *src, size_t len)
Q_CORE_EXPORT int qstrnicmp(const char *, const char *, size_t len)
Q_CORE_EXPORT int qstricmp(const char *, const char *)
Q_CORE_EXPORT char * qstrdup(const char *)
Q_CORE_EXPORT char * qstrcpy(char *dst, const char *src)
Q_DECL_PURE_FUNCTION Q_CORE_EXPORT const void * qmemrchr(const void *s, int needle, size_t n) noexcept
Q_CORE_EXPORT int qstrcmp(const char *str1, const char *str2)
#define __has_include(x)
#define __has_feature(x)
auto qHypot(F first, Fs... rest)
Definition qmath.h:137
bool qt_splitLocaleName(QStringView name, QStringView *lang=nullptr, QStringView *script=nullptr, QStringView *cntry=nullptr) noexcept
Definition qlocale.cpp:663
Q_DECLARE_TYPEINFO(QLocaleData::GroupSizes, Q_PRIMITIVE_TYPE)
Q_DECLARE_TYPEINFO(QLocaleId, Q_PRIMITIVE_TYPE)
qsizetype qt_repeatCount(QStringView s) noexcept
Definition qlocale.cpp:776
constexpr bool ascii_isspace(uchar c) noexcept
Definition qlocale_p.h:647
#define ForEachQLocaleRange(X)
Definition qlocale_p.h:531
QString qt_readEscapedFormatString(QStringView format, qsizetype *idx)
Definition qlocale.cpp:726
StrayCharacterMode
@ TrailingJunkAllowed
@ TrailingJunkProhibited
Q_CORE_EXPORT double qstrntod(const char *s00, qsizetype len, char const **se, bool *ok)
double qstrtod(const char *s00, char const **se, bool *ok)
QSimpleParsedNumber< double > qt_asciiToDouble(const char *num, qsizetype numLen, StrayCharacterMode strayCharMode=TrailingJunkProhibited)
QByteArray qdtoAscii(double d, QLocaleData::DoubleForm form, int precision, bool uppercase)
char * qulltoa2(char *p, qulonglong n, int base)
int wholePartSpace(double d)
QString qdtoBasicLatin(double d, QLocaleData::DoubleForm form, int precision, bool uppercase)
UcsInt unicodeForDigit(uint digit, UcsInt zero)
QString qulltoa(qulonglong l, int base, const QStringView zero)
QSimpleParsedNumber< qulonglong > qstrntoull(const char *nptr, qsizetype size, int base)
void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, char *buf, qsizetype bufSize, bool &sign, int &length, int &decpt)
QString qulltoBasicLatin(qulonglong l, int base, bool negative)
#define M_1_PI
Definition qmath.h:213
#define M_LN10
Definition qmath.h:197
constexpr double qDegreesToRadians(double degrees)
Definition qmath.h:257
auto qHypot(Tx x, Ty y)
Definition qmath.h:144
#define QT_SINE_TABLE_SIZE
Definition qmath.h:24
qreal qFastSin(qreal x)
Definition qmath.h:232
constexpr long double qRadiansToDegrees(long double radians)
Definition qmath.h:283
constexpr unsigned long qNextPowerOfTwo(long v)
Definition qmath.h:319
qreal qFastCos(qreal x)
Definition qmath.h:242
auto qLn(T v)
Definition qmath.h:160
constexpr float qRadiansToDegrees(float radians)
Definition qmath.h:273
constexpr long double qDegreesToRadians(long double degrees)
Definition qmath.h:262
constexpr double qRadiansToDegrees(double radians)
Definition qmath.h:278
auto qAsin(T v)
Definition qmath.h:70
auto qAtan2(T1 y, T2 x)
Definition qmath.h:82
auto qAcos(T v)
Definition qmath.h:64
#define M_2_SQRTPI
Definition qmath.h:221
#define M_SQRT2
Definition qmath.h:225
auto qSqrt(T v)
Definition qmath.h:88
auto qFabs(T v)
Definition qmath.h:40
#define M_LN2
Definition qmath.h:193
#define M_PI_2
Definition qmath.h:205
#define M_2_PI
Definition qmath.h:217
#define M_E
Definition qmath.h:181
#define M_LOG10E
Definition qmath.h:189
constexpr unsigned long qNextPowerOfTwo(unsigned long v)
Definition qmath.h:314
auto qPow(T1 x, T2 y)
Definition qmath.h:172
int qFloor(T v)
Definition qmath.h:34
#define M_LOG2E
Definition qmath.h:185
#define M_SQRT1_2
Definition qmath.h:229
auto qCos(T v)
Definition qmath.h:52
constexpr quint32 qNextPowerOfTwo(quint32 v)
Definition qmath.h:292
int qCeil(T v)
Definition qmath.h:28
auto qAtan(T v)
Definition qmath.h:76
#define M_PI
Definition qmath.h:201
constexpr double qDegreesToRadians(T degrees)
Definition qmath.h:268
auto qSin(T v)
Definition qmath.h:46
#define M_PI_4
Definition qmath.h:209
constexpr float qDegreesToRadians(float degrees)
Definition qmath.h:252
auto qExp(T v)
Definition qmath.h:166
auto qTan(T v)
Definition qmath.h:58
QScopedPointerObjectDeleteLater< QObject > QScopedPointerDeleteLater
constexpr size_t qHash(const QSize &s, size_t seed=0) noexcept
Definition qsize.h:192
#define MAKE_ADL_TEST(what)
Definition qspan.h:86
QSpan(const std::array< T, N > &) -> QSpan< const T, N >
#define QT_ONLY_IF_DYNAMIC_SPAN(DECL)
Definition qspan.h:443
QSpan(T(&)[N]) -> QSpan< T, N >
QSpan(std::array< T, N > &) -> QSpan< T, N >
@ LittleEndianness
@ DetectEndianness
@ BigEndianness
qregisteruint mask[Extent]
Definition qlocale_p.h:52
static constexpr int WordBits
Definition qlocale_p.h:50
static constexpr int MaxRange
Definition qlocale_p.h:51
constexpr auto maskLocation(uchar c) const noexcept
Definition qlocale_p.h:78
constexpr QCharacterSetMatch(std::string_view set) noexcept
Definition qlocale_p.h:54
constexpr bool matches(uchar c) const noexcept
Definition qlocale_p.h:63
static char16_t * convertToUnicode(char16_t *dst, QLatin1StringView in) noexcept
Definition qstring.cpp:5665
static QChar * convertToUnicode(QChar *dst, QByteArrayView in, QStringConverter::State *state) noexcept
static char * convertFromUnicode(char *out, QStringView in, QStringConverter::State *state) noexcept
static QChar * convertToUnicode(QChar *buffer, QLatin1StringView in) noexcept
static Q_CORE_EXPORT char * convertFromUnicode(char *out, QStringView in) noexcept
Definition qstring.cpp:5672
QStringView viewListEntry(const char16_t *table, qsizetype index) const
Definition qlocale_p.h:489
char32_t ucsFirst(const char16_t *table) const
Definition qlocale_p.h:493
QString getData(const char16_t *table) const
Definition qlocale_p.h:475
QString getListEntry(const char16_t *table, qsizetype index) const
Definition qlocale_p.h:485
QStringView viewData(const char16_t *table) const
Definition qlocale_p.h:481
void setZero(QStringView zero)
Definition qlocale_p.h:377
bool fractionalIsGroup() const
Definition qlocale_p.h:439
const GroupSizes & groupSizes() const
Definition qlocale_p.h:403
bool isValid(NumberMode mode) const
Definition qlocale_p.h:405
const GroupSizes grouping
Definition qlocale_p.h:371
qint8 digitValue(char32_t digit) const
Definition qlocale_p.h:418
QString positiveSign() const
Definition qlocale.cpp:1121
static float convertDoubleToFloat(double d, bool *ok)
Definition qlocale_p.h:339
QString groupSeparator() const
Definition qlocale.cpp:1080
QSimpleParsedNumber< qint64 > stringToLongLong(QStringView str, int base, QLocale::NumberOptions options) const
Definition qlocale.cpp:4925
Q_AUTOTEST_EXPORT char32_t zeroUcs() const
Definition qlocale.cpp:1100
quint8 m_grouping_least
Definition qlocale_p.h:572
QString zeroDigit() const
Definition qlocale.cpp:1095
bool numberToCLocale(QStringView s, QLocale::NumberOptions number_options, NumberMode mode, CharBuff *result) const
Definition qlocale.cpp:4651
quint8 m_grouping_higher
Definition qlocale_p.h:571
QString decimalPoint() const
Definition qlocale.cpp:1075
QString doubleToString(double d, int precision=-1, DoubleForm form=DFSignificantDigits, int width=-1, unsigned flags=NoFlags) const
Definition qlocale.cpp:4079
static Q_AUTOTEST_EXPORT bool allLocaleDataRows(bool(*check)(qsizetype, const QLocaleData &))
Definition qlocale.cpp:525
quint8 m_weekend_start
Definition qlocale_p.h:568
quint8 m_currency_digits
Definition qlocale_p.h:565
QLocaleId id() const
Definition qlocale_p.h:456
QString listSeparator() const
Definition qlocale.cpp:1090
static QSimpleParsedNumber< quint64 > bytearrayToUnsLongLong(QByteArrayView num, int base)
Definition qlocale.cpp:4972
QString percentSign() const
Definition qlocale.cpp:1085
@ BlankBeforePositive
Definition qlocale_p.h:270
@ AddTrailingZeroes
Definition qlocale_p.h:267
double stringToDouble(QStringView str, bool *ok, QLocale::NumberOptions options) const
Definition qlocale.cpp:4909
QString longLongToString(qint64 l, int precision=-1, int base=10, int width=-1, unsigned flags=NoFlags) const
Definition qlocale.cpp:4322
@ DoubleScientificMode
Definition qlocale_p.h:281
@ DoubleStandardMode
Definition qlocale_p.h:281
@ DFSignificantDigits
Definition qlocale_p.h:261
quint8 m_first_day_of_week
Definition qlocale_p.h:567
quint8 m_weekend_end
Definition qlocale_p.h:569
quint8 m_currency_rounding
Definition qlocale_p.h:566
QString exponentSeparator() const
Definition qlocale.cpp:1126
QString negativeSign() const
Definition qlocale.cpp:1116
QSimpleParsedNumber< quint64 > stringToUnsLongLong(QStringView str, int base, QLocale::NumberOptions options) const
Definition qlocale.cpp:4936
QString unsLongLongToString(quint64 l, int precision=-1, int base=10, int width=-1, unsigned flags=NoFlags) const
Definition qlocale.cpp:4337
quint8 m_grouping_first
Definition qlocale_p.h:570
QLocaleId withLikelySubtagsAdded() const noexcept
Definition qlocale.cpp:327
QLocaleId withLikelySubtagsRemoved() const noexcept
Definition qlocale.cpp:416
ushort script_id
Definition qlocale_p.h:242
bool operator==(QLocaleId other) const noexcept
Definition qlocale_p.h:211
bool matchesAll() const noexcept
Definition qlocale_p.h:220
bool isValid() const noexcept
Definition qlocale_p.h:215
bool operator!=(QLocaleId other) const noexcept
Definition qlocale_p.h:213
bool acceptScriptTerritory(QLocaleId other) const noexcept
Definition qlocale_p.h:231
ushort territory_id
Definition qlocale_p.h:242
bool acceptLanguage(quint16 lang) const noexcept
Definition qlocale_p.h:225
ushort language_id
Definition qlocale_p.h:242
static void cleanup(T *pointer) noexcept
void operator()(T *pointer) const noexcept
void operator()(T *pointer) const
static void cleanup(T *pointer)
void operator()(void *pointer) const noexcept
static void cleanup(void *pointer) noexcept
CurrencyToStringArgument(const QVariant &v, const QString &s)
Definition qlocale_p.h:138
static QChar * convertToUnicode(QChar *out, QByteArrayView, QStringConverter::State *state, DataEndianness endian)
static char * convertFromUnicode(char *out, QStringView in, QStringConverter::State *state, DataEndianness endian)
static char * convertFromUnicode(char *out, QStringView in, QStringConverter::State *state, DataEndianness endian)
static QChar * convertToUnicode(QChar *out, QByteArrayView, QStringConverter::State *state, DataEndianness endian)
static const bool skipAsciiHandling
static void appendByte(qchar8_t *&ptr, qchar8_t b)
static uchar peekByte(const uchar *ptr, qsizetype n=0)
static qptrdiff availableBytes(const qchar8_t *ptr, const qchar8_t *end)
static void appendByte(uchar *&ptr, uchar b)
static void advanceByte(const uchar *&ptr, qsizetype n=1)
static const bool isTrusted
static void appendUtf16(char32_t *&ptr, char16_t uc)
static const bool skipAsciiHandling
static char16_t peekUtf16(const char16_t *ptr, qsizetype n=0)
static const int Error
static void appendUcs4(char16_t *&ptr, char32_t uc)
static const int EndOfString
static void advanceUtf16(const char16_t *&ptr, qsizetype n=1)
static uchar peekByte(const char *ptr, qsizetype n=0)
static void advanceByte(const char *&ptr, qsizetype n=1)
static uchar peekByte(const qchar8_t *ptr, qsizetype n=0)
static void appendUtf16(char16_t *&ptr, char16_t uc)
static const bool allowNonCharacters
static qptrdiff availableUtf16(const char16_t *ptr, const char16_t *end)
static qptrdiff availableBytes(const char *ptr, const char *end)
static void appendUcs4(char32_t *&ptr, char32_t uc)
static qptrdiff availableBytes(const uchar *ptr, const uchar *end)
static void advanceByte(const qchar8_t *&ptr, qsizetype n=1)
static Q_CORE_EXPORT char16_t * convertToUnicode(char16_t *dst, QByteArrayView in) noexcept
static int compareUtf8(QByteArrayView utf8, QStringView utf16, Qt::CaseSensitivity cs=Qt::CaseSensitive) noexcept
static QChar * convertToUnicode(QChar *buffer, QByteArrayView in) noexcept
static ValidUtf8Result isValidUtf8(QByteArrayView in)
static QString convertToUnicode(QByteArrayView in)
static Q_CORE_EXPORT char * convertFromLatin1(char *out, QLatin1StringView in)
static char16_t * convertToUnicode(char16_t *dst, QByteArrayView in, QStringConverter::State *state)
static QChar * convertToUnicode(QChar *out, QByteArrayView in, QStringConverter::State *state)
static char * convertFromUnicode(char *out, QStringView in, QStringConverter::State *state)
static Q_CORE_EXPORT char * convertFromUnicode(char *dst, QStringView in) noexcept
decltype(std::hypot(R(1), F(1))) type
Definition qmath.h:96