Advance Wayland and KDE package bring-up

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-14 10:51:06 +01:00
parent 51f3c21121
commit cf12defd28
15214 changed files with 20594243 additions and 269 deletions
@@ -0,0 +1,159 @@
/*
This file is part of the KDE libraries
SPDX-FileCopyrightText: 2008 Wang Hoi <zealot.hoi@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef KENCODINGPROBER_H
#define KENCODINGPROBER_H
// enable debug of private probers
// #define DEBUG_PROBE
#include <kcodecs_export.h>
#ifdef DEBUG_PROBE
#include <QDebug>
#endif
#include <QCoreApplication>
#include <QString>
#include <memory>
class KEncodingProberPrivate;
/**
* @class KEncodingProber kencodingprober.h KEncodingProber
*
* @short Provides encoding detection(probe) capabilities.
*
* Probe the encoding of raw data only.
* In the case it can't find it, return the most possible encoding it guessed.
*
* Always do Unicode probe regardless the ProberType
*
* Feed data to it several times with feed() until ProberState changes to FoundIt/NotMe,
* or confidence() returns a value you find acceptable.
*
* Intended lifetime of the object: one instance per ProberType.
*
* Typical use:
* \code
* QByteArray data, moredata;
* ...
* KEncodingProber prober(KEncodingProber::Chinese);
* prober.feed(data);
* prober.feed(moredata);
* if (prober.confidence() > 0.6)
* encoding = prober.encoding();
* \endcode
*
* At least 256 characters are needed to change the ProberState from Probing to FoundIt.
* If you don't have so many characters to probe,
* decide whether to accept the encoding it guessed so far according to the Confidence by yourself.
*
* @short Guess encoding of char array
*
*/
class KCODECS_EXPORT KEncodingProber
{
Q_DECLARE_TR_FUNCTIONS(KEncodingProber)
public:
enum ProberState {
FoundIt, /**< Sure find the encoding */
NotMe, /**< Sure not included in current ProberType's all supported encodings */
Probing, /**< Need more data to make a decision */
};
enum ProberType {
None,
Universal,
Arabic,
Baltic,
CentralEuropean,
ChineseSimplified,
ChineseTraditional,
Cyrillic,
Greek,
Hebrew,
Japanese,
Korean,
NorthernSaami,
Other,
SouthEasternEurope,
Thai,
Turkish,
Unicode,
WesternEuropean,
};
/**
* Default ProberType is Universal(detect all possible encodings)
*/
KEncodingProber(ProberType proberType = Universal);
~KEncodingProber();
KEncodingProber(const KEncodingProber &) = delete;
KEncodingProber &operator=(const KEncodingProber &) = delete;
/**
* reset the prober's internal state and data.
*/
void reset();
/**
* The main class method
*
* feed data to the prober
*
* @returns the ProberState after probing the fed data.
*/
ProberState feed(QByteArrayView data);
// for API compatibility
inline ProberState feed(const char *data, qsizetype len)
{
return feed({data, len});
}
/**
* @returns the prober's current ProberState
*
*/
ProberState state() const;
/**
* @returns a QByteArray with the name of the best encoding it has guessed so far
* @since 4.2.2
*/
QByteArray encoding() const;
/**
* @returns the confidence(sureness) of encoding it guessed so far (0.0 ~ 0.99), not very reliable for single byte encodings
*/
float confidence() const;
ProberType proberType() const;
/**
* change current prober's ProberType and reset the prober
*/
void setProberType(ProberType proberType);
/**
* @return the ProberType for lang (e.g. proberTypeForName("Chinese Simplified") will return KEncodingProber::ChineseSimplified
*/
static ProberType proberTypeForName(const QString &lang);
/**
* map ProberType to language string
*/
static QString nameForProberType(ProberType proberType);
private:
std::unique_ptr<KEncodingProberPrivate> const d;
};
#endif