QCborStreamReader Class
La classe QCborStreamReader est un simple décodeur de flux CBOR, fonctionnant sur QByteArray ou QIODevice. Plus....
| En-tête : | #include <QCborStreamReader> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
- Liste de tous les membres, y compris les membres hérités
- QCborStreamReader fait partie du support CBOR dans Qt.
Note : Toutes les fonctions de cette classe sont réentrantes.
Types publics
| struct | StringResult |
| enum | StringResultCode { EndOfString, Ok, Error } |
| enum | Type { UnsignedInteger, NegativeInteger, ByteArray, ByteString, String, …, Invalid } |
Fonctions publiques
| QCborStreamReader() | |
| QCborStreamReader(QIODevice *device) | |
| QCborStreamReader(const QByteArray &data) | |
| QCborStreamReader(const char *data, qsizetype len) | |
| QCborStreamReader(const quint8 *data, qsizetype len) | |
| ~QCborStreamReader() | |
| void | addData(const QByteArray &data) |
| void | addData(const char *data, qsizetype len) |
| void | addData(const quint8 *data, qsizetype len) |
| void | clear() |
| int | containerDepth() const |
| qint64 | currentOffset() const |
| qsizetype | currentStringChunkSize() const |
| QIODevice * | device() const |
| bool | enterContainer() |
| bool | hasNext() const |
| bool | isArray() const |
| bool | isBool() const |
| bool | isByteArray() const |
| bool | isContainer() const |
| bool | isDouble() const |
| bool | isFalse() const |
| bool | isFloat16() const |
| bool | isFloat() const |
| bool | isInteger() const |
| bool | isInvalid() const |
| bool | isLengthKnown() const |
| bool | isMap() const |
| bool | isNegativeInteger() const |
| bool | isNull() const |
| bool | isSimpleType() const |
| bool | isSimpleType(QCborSimpleType st) const |
| bool | isString() const |
| bool | isTag() const |
| bool | isTrue() const |
| bool | isUndefined() const |
| bool | isUnsignedInteger() const |
| bool | isValid() const |
| QCborError | lastError() const |
| bool | leaveContainer() |
| quint64 | length() const |
| bool | next(int maxRecursion = 10000) |
| QCborStreamReader::Type | parentContainerType() const |
(since 6.7) QByteArray | readAllByteArray() |
(since 6.7) QString | readAllString() |
(since 6.7) QByteArray | readAllUtf8String() |
(since 6.7) bool | readAndAppendToByteArray(QByteArray &dst) |
(since 6.7) bool | readAndAppendToString(QString &dst) |
(since 6.7) bool | readAndAppendToUtf8String(QByteArray &dst) |
| QCborStreamReader::StringResult<QByteArray> | readByteArray() |
| QCborStreamReader::StringResult<QString> | readString() |
| QCborStreamReader::StringResult<qsizetype> | readStringChunk(char *ptr, qsizetype maxlen) |
(since 6.7) QCborStreamReader::StringResult<QByteArray> | readUtf8String() |
| void | reparse() |
| void | reset() |
| void | setDevice(QIODevice *device) |
| bool | toBool() const |
| double | toDouble() const |
| qfloat16 | toFloat16() const |
| float | toFloat() const |
| qint64 | toInteger() const |
| QCborNegativeInteger | toNegativeInteger() const |
| QCborSimpleType | toSimpleType() const |
| QCborTag | toTag() const |
| quint64 | toUnsignedInteger() const |
| QCborStreamReader::Type | type() const |
Description détaillée
Cette classe peut être utilisée pour décoder un flux de contenu CBOR directement à partir d'un QByteArray ou d'un QIODevice. CBOR est la Représentation Binaire Concise des Objets, une forme très compacte d'encodage de données binaires qui est compatible avec JSON. Il a été créé par le groupe de travail Constrained RESTful Environments (CoRE) de l'IETF, qui l'a utilisé dans de nombreuses nouvelles RFC. Il est destiné à être utilisé parallèlement au protocole CoAP.
QCborStreamReader fournit une API de type StAX, similaire à celle de QXmlStreamReader. Son utilisation nécessite une certaine connaissance du codage CBOR. Pour une API plus simple, voir QCborValue et en particulier la fonction de décodage QCborValue::fromCbor().
Typiquement, on crée un QCborStreamReader en passant la source QByteArray ou QIODevice comme paramètre au constructeur, puis on extrait des éléments du flux s'il n'y a pas d'erreur de décodage. Il existe trois types de CBOR :
| Type | Type | Comportement |
|---|---|---|
| Largeur fixe | Entiers, balises, types simples, virgule flottante | La valeur est préparée par QCborStreamReader, les fonctions d'accès sont donc const. Doit appeler next() pour avancer. |
| Chaînes de caractères | Tableaux d'octets, Chaînes de texte | La longueur (si elle est connue) est pré-instruite, mais la chaîne elle-même ne l'est pas. Les fonctions d'accès ne sont pas constantes et peuvent allouer de la mémoire. Une fois appelées, les fonctions d'accès passent automatiquement à l'élément suivant. |
| Conteneurs | Tableaux, cartes | La longueur (si elle est connue) est analysée au préalable. Pour accéder aux éléments, vous devez appeler enterContainer(), lire tous les éléments, puis appeler leaveContainer(). Cette fonction passe à l'élément suivant. |
Une fonction de processeur ressemble donc typiquement à ceci :
void handleStream(QCborStreamReader &reader) { switch (reader.type()) { case QCborStreamReader::UnsignedInteger: case QCborStreamReader::NegativeInteger: case QCborStreamReader::SimpleType: case QCborStreamReader::Float16: case QCborStreamReader::Float: case QCborStreamReader::Double: handleFixedWidth(reader); reader.next(); break; case QCborStreamReader::ByteArray: case QCborStreamReader::String: handleString(reader); break; case QCborStreamReader::Array: case QCborStreamReader::Map: reader.enterContainer(); while (reader.lastError() == QCborError::NoError) handleStream(reader); if (reader.lastError() == QCborError::NoError) reader.leaveContainer(); } }
Support CBOR
Le tableau suivant répertorie les fonctionnalités CBOR supportées par QCborStreamReader.
| Fonctionnalité | Support |
|---|---|
| Nombres non signés | Oui (gamme complète) |
| Nombres négatifs | Oui (gamme complète) |
| Chaînes d'octets | Oui |
| Chaînes de texte | Oui |
| Chaînes groupées | Oui |
| Tags | Oui (arbitraire) |
| Booléens | Oui |
| Nul | Oui |
| Indéfini | Oui |
| Valeurs simples arbitraires | Oui |
| Flottant de demi-précision (16 bits) | Oui |
| Flotteur simple précision (32 bits) | Oui |
| Flottant double précision (64 bits) | Oui |
| Infinités et NaN en virgule flottante | Oui |
| Tableaux et cartes de longueur déterminée | Oui |
| Tableaux et cartes de longueur indéterminée | Oui |
| Types de clés de cartes autres que les chaînes de caractères et les entiers | Oui (arbitraire) |
Traitement des flux CBOR invalides ou incomplets
QCborStreamReader est capable de détecter lui-même les entrées corrompues. La bibliothèque qu'il utilise a été largement testée contre les entrées invalides de toutes sortes et est tout à fait capable de signaler les erreurs. Si une erreur est détectée, QCborStreamReader mettra lastError() à une valeur autre que QCborError::NoError, indiquant quelle situation a été détectée.
La plupart des erreurs détectées par QCborStreamReader au cours de l'analyse normale d'un élément ne sont pas récupérables. Le code utilisant QCborStreamReader peut choisir de traiter les données qui ont été correctement décodées ou il peut choisir de rejeter l'ensemble des données.
La seule erreur récupérable est QCborError::EndOfFile, qui indique que des données supplémentaires sont nécessaires pour terminer l'analyse. Cette situation est utile lorsque les données sont lues à partir d'une source asynchrone, telle qu'un tuyau (QProcess) ou une socket (QTcpSocket, QUdpSocket, QNetworkReply, etc.). Lorsque des données supplémentaires arrivent, le code environnant doit appeler soit addData(), s'il analyse à partir d'un QByteArray, soit reparse(), s'il lit directement l'appareil QIDO qui a maintenant plus de données disponibles (voir setDevice()).
Voir aussi QCborStreamWriter, QCborValue, QXmlStreamReader, Analyse et affichage des données CBOR, Convertisseur de sérialisation, et Sauvegarde et chargement d'un jeu.
Documentation sur les types de membres
enum QCborStreamReader::StringResultCode
Cette énumération est renvoyée par readString() et readByteArray() et est utilisée pour indiquer l'état de l'analyse.
| Constante | Valeur | Description |
|---|---|---|
QCborStreamReader::EndOfString | 0 | L'analyse de la chaîne est terminée, sans erreur. |
QCborStreamReader::Ok | 1 | La fonction a renvoyé des données ; il n'y a pas eu d'erreur. |
QCborStreamReader::Error | -1 | L'analyse s'est soldée par une erreur. |
enum QCborStreamReader::Type
Cette énumération contient tous les types CBOR possibles, tels qu'ils sont décodés par QCborStreamReader. CBOR a 7 types principaux, plus un certain nombre de types simples sans valeur, et des valeurs à virgule flottante.
| Constante | Valeur | Description de la constante |
|---|---|---|
QCborStreamReader::UnsignedInteger | 0x00 | (Type majeur 0) Comprend de 0 à264 - 1 (18,446,744,073,709,551,616) |
QCborStreamReader::NegativeInteger | 0x20 | (Type majeur 1) Plages de -1 à -264 (-18,446,744,073,709,551,616) |
QCborStreamReader::ByteArray | ByteString | (Type majeur 2) Données binaires arbitraires. |
QCborStreamReader::ByteString | 0x40 | Un alias de ByteArray. |
QCborStreamReader::String | TextString | (Type majeur 3) Texte Unicode, pouvant contenir des NUL. |
QCborStreamReader::TextString | 0x60 | Un alias de String |
QCborStreamReader::Array | 0x80 | (Type majeur 4) Tableau d'éléments hétérogènes. |
QCborStreamReader::Map | 0xa0 | (Type majeur 5) Carte/dictionnaire d'éléments hétérogènes. |
QCborStreamReader::Tag | 0xc0 | (Type majeur 6) Chiffres donnant une valeur sémantique supplémentaire aux éléments génériques du CBOR. Voir QCborTag pour plus d'informations. |
QCborStreamReader::SimpleType | 0xe0 | (Type majeur 7) Types n'ayant aucune autre valeur. Comprend les booléens (vrai et faux), null, undefined. |
QCborStreamReader::Float16 | HalfFloat | Virgule flottante de demi-précision IEEE 754 (qfloat16). |
QCborStreamReader::HalfFloat | 0xf9 | Un alias de Float16. |
QCborStreamReader::Float | 0xfa | IEEE 754 en virgule flottante simple précision (float). |
QCborStreamReader::Double | 0xfb | IEEE 754 double précision en virgule flottante (double). |
QCborStreamReader::Invalid | 0xff | Type non valide, soit en raison d'une erreur d'analyse, soit parce que la fin d'un tableau ou d'une carte est atteinte. |
Documentation des fonctions membres
QCborStreamReader::QCborStreamReader()
Crée un objet QCborStreamReader sans données source. Après la construction, QCborStreamReader signalera une erreur d'analyse.
Vous pouvez ajouter des données en appelant addData() ou en définissant un périphérique source différent en utilisant setDevice().
Voir aussi addData() et isValid().
[explicit] QCborStreamReader::QCborStreamReader(QIODevice *device)
Crée un objet QCborStreamReader qui analysera le flux CBOR trouvé en lisant sur device. QCborStreamReader ne prend pas possession de device, il doit donc rester valide jusqu'à ce que cet objet soit détruit.
Il s'agit d'une fonction surchargée.
[explicit] QCborStreamReader::QCborStreamReader(const QByteArray &data)
Crée un objet QCborStreamReader qui analysera le flux CBOR trouvé dans data.
Il s'agit d'une fonction surchargée.
QCborStreamReader::QCborStreamReader(const char *data, qsizetype len)
Crée un objet QCborStreamReader avec len octets de données commençant à data. Le pointeur doit rester valide jusqu'à ce que QCborStreamReader soit détruit.
Il s'agit d'une fonction surchargée.
QCborStreamReader::QCborStreamReader(const quint8 *data, qsizetype len)
Crée un objet QCborStreamReader avec len octets de données commençant à data. Le pointeur doit rester valide jusqu'à ce que QCborStreamReader soit détruit.
Il s'agit d'une fonction surchargée.
[noexcept] QCborStreamReader::~QCborStreamReader()
Détruit l'objet QCborStreamReader et libère les ressources associées.
void QCborStreamReader::addData(const QByteArray &data)
Ajoute data au flux CBOR et répare l'élément actuel. Cette fonction est utile si la fin des données a été atteinte précédemment lors du traitement du flux, mais que d'autres données sont maintenant disponibles.
void QCborStreamReader::addData(const char *data, qsizetype len)
Ajoute len octets de données commençant à data au flux CBOR et répare l'élément actuel. Cette fonction est utile si la fin des données a été atteinte précédemment lors du traitement du flux, mais que d'autres données sont maintenant disponibles.
Il s'agit d'une fonction surchargée.
void QCborStreamReader::addData(const quint8 *data, qsizetype len)
Ajoute len octets de données commençant à data au flux CBOR et répare l'élément actuel. Cette fonction est utile si la fin des données a été atteinte précédemment lors du traitement du flux, mais que d'autres données sont maintenant disponibles.
Il s'agit d'une fonction surchargée.
void QCborStreamReader::clear()
Efface l'état du décodeur et réinitialise les données source d'entrée à un tableau d'octets vide. Après l'appel de cette fonction, QCborStreamReader indique une erreur d'analyse.
Appelez addData() pour ajouter des données à analyser.
Voir aussi reset() et setDevice().
int QCborStreamReader::containerDepth() const
Renvoie le nombre de conteneurs dans lesquels ce flux est entré avec enterContainer() mais qu'il n'a pas encore quittés.
Voir aussi enterContainer() et leaveContainer().
qint64 QCborStreamReader::currentOffset() const
Renvoie le décalage dans le flux d'entrée de l'élément en cours de décodage. Le décalage actuel est le nombre d'octets décodés jusqu'à présent, uniquement si les données sources sont des QByteArray ou s'il s'agit d'un QIODevice qui était positionné à son début lorsque le décodage a commencé.
Voir aussi reset(), clear() et device().
qsizetype QCborStreamReader::currentStringChunkSize() const
Renvoie la taille du morceau de texte ou de chaîne d'octets en cours. Si le flux CBOR contient une chaîne non fragmentée (c'est-à-dire si isLengthKnown() renvoie true), cette fonction renvoie la taille de la chaîne entière, comme length().
Cette fonction est utile pour pré-allouer le tampon dont le pointeur peut être transmis à readStringChunk() ultérieurement.
Voir aussi readString(), readByteArray() et readStringChunk().
QIODevice *QCborStreamReader::device() const
Renvoie l'objet QIODevice qui a été défini avec setDevice() ou le constructeur QCborStreamReader. Si cet objet a été lu à partir d'un QByteArray, cette fonction renvoie nullptr à la place.
Voir aussi setDevice().
bool QCborStreamReader::enterContainer()
Entre dans le tableau ou la carte qui est l'élément courant et prépare l'itération des éléments contenus dans le conteneur. Retourne true si l'entrée dans le conteneur a réussi, false dans le cas contraire (généralement, une erreur d'analyse). Chaque appel à enterContainer() doit être associé à un appel à leaveContainer().
Cette fonction ne peut être appelée que si l'élément courant est un tableau ou une carte (c'est-à-dire si isArray(), isMap() ou isContainer() est vrai). L'appeler dans toute autre condition est une erreur.
Voir aussi leaveContainer(), isContainer(), isArray() et isMap().
[noexcept] bool QCborStreamReader::hasNext() const
Retourne true s'il y a d'autres éléments à décoder dans le conteneur actuel ou false si nous avons atteint la fin du conteneur. Si nous analysons l'élément racine, hasNext() retournant false indique que l'analyse est terminée ; sinon, si la profondeur du conteneur est non nulle, le code extérieur doit appeler leaveContainer().
Voir aussi parentContainerType(), containerDepth() et leaveContainer().
bool QCborStreamReader::isArray() const
Retourne vrai si le type de l'élément courant est un tableau (c'est-à-dire si type() renvoie QCborStreamReader::Array). Si cette fonction renvoie vrai, vous pouvez appeler enterContainer() pour commencer à analyser ce conteneur.
Lorsque l'élément courant est un tableau, vous pouvez également appeler isLengthKnown() pour savoir si la taille du tableau est explicite dans le flux CBOR. Si c'est le cas, cette taille peut être obtenue en appelant length().
L'exemple suivant pré-alloue un QVariantList en fonction de la taille du tableau pour un décodage plus efficace :
QVariantList populateFromCbor(QCborStreamReader &reader) { QVariantList list; if (reader.isLengthKnown()) list.reserve(reader.length()); reader.enterContainer(); while (reader.lastError() == QCborError::NoError && reader.hasNext()) list.append(readOneElement(reader)); if (reader.lastError() == QCborError::NoError) reader.leaveContainer(); return list; }
Remarque : le code ci-dessus ne vérifie pas que la longueur est une valeur raisonnable. Si le flux d'entrée indique que la longueur est de 1 milliard d'éléments, la fonction ci-dessus essaiera d'allouer 16 Go ou plus de RAM, ce qui peut entraîner un plantage.
Voir aussi type(), isMap(), isLengthKnown(), length(), enterContainer(), et leaveContainer().
bool QCborStreamReader::isBool() const
Retourne vrai si l'élément courant est une valeur booléenne (true ou false), faux s'il s'agit d'une autre valeur. Si cette fonction retourne true, vous pouvez appeler toBool() pour récupérer la valeur du booléen. Vous pouvez également appeler toSimpleType() et comparer à QCborSimpleValue::True ou QCborSimpleValue::False.
Voir aussi type(), isFalse(), isTrue(), toBool(), isSimpleType(), et toSimpleType().
bool QCborStreamReader::isByteArray() const
Retourne vrai si le type de l'élément courant est un tableau d'octets (c'est-à-dire si type() retourne QCborStreamReader::ByteArray). Si cette fonction renvoie un résultat positif, vous pouvez appeler readByteArray() pour lire ces données.
Voir aussi type(), readByteArray() et isString().
bool QCborStreamReader::isContainer() const
Retourne true si l'élément courant est un conteneur (c'est-à-dire un tableau ou une carte), false s'il s'agit d'autre chose. Si l'élément courant est un conteneur, la fonction isLengthKnown() peut être utilisée pour savoir si la taille du conteneur est explicite dans le flux et, si c'est le cas, length() peut être utilisée pour obtenir cette taille.
Plus important encore, pour un conteneur, la fonction enterContainer() est disponible pour commencer à parcourir les éléments qu'il contient.
Voir également type(), isArray(), isMap(), isLengthKnown(), length(), enterContainer(), leaveContainer() et containerDepth().
bool QCborStreamReader::isDouble() const
Retourne vrai si le type de l'élément courant est une virgule flottante double précision IEEE 754 (c'est-à-dire si type() renvoie QCborStreamReader::Double). Si cette fonction renvoie un résultat positif, vous pouvez appeler toDouble() pour lire ces données.
Voir aussi type(), toDouble(), isFloat16() et isFloat().
bool QCborStreamReader::isFalse() const
Retourne true si l'élément courant est la valeur false, false s'il s'agit d'une autre valeur.
Voir aussi type(), isTrue(), isBool(), toBool(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isFloat16() const
Retourne vrai si le type de l'élément courant est une virgule flottante IEEE 754 en demi-précision (c'est-à-dire si type() renvoie QCborStreamReader::Float16). Si cette fonction renvoie un résultat positif, vous pouvez appeler toFloat16() pour lire ces données.
Voir aussi type(), toFloat16(), isFloat() et isDouble().
bool QCborStreamReader::isFloat() const
Retourne vrai si le type de l'élément courant est une virgule flottante IEEE 754 à simple précision (c'est-à-dire si type() renvoie QCborStreamReader::Float). Si cette fonction renvoie un résultat positif, vous pouvez appeler toFloat() pour lire ces données.
Voir aussi type(), toFloat(), isFloat16() et isDouble().
bool QCborStreamReader::isInteger() const
Retourne vrai si le type de l'élément courant est un entier non signé ou un entier négatif (c'est-à-dire si type() renvoie QCborStreamReader::UnsignedInteger ou QCborStreamReader::NegativeInteger). Si cette fonction renvoie un résultat positif, vous pouvez appeler toInteger() pour lire cette valeur.
Voir aussi type(), toInteger(), toUnsignedInteger(), toNegativeInteger(), isUnsignedInteger() et isNegativeInteger().
bool QCborStreamReader::isInvalid() const
Retourne true si l'élément courant est invalide, false sinon. L'élément courant peut être invalide s'il y a eu une erreur de décodage ou si nous venons d'analyser le dernier élément d'un tableau ou d'une carte.
Note : Cette fonction ne doit pas être confondue avec isNull(). Null est un type CBOR normal qui doit être géré par l'application.
Voir aussi type() et isValid().
[noexcept] bool QCborStreamReader::isLengthKnown() const
Retourne true si la longueur du tableau, de la carte, du tableau d'octets ou de la chaîne de caractères est connue (explicite dans le flux CBOR), false dans le cas contraire. Cette fonction ne doit être appelée que si l'élément est l'un de ceux-là.
Si la longueur est connue, elle peut être obtenue en appelant length().
Si la longueur d'une carte ou d'un tableau n'est pas connue, elle est impliquée par le nombre d'éléments présents dans le flux. QCborStreamReader n'a pas d'API pour calculer la longueur dans ce cas.
Les chaînes et les tableaux d'octets peuvent également avoir une longueur indéterminée (c'est-à-dire qu'ils peuvent être transmis en plusieurs morceaux). Ils ne peuvent actuellement pas être créés avec QCborStreamWriter, mais ils pourraient l'être avec d'autres encodeurs, c'est pourquoi QCborStreamReader les prend en charge.
Voir aussi length(), QCborStreamWriter::startArray(), et QCborStreamWriter::startMap().
bool QCborStreamReader::isMap() const
Retourne vrai si le type de l'élément courant est une carte (c'est-à-dire si type() renvoie QCborStreamReader::Map). Si cette fonction renvoie un résultat positif, vous pouvez appeler enterContainer() pour commencer à analyser ce conteneur.
Lorsque l'élément courant est une carte, vous pouvez également appeler isLengthKnown() pour savoir si la taille de la carte est explicite dans le flux CBOR. Si c'est le cas, cette taille peut être obtenue en appelant length().
L'exemple suivant pré-attribue une adresse QVariantMap en fonction de la taille de la carte pour un décodage plus efficace :
QVariantMap populateFromCbor(QCborStreamReader &reader) { QVariantMap map; if (reader.isLengthKnown()) map = setMapLength(map, reader.length()); reader.enterContainer(); while (reader.lastError() == QCborError::NoError && reader.hasNext()) { QString key = readElementAsString(reader); map.insert(key, readOneElement(reader)); } if (reader.lastError() == QCborError::NoError) reader.leaveContainer(); return map; }
L'exemple ci-dessus utilise une fonction appelée readElementAsString pour lire les clés de la carte et obtenir une chaîne de caractères. En effet, les cartes CBOR peuvent contenir n'importe quel type de clé, et pas seulement des chaînes de caractères. Le code utilisateur doit soit effectuer cette conversion, soit rejeter les clés qui ne sont pas des chaînes, soit utiliser un autre conteneur que QVariantMap et QVariantHash. Par exemple, si la carte doit contenir des clés de type entier, ce qui est recommandé car cela réduit la taille du flux et l'analyse, le conteneur correct serait \l{QMap}<int, QVariant> ou \l{QHash}<int, QVariant>.
Remarque : le code ci-dessus ne vérifie pas que la longueur est une valeur raisonnable. Si le flux d'entrée indique que la longueur est de 1 milliard d'éléments, la fonction ci-dessus essaiera d'allouer 24 Go ou plus de RAM, ce qui peut entraîner un plantage.
Voir aussi type(), isArray(), isLengthKnown(), length(), enterContainer(), et leaveContainer().
bool QCborStreamReader::isNegativeInteger() const
Retourne vrai si le type de l'élément courant est un entier négatif (c'est-à-dire si type() retourne QCborStreamReader::NegativeInteger). Si cette fonction renvoie un résultat positif, vous pouvez appeler toNegativeInteger() ou toInteger() pour lire cette valeur.
Voir aussi type(), toNegativeInteger(), toInteger(), isInteger() et isUnsignedInteger().
bool QCborStreamReader::isNull() const
Retourne true si l'élément courant est la valeur null, false s'il s'agit d'une autre valeur. Les valeurs nulles peuvent être utilisées pour indiquer l'absence de certaines données facultatives.
Remarque : cette fonction n'est pas l'inverse de isValid(). Une valeur nulle est une valeur CBOR valide.
Voir également type(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isSimpleType() const
Retourne vrai si le type de l'élément courant est un type simple CBOR, y compris une valeur booléenne (true et false) ainsi que null et undefined. Pour savoir de quel type simple il s'agit, appelez toSimpleType(). Pour tester un type simple spécifique, appelez la surcharge qui prend un paramètre QCborSimpleType.
Les types simples CBOR sont des types qui ne comportent pas de valeur supplémentaire. Il y a 255 possibilités, mais il n'y a actuellement que quatre valeurs qui ont une signification définie. Le code n'est pas censé gérer les types simples inconnus et peut simplement rejeter le flux comme invalide s'il en trouve un inconnu.
Voir aussi QCborSimpleType, type(), isSimpleType(QCborSimpleType), et toSimpleType().
bool QCborStreamReader::isSimpleType(QCborSimpleType st) const
Retourne true si le type de l'élément courant est le type simple st, false sinon. Si cette fonction retourne vrai, alors toSimpleType() retournera st.
Les types simples CBOR sont des types qui ne comportent pas de valeur supplémentaire. Il y a 255 possibilités, mais il n'y a actuellement que quatre valeurs qui ont une signification définie. Le code n'est pas censé gérer les types simples inconnus et peut simplement rejeter le flux comme invalide s'il en trouve un inconnu.
Voir aussi QCborSimpleType, type(), isSimpleType(), et toSimpleType().
bool QCborStreamReader::isString() const
Renvoie un résultat positif si le type de l'élément actuel est une chaîne de texte (c'est-à-dire si type() renvoie QCborStreamReader::String). Si cette fonction renvoie un résultat positif, vous pouvez appeler readString() pour lire ces données.
Voir aussi type(), readString() et isByteArray().
bool QCborStreamReader::isTag() const
Renvoie un résultat positif si le type de l'élément actuel est une balise CBOR (c'est-à-dire si type() renvoie QCborStreamReader::Tag). Si cette fonction renvoie un résultat positif, vous pouvez appeler toTag() pour lire ces données.
Voir également type() et toTag().
bool QCborStreamReader::isTrue() const
Retourne true si l'élément courant est la valeur true, false s'il s'agit d'une autre valeur.
Voir aussi type(), isFalse(), isBool(), toBool(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isUndefined() const
Retourne true si l'élément courant est la valeur undefined, false s'il s'agit d'une autre valeur. Les valeurs indéfinies peuvent être codées pour indiquer qu'une conversion a échoué ou n'était pas possible lors de la création du flux. QCborStreamReader n'effectue jamais de remplacement et cette fonction ne renverra true que si le flux contient une valeur indéfinie explicite.
Voir aussi type(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isUnsignedInteger() const
Retourne vrai si le type de l'élément courant est un entier non signé (c'est-à-dire si type() retourne QCborStreamReader::UnsignedInteger). Si cette fonction renvoie un résultat positif, vous pouvez appeler toUnsignedInteger() ou toInteger() pour lire cette valeur.
Voir aussi type(), toUnsignedInteger(), toInteger(), isInteger() et isNegativeInteger().
bool QCborStreamReader::isValid() const
Retourne true si l'élément courant est valide, false sinon. L'élément courant peut être invalide s'il y a eu une erreur de décodage ou si nous venons d'analyser le dernier élément d'un tableau ou d'une carte.
Note : Cette fonction n'est pas l'opposé de isNull(). Null est un type CBOR normal qui doit être géré par l'application.
Voir aussi type() et isInvalid().
QCborError QCborStreamReader::lastError() const
Renvoie la dernière erreur de décodage du flux, le cas échéant. Si aucune erreur n'a été rencontrée, il renvoie une adresse QCborError::NoError.
Voir aussi isValid().
bool QCborStreamReader::leaveContainer()
Quitte le tableau ou la carte dont les éléments étaient en cours de traitement et positionne le décodeur sur l'élément suivant après la fin du conteneur. Retourne true si la sortie du conteneur a réussi, false dans le cas contraire (généralement, une erreur d'analyse). Chaque appel à enterContainer() doit être associé à un appel à leaveContainer().
Cette fonction ne peut être appelée que si hasNext() a retourné false et que containerDepth() est différent de zéro. L'appeler dans toute autre condition est une erreur.
Voir aussi enterContainer(), parentContainerType() et containerDepth().
quint64 QCborStreamReader::length() const
Renvoie la longueur de la chaîne ou du tableau d'octets, ou le nombre d'éléments dans un tableau ou le nombre de paires d'éléments dans une carte, s'il est connu. Cette fonction ne doit pas être appelée si la longueur est inconnue (c'est-à-dire si isLengthKnown() a retourné false). C'est une erreur et cela entraînera l'arrêt de l'analyse du flux d'entrée par QCborStreamReader.
Voir aussi isLengthKnown(), QCborStreamWriter::startArray() et QCborStreamWriter::startMap().
bool QCborStreamReader::next(int maxRecursion = 10000)
Avance le flux CBOR en décodant un élément. Vous devriez généralement appeler cette fonction lors de l'analyse d'éléments de base de largeur fixe (c'est-à-dire les entiers, les valeurs simples, les balises et les valeurs à virgule flottante). Mais cette fonction peut être appelée lorsque l'élément courant est une chaîne de caractères, un tableau ou une carte et elle passera sur l'ensemble de l'élément, y compris tous les éléments contenus.
Cette fonction renvoie true si l'avancement a réussi, false dans le cas contraire. Elle peut échouer si le flux est corrompu, incomplet ou si le niveau d'imbrication des tableaux et des cartes dépasse maxRecursion. L'appel à cette fonction lorsque hasNext() a retourné false est également une erreur. Si cette fonction renvoie un message faux, lastError() renverra le code d'erreur précisant la nature de l'échec.
Voir également lastError(), isValid() et hasNext().
QCborStreamReader::Type QCborStreamReader::parentContainerType() const
Renvoie QCborStreamReader::Array ou QCborStreamReader::Map, indiquant si le conteneur qui contient l'élément courant était un tableau ou une carte, respectivement. Si nous sommes en train d'analyser l'élément racine, cette fonction renvoie QCborStreamReader::Invalid.
Voir également containerDepth() et enterContainer().
[since 6.7] QByteArray QCborStreamReader::readAllByteArray()
Décode la chaîne d'octets actuelle et la renvoie. Si la chaîne est découpée en morceaux, cette fonction passe en revue tous les morceaux et les concatène. En cas d'erreur, cette fonction renvoie un QByteArray() construit par défaut, mais qui peut ne pas être distingué de certaines chaînes d'octets vides. Vérifiez plutôt lastError() pour déterminer si une erreur s'est produite.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de chaînes de caractères. Par conséquent, elle ne peut être appelée que si isByteArray() est vrai ; l'appeler dans toute autre condition est une erreur.
Remarque : cette fonction ne peut pas être reprise. En d'autres termes, cette fonction ne doit pas être utilisée dans des contextes où les données CBOR peuvent encore être reçues, par exemple à partir d'une socket ou d'un pipe. Elle ne doit être utilisée que lorsque les données complètes ont déjà été reçues et sont disponibles dans l'entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi readByteArray(), readStringChunk(), isByteArray(), et readAllString().
[since 6.7] QString QCborStreamReader::readAllString()
Décode la chaîne de texte actuelle et la renvoie. Si la chaîne est découpée en morceaux, cette fonction passe en revue tous les morceaux et les concatène. En cas d'erreur, cette fonction renvoie une QString() construite par défaut, mais qui peut ne pas être distinguée de certaines chaînes de texte vides. Vérifiez plutôt lastError() pour déterminer si une erreur s'est produite.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de tableaux d'octets. Par conséquent, elle ne peut être appelée que si isString() a retourné true ; l'appeler dans toute autre condition est une erreur.
Remarque : cette fonction ne peut pas être reprise. En d'autres termes, cette fonction ne doit pas être utilisée dans des contextes où les données CBOR peuvent encore être reçues, par exemple à partir d'un socket ou d'un pipe. Elle ne doit être utilisée que lorsque les données complètes ont déjà été reçues et sont disponibles dans l'entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi readString(), readStringChunk(), isString(), et readAllByteArray().
[since 6.7] QByteArray QCborStreamReader::readAllUtf8String()
Décode la chaîne de texte actuelle et la renvoie. Si la chaîne est découpée en morceaux, cette fonction passe en revue tous les morceaux et les concatène. En cas d'erreur, cette fonction renvoie une QString() construite par défaut, mais qui peut ne pas être distinguée de certaines chaînes de texte vides. Vérifiez plutôt lastError() pour déterminer si une erreur s'est produite.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de tableaux d'octets. Par conséquent, elle ne peut être appelée que si isString() a retourné true ; l'appeler dans toute autre condition est une erreur.
Remarque : cette fonction ne peut pas être reprise. En d'autres termes, cette fonction ne doit pas être utilisée dans des contextes où les données CBOR peuvent encore être reçues, par exemple à partir d'un socket ou d'un pipe. Elle ne doit être utilisée que lorsque les données complètes ont déjà été reçues et sont disponibles dans l'entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi readString(), readStringChunk(), isString(), et readAllByteArray().
[since 6.7] bool QCborStreamReader::readAndAppendToByteArray(QByteArray &dst)
Décode la chaîne d'octets actuelle et l'ajoute à dst. Si la chaîne est découpée en morceaux, cette fonction passe en revue tous les morceaux et les concatène. Si une erreur survient pendant le décodage, d'autres morceaux qui auraient pu être décodés avec succès peuvent néanmoins avoir été écrits sur dst. Retourne true si le décodage s'est déroulé sans erreur, false dans le cas contraire.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de chaînes de caractères. Par conséquent, elle ne peut être appelée que si isByteArray() est vrai ; l'appeler dans toute autre condition est une erreur.
Remarque : cette fonction ne peut pas être reprise. En d'autres termes, cette fonction ne doit pas être utilisée dans des contextes où les données CBOR peuvent encore être reçues, par exemple à partir d'une socket ou d'un pipe. Elle ne doit être utilisée que lorsque les données complètes ont déjà été reçues et sont disponibles dans l'entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi readByteArray(), readStringChunk(), isByteArray(), et readAndAppendToString().
[since 6.7] bool QCborStreamReader::readAndAppendToString(QString &dst)
Décode la chaîne de texte actuelle et l'ajoute à dst. Si la chaîne est divisée en morceaux, cette fonction passe en revue tous les morceaux et les concatène. Si une erreur survient pendant le décodage, d'autres morceaux qui auraient pu être décodés avec succès peuvent néanmoins avoir été écrits sur dst. Retourne true si le décodage s'est déroulé sans erreur, false dans le cas contraire.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de tableaux d'octets. Par conséquent, elle ne peut être appelée que si isString() a retourné true ; l'appeler dans toute autre condition est une erreur.
Remarque : cette fonction ne peut pas être reprise. En d'autres termes, cette fonction ne doit pas être utilisée dans des contextes où les données CBOR peuvent encore être reçues, par exemple à partir d'un socket ou d'un pipe. Elle ne doit être utilisée que lorsque les données complètes ont déjà été reçues et sont disponibles dans l'entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi readString(), readStringChunk(), isString(), et readAndAppendToByteArray().
[since 6.7] bool QCborStreamReader::readAndAppendToUtf8String(QByteArray &dst)
Décode la chaîne de texte actuelle et l'ajoute à dst. Si la chaîne est divisée en morceaux, cette fonction passe en revue tous les morceaux et les concatène. Si une erreur survient pendant le décodage, d'autres morceaux qui auraient pu être décodés avec succès peuvent néanmoins avoir été écrits sur dst. Retourne true si le décodage s'est déroulé sans erreur, false dans le cas contraire.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de tableaux d'octets. Par conséquent, elle ne peut être appelée que si isString() a retourné true ; l'appeler dans toute autre condition est une erreur.
Remarque : cette fonction ne peut pas être reprise. En d'autres termes, cette fonction ne doit pas être utilisée dans des contextes où les données CBOR peuvent encore être reçues, par exemple à partir d'un socket ou d'un pipe. Elle ne doit être utilisée que lorsque les données complètes ont déjà été reçues et sont disponibles dans l'entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi readString(), readStringChunk(), isString(), et readAndAppendToByteArray().
QCborStreamReader::StringResult<QByteArray> QCborStreamReader::readByteArray()
Décode un morceau de tableau d'octets à partir de la chaîne CBOR et le renvoie. Cette fonction est utilisée à la fois pour les contenus normaux et les contenus groupés, de sorte que l'appelant doit toujours appeler cette fonction en boucle, même si isLengthKnown() est vrai. L'utilisation typique de cette fonction est la suivante :
QByteArray decodeBytearray(QCborStreamReader &reader) { QByteArray result; auto r = reader.readByteArray(); while (r.status == QCborStreamReader::Ok) { result += r.data; r = reader.readByteArray(); } if (r.status == QCborStreamReader::Error) { // handle error condition result.clear(); } return result; }
La fonction readAllByteArray() implémente la boucle ci-dessus et quelques vérifications supplémentaires.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de chaînes de caractères. Par conséquent, elle ne peut être appelée que si isByteArray() est vrai ; l'appeler dans toute autre condition est une erreur.
Voir aussi readAllByteArray(), readString(), isByteArray() et readStringChunk().
QCborStreamReader::StringResult<QString> QCborStreamReader::readString()
Décode un morceau de chaîne à partir de la chaîne CBOR et le renvoie. Cette fonction est utilisée à la fois pour les contenus de chaînes de caractères normales et groupées, de sorte que l'appelant doit toujours appeler cette fonction en boucle, même si isLengthKnown() est vrai. L'utilisation typique de cette fonction est la suivante :
QString decodeString(QCborStreamReader &reader) { QString result; auto r = reader.readString(); while (r.status == QCborStreamReader::Ok) { result += r.data; r = reader.readString(); } if (r.status == QCborStreamReader::Error) { // handle error condition result.clear(); } return result; }
La fonction readAllString() implémente la boucle ci-dessus et quelques vérifications supplémentaires.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de tableaux d'octets. Par conséquent, elle ne peut être appelée que si isString() a retourné true ; l'appeler dans toute autre condition est une erreur.
Voir aussi readAllString(), readByteArray(), isString() et readStringChunk().
QCborStreamReader::StringResult<qsizetype> QCborStreamReader::readStringChunk(char *ptr, qsizetype maxlen)
Lit le morceau de chaîne en cours dans le tampon pointé par ptr, dont la taille est maxlen. Cette fonction renvoie un objet StringResult, le nombre d'octets copiés dans ptr étant enregistré dans le membre \l StringResult::data . Le membre \l StringResult::status indique s'il y a eu une erreur de lecture de la chaîne, si des données ont été copiées ou s'il s'agit du dernier morceau.
Cette fonction peut être appelée pour les types String et ByteArray. Pour ces derniers, cette fonction lira les mêmes données que celles que readByteArray() aurait renvoyées. Pour les chaînes de caractères, elle renvoie l'équivalent UTF-8 de QString qui aurait été renvoyé.
Cette fonction est généralement utilisée avec currentStringChunkSize() dans une boucle. Par exemple, cette fonction est utilisée avec () dans une boucle :
QCborStreamReader::StringResult<qsizetype> result; do { qsizetype size = reader.currentStringChunkSize(); qsizetype oldsize = buffer.size(); buffer.resize(oldsize + size); result = reader.readStringChunk(buffer.data() + oldsize, size); } while (result.status == QCborStreamReader::Ok);
Contrairement à readByteArray() et readString(), cette fonction n'est pas limitée par les limites d'implémentation de QByteArray et QString.
Remarque : cette fonction ne vérifie pas que le contenu UTF-8 est correctement formaté. Cela signifie que cette fonction ne produit pas l'erreur QCborError::InvalidUtf8String, même si readString() la produit.
Voir aussi currentStringChunkSize(), readString(), readByteArray(), isString() et isByteArray().
[since 6.7] QCborStreamReader::StringResult<QByteArray> QCborStreamReader::readUtf8String()
Décode un morceau de chaîne à partir de la chaîne CBOR et le renvoie. Cette fonction est utilisée à la fois pour les contenus de chaînes de caractères normales et groupées, de sorte que l'appelant doit toujours boucler en appelant cette fonction, même si isLengthKnown() est vrai. L'utilisation typique de cette fonction est la même que celle de readString() dans ce qui suit :
QString decodeString(QCborStreamReader &reader) { QString result; auto r = reader.readString(); while (r.status == QCborStreamReader::Ok) { result += r.data; r = reader.readString(); } if (r.status == QCborStreamReader::Error) { // handle error condition result.clear(); } return result; }
La fonction readAllUtf8String() met en œuvre la boucle ci-dessus et quelques vérifications supplémentaires.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'entiers ou de tableaux d'octets. Par conséquent, elle ne peut être appelée que si isString() a retourné true ; l'appeler dans toute autre condition est une erreur.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi readAllString(), readByteArray(), isString(), et readStringChunk().
void QCborStreamReader::reparse()
Répare l'élément actuel. Cette fonction doit être appelée lorsque des données supplémentaires sont disponibles dans la source QIODevice après que l'analyse syntaxique a échoué parce que la fin des données d'entrée a été atteinte avant la fin du flux CBOR.
Lors de la lecture d'un QByteArray(), la fonction addData() appelle automatiquement cette fonction. L'appeler lorsque la lecture n'a pas échoué est un non-sens.
void QCborStreamReader::reset()
Réinitialise la source au début et efface l'état du décodeur. Si les données sources étaient un QByteArray, QCborStreamReader recommencera à partir du début du tableau.
Si les données source sont un QIODevice, cette fonction appellera QIODevice::reset(), qui cherchera la position de l'octet 0. Si le flux CBOR n'est pas trouvé au début du périphérique (par exemple, au début d'un fichier), cette fonction fera probablement la mauvaise chose. Au lieu de cela, positionnez le QIODevice au bon décalage et appelez setDevice().
Voir aussi clear() et setDevice().
void QCborStreamReader::setDevice(QIODevice *device)
Définit la source des données à device, en réinitialisant le décodeur à son état initial.
Voir aussi device().
bool QCborStreamReader::toBool() const
Renvoie la valeur booléenne de l'élément courant.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'un nombre entier. Par conséquent, elle ne peut être appelée que si isTrue(), isFalse() ou isBool() a retourné true ; l'appeler dans toute autre condition est une erreur.
Voir aussi isBool(), isTrue(), isFalse() et toInteger().
double QCborStreamReader::toDouble() const
Renvoie la valeur en virgule flottante double précision de 64 bits de l'élément actuel.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'autres types de virgule flottante ou de valeurs entières. Par conséquent, elle ne peut être appelée que si isDouble() est vrai ; l'appeler dans toute autre condition est une erreur.
Voir également isDouble(), toFloat16() et toFloat().
qfloat16 QCborStreamReader::toFloat16() const
Renvoie la valeur en virgule flottante 16 bits en demi-précision de l'élément courant.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'autres types de virgule flottante ou de valeurs entières. Par conséquent, elle ne peut être appelée que si isFloat16() est vrai ; l'appeler dans toute autre condition est une erreur.
Voir également isFloat16(), toFloat() et toDouble().
float QCborStreamReader::toFloat() const
Renvoie la valeur en virgule flottante 32 bits à simple précision de l'élément actuel.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'autres types de virgule flottante ou de valeurs entières. Par conséquent, elle ne peut être appelée que si isFloat() est vrai ; l'appeler dans toute autre condition est une erreur.
Voir également isFloat(), toFloat16() et toDouble().
qint64 QCborStreamReader::toInteger() const
Renvoie la valeur entière de l'élément courant, qu'elle soit négative, positive ou nulle. Si la valeur est supérieure à263 - 1 ou inférieure à -263, la valeur retournée débordera et aura un signe incorrect. Si vous devez traiter ces valeurs, utilisez plutôt toUnsignedInteger() ou toNegativeInteger().
Cette fonction n'effectue aucune conversion de type, y compris à partir d'une balise booléenne ou CBOR. Par conséquent, elle ne peut être appelée que si isInteger() est vrai ; l'appeler dans toute autre condition est une erreur.
Voir aussi isInteger(), toUnsignedInteger() et toNegativeInteger().
QCborNegativeInteger QCborStreamReader::toNegativeInteger() const
Renvoie la valeur entière négative de l'élément courant. QCborNegativeValue est un entier non signé de 64 bits contenant la valeur absolue du nombre négatif qui a été stocké dans le flux CBOR. En outre, QCborNegativeValue(0) représente le nombre -264.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'une balise booléenne ou CBOR. Par conséquent, elle ne peut être appelée que si isNegativeInteger() est vrai ; l'appeler dans toute autre condition est une erreur.
Cette fonction peut être utilisée pour obtenir des nombres au-delà de la plage du type de retour de toInteger(). Toutefois, l'utilisation de nombres négatifs inférieurs à -263 est fortement déconseillée.
Voir aussi type(), toInteger(), isNegativeInteger() et isUnsignedInteger().
QCborSimpleType QCborStreamReader::toSimpleType() const
Renvoie la valeur du type simple actuel.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'un entier. Par conséquent, elle ne peut être appelée que si isSimpleType() est vrai ; l'appeler dans toute autre condition est une erreur.
Voir aussi isSimpleType(), isTrue(), isFalse(), isBool(), isNull() et isUndefined().
QCborTag QCborStreamReader::toTag() const
Renvoie la valeur de la balise de l'élément courant.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'un nombre entier. Par conséquent, elle ne peut être appelée que si isTag() est vrai ; l'appeler dans toute autre condition est une erreur.
Les balises sont des nombres de 64 bits attachés aux types génériques CBOR qui leur donnent une signification supplémentaire. Pour une liste des balises connues, voir l'énumération QCborKnownTags.
Voir également isTag(), toInteger() et QCborKnownTags.
quint64 QCborStreamReader::toUnsignedInteger() const
Renvoie la valeur entière non signée de l'élément courant.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'une balise booléenne ou CBOR. Par conséquent, elle ne peut être appelée que si isUnsignedInteger() est vrai ; l'appeler dans toute autre condition est une erreur.
Cette fonction peut être utilisée pour obtenir des nombres au-delà de la plage du type de retour de toInteger().
Voir aussi type(), toInteger(), isUnsignedInteger() et isNegativeInteger().
QCborStreamReader::Type QCborStreamReader::type() const
Renvoie le type de l'élément courant. Il s'agit de l'un des types valides ou de Invalid.
Voir aussi isValid(), isUnsignedInteger(), isNegativeInteger(), isInteger(), isByteArray(), isString(), isArray(), isMap(), isTag(), isSimpleType(), isBool(), isFalse(), isTrue(), isNull(), isUndefined(), isFloat16(), isFloat(), et isDouble().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.