Coverage Report

Created: 2026-04-01 07:24

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/qtbase/src/gui/util/qhexstring_p.h
Line
Count
Source
1
// Copyright (C) 2016 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
#include <QtGui/private/qtguiglobal_p.h>
6
#include <QtCore/qpoint.h>
7
#include <QtCore/qstring.h>
8
#include <QtGui/qpolygon.h>
9
#include <QtCore/qstringbuilder.h>
10
11
#ifndef QHEXSTRING_P_H
12
#define QHEXSTRING_P_H
13
14
//
15
//  W A R N I N G
16
//  -------------
17
//
18
// This file is not part of the Qt API.  It exists purely as an
19
// implementation detail.  This header file may change from version to
20
// version without notice, or even be removed.
21
//
22
// We mean it.
23
//
24
25
QT_BEGIN_NAMESPACE
26
27
// internal helper. Converts an integer value to a unique string token
28
template <typename T>
29
        struct HexString
30
{
31
    inline HexString(const T t)
32
0
        : val(t)
33
0
    {}
Unexecuted instantiation: HexString<unsigned int>::HexString(unsigned int)
Unexecuted instantiation: HexString<double>::HexString(double)
Unexecuted instantiation: HexString<int>::HexString(int)
Unexecuted instantiation: HexString<short>::HexString(short)
Unexecuted instantiation: HexString<unsigned long long>::HexString(unsigned long long)
Unexecuted instantiation: HexString<unsigned char>::HexString(unsigned char)
Unexecuted instantiation: HexString<unsigned short>::HexString(unsigned short)
34
35
    inline void write(QChar *&dest) const
36
0
    {
37
0
        const char16_t hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
38
0
        const char *c = reinterpret_cast<const char *>(&val);
39
0
        for (uint i = 0; i < sizeof(T); ++i) {
40
0
            *dest++ = hexChars[*c & 0xf];
41
0
            *dest++ = hexChars[(*c & 0xf0) >> 4];
42
0
            ++c;
43
0
        }
44
0
    }
Unexecuted instantiation: HexString<unsigned int>::write(QChar*&) const
Unexecuted instantiation: HexString<double>::write(QChar*&) const
Unexecuted instantiation: HexString<int>::write(QChar*&) const
Unexecuted instantiation: HexString<short>::write(QChar*&) const
Unexecuted instantiation: HexString<unsigned char>::write(QChar*&) const
Unexecuted instantiation: HexString<unsigned long long>::write(QChar*&) const
Unexecuted instantiation: HexString<unsigned short>::write(QChar*&) const
45
    const T val;
46
};
47
48
// specialization to enable fast concatenating of our string tokens to a string
49
template <typename T>
50
        struct QConcatenable<HexString<T> >
51
{
52
    typedef HexString<T> type;
53
    enum { ExactSize = true };
54
0
    static int size(const HexString<T> &) { return sizeof(T) * 2; }
Unexecuted instantiation: QConcatenable<HexString<unsigned int> >::size(HexString<unsigned int> const&)
Unexecuted instantiation: QConcatenable<HexString<double> >::size(HexString<double> const&)
Unexecuted instantiation: QConcatenable<HexString<int> >::size(HexString<int> const&)
Unexecuted instantiation: QConcatenable<HexString<short> >::size(HexString<short> const&)
Unexecuted instantiation: QConcatenable<HexString<unsigned char> >::size(HexString<unsigned char> const&)
Unexecuted instantiation: QConcatenable<HexString<unsigned long long> >::size(HexString<unsigned long long> const&)
Unexecuted instantiation: QConcatenable<HexString<unsigned short> >::size(HexString<unsigned short> const&)
55
0
    static inline void appendTo(const HexString<T> &str, QChar *&out) { str.write(out); }
Unexecuted instantiation: QConcatenable<HexString<unsigned int> >::appendTo(HexString<unsigned int> const&, QChar*&)
Unexecuted instantiation: QConcatenable<HexString<double> >::appendTo(HexString<double> const&, QChar*&)
Unexecuted instantiation: QConcatenable<HexString<int> >::appendTo(HexString<int> const&, QChar*&)
Unexecuted instantiation: QConcatenable<HexString<short> >::appendTo(HexString<short> const&, QChar*&)
Unexecuted instantiation: QConcatenable<HexString<unsigned char> >::appendTo(HexString<unsigned char> const&, QChar*&)
Unexecuted instantiation: QConcatenable<HexString<unsigned long long> >::appendTo(HexString<unsigned long long> const&, QChar*&)
Unexecuted instantiation: QConcatenable<HexString<unsigned short> >::appendTo(HexString<unsigned short> const&, QChar*&)
56
    typedef QString ConvertTo;
57
};
58
59
QT_END_NAMESPACE
60
61
#endif // QHEXSTRING_P_H