QCborStreamReader Class
La classe QCborStreamReader est un décodeur de flux CBOR simple, fonctionnant soit sur un fichier de type « QByteArray », soit sur un fichier de type « QIODevice ». En savoir 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.
Remarque : 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(const QCborStreamReader &) | |
| ~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 |
| QCborStreamReader & | operator=(const QCborStreamReader &) |
Description détaillée
Cette classe permet de décoder un flux de contenu CBOR directement à partir d’un objet ` QByteArray ` ou d’un objet ` QIODevice`. CBOR (Concise Binary Object Representation) est un format de codage de données binaires très compact, 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é avec le protocole CoAP.
QCborStreamReader fournit une API de type StAX, similaire à celle de QXmlStreamReader. Son utilisation nécessite quelques connaissances en matière d’encodage CBOR. Pour une API plus simple, consultez QCborValue et en particulier la fonction de décodage QCborValue::fromCbor().
En général, on crée un objet QCborStreamReader en passant la source QByteArray ou QIODevice en paramètre au constructeur, puis on extrait les éléments du flux si le décodage s’est déroulé sans erreur. Il existe trois types de données CBOR :
| Type | Types | Comportement |
|---|---|---|
| Largeur fixe | Entiers, balises, types simples, nombres à virgule flottante | La valeur est pré-analysée par QCborStreamReader ; les fonctions d'accès sont donc const. Il faut appeler next() pour passer à la ligne suivante. |
| Chaînes | Tableaux d’octets, chaînes de texte | La longueur (si elle est connue) est pré-analysée, mais pas la chaîne elle-même. Les fonctions d'accès ne sont pas de type const 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 pré-analysée. 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 traitement se présente donc généralement comme suit :
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();
}
}Prise en charge de CBOR
Le tableau suivant répertorie les fonctionnalités CBOR prises en charge par QCborStreamReader.
| Fonctionnalité | Prise en charge |
|---|---|
| Nombres non signés | Oui (plage complète) |
| Nombres négatifs | Oui (plage complète) |
| Chaînes d'octets | Oui |
| Chaînes de texte | Oui |
| Chaînes fragmentées | Oui |
| Balises | Oui (arbitraires) |
| Valeurs booléennes | Oui |
| Null | Oui |
| Non défini | Oui |
| Valeurs simples arbitraires | Oui |
| Nombre à virgule flottante demi-précision (16 bits) | Oui |
| Nombre à virgule flottante simple précision (32 bits) | Oui |
| Nombre à virgule flottante double précision (64 bits) | Oui |
| Infinis 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 table autres que les chaînes de caractères et les entiers | Oui (arbitraire) |
Gestion des flux CBOR invalides ou incomplets
QCborStreamReader est capable de détecter de lui-même les données d'entrée corrompues. La bibliothèque qu'il utilise a fait l'objet de tests approfondis face à tout type de données d'entrée non valides et est tout à fait capable de signaler les erreurs. Si une erreur est détectée, QCborStreamReader attribuera à la méthode ` lastError()` une valeur autre que ` QCborError::NoError`, indiquant ainsi la situation détectée.
La plupart des erreurs détectées par QCborStreamReader lors de l’analyse normale des éléments 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 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 tube (`QProcess`) ou un socket (`QTcpSocket`, ` QUdpSocket`, ` QNetworkReply`, etc.). Lorsque de nouvelles données arrivent, le code environnant doit appeler soit ` addData()`, s’il s’agit d’un analyseur provenant d’un ` QByteArray`, soit ` reparse()`, s’il s’agit plutôt d’une lecture directe depuis un `QIDOevice` qui dispose désormais de nouvelles données (voir ` setDevice()`).
Voir également QCborStreamWriter, QCborValue, QXmlStreamReader, Analyse et affichage des données CBOR, Convertisseur de sérialisation, ainsi que Sauvegarde et chargement d’une partie.
Documentation sur les types de membres
enum QCborStreamReader::StringResultCode
Cette énumération est renvoyée par les méthodes readString() et readByteArray() et sert à indiquer l'état de l'analyse syntaxique.
| 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 ; aucune erreur n’est survenue. |
QCborStreamReader::Error | -1 | L'analyse a échoué en raison d'une erreur. |
enum QCborStreamReader::Type
Cette énumération contient tous les types CBOR possibles, tels qu'ils sont décodés par QCborStreamReader. Le CBOR comporte 7 types principaux, auxquels s'ajoutent un certain nombre de types simples ne portant aucune valeur, ainsi que des valeurs à virgule flottante.
| Constante | Valeur | Description |
|---|---|---|
QCborStreamReader::UnsignedInteger | 0x00 | (Type principal 0) Va de 0 à264 - 1 (18 446 744 073 709 551 616) |
QCborStreamReader::NegativeInteger | 0x20 | (Type principal 1) Va de -1 à-264 (-18 446 744 073 709 551 616) |
QCborStreamReader::ByteArray | ByteString | (Type principal 2) Données binaires arbitraires. |
QCborStreamReader::ByteString | 0x40 | Alias de ByteArray. |
QCborStreamReader::String | TextString | (Type principal 3) Texte Unicode, pouvant contenir des caractères NUL. |
QCborStreamReader::TextString | 0x60 | Un alias de String |
QCborStreamReader::Array | 0x80 | (Type principal 4) Tableau d'éléments hétérogènes. |
QCborStreamReader::Map | 0xa0 | (Type principal 5) Carte/dictionnaire d'éléments hétérogènes. |
QCborStreamReader::Tag | 0xc0 | (Type majeur 6) Nombres conférant une valeur sémantique supplémentaire aux éléments CBOR génériques. Voir QCborTag pour plus d’informations. |
QCborStreamReader::SimpleType | 0xe0 | (Type principal 7) Types ne portant aucune valeur supplémentaire. Comprend les booléens (vrai et faux), null, indéfini. |
QCborStreamReader::Float16 | HalfFloat | Nombre à virgule flottante demi-précision IEEE 754 (qfloat16). |
QCborStreamReader::HalfFloat | 0xf9 | Alias de Float16. |
QCborStreamReader::Float | 0xfa | Nombre à virgule flottante simple précision IEEE 754 (float). |
QCborStreamReader::Double | 0xfb | Nombre à virgule flottante double précision IEEE 754 (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 a été atteinte. |
Documentation des fonctions membres
QCborStreamReader::QCborStreamReader()
Crée un objet QCborStreamReader sans données source. Une fois instancié, QCborStreamReader signalera une erreur d'analyse.
Vous pouvez ajouter des données supplémentaires en appelant la méthode ` addData()` ou en définissant un autre périphérique source à l'aide de la méthode ` setDevice()`.
Voir également addData() et isValid().
[explicit] QCborStreamReader::QCborStreamReader(QIODevice *device)
Crée un objet `QCborStreamReader` qui analysera le flux CBOR obtenu en lisant le fichier ` device`. `QCborStreamReader` ne prend pas possession du fichier ` device` ; celui-ci doit donc rester valide jusqu’à la destruction de cet objet.
Il s'agit d'une fonction surchargée.
[explicit] QCborStreamReader::QCborStreamReader(const QByteArray &data)
Crée un objet QCborStreamReader qui analysera le flux CBOR disponible à l'adresse data.
Il s'agit d'une fonction surchargée.
QCborStreamReader::QCborStreamReader(const char *data, qsizetype len)
Crée un objet QCborStreamReader contenant len octets de données à partir de l'adresse data. Le pointeur doit rester valide jusqu'à la destruction de l'objet QCborStreamReader.
Il s'agit d'une fonction surchargée.
QCborStreamReader::QCborStreamReader(const quint8 *data, qsizetype len)
Crée un objet QCborStreamReader contenant len octets de données à partir de l'adresse data. Le pointeur doit rester valide jusqu'à la destruction de l'objet QCborStreamReader.
Il s'agit d'une fonction surchargée.
[delete] QCborStreamReader::QCborStreamReader(const QCborStreamReader &)
Copie et construit une instance de ` QCborStreamReader`. Cette fonction est supprimée.
[noexcept] QCborStreamReader::~QCborStreamReader()
Détruit cet objet ` QCborStreamReader ` et libère toutes les ressources associées.
void QCborStreamReader::addData(const QByteArray &data)
Ajoute un élément « data » au flux CBOR et réanalyse l'élément actuel. Cette fonction est utile lorsque la fin des données a déjà été atteinte lors du traitement du flux, mais que de nouvelles données sont désormais disponibles.
void QCborStreamReader::addData(const char *data, qsizetype len)
Ajoute len octets de données, à partir de l'adresse data, au flux CBOR et réanalyse l'élément courant. Cette fonction est utile si la fin des données avait été atteinte auparavant lors du traitement du flux, mais que des données supplémentaires sont désormais disponibles.
Il s'agit d'une fonction surchargée.
void QCborStreamReader::addData(const quint8 *data, qsizetype len)
Ajoute len octets de données, à partir de l'adresse data, au flux CBOR et réanalyse l'élément actuel. Cette fonction est utile si la fin des données avait été atteinte auparavant lors du traitement du flux, mais que des données supplémentaires sont désormais disponibles.
Il s'agit d'une fonction surchargée.
void QCborStreamReader::clear()
Efface l'état du décodeur et réinitialise les données de la source d'entrée en un tableau d'octets vide. Une fois cette fonction appelée, ` QCborStreamReader ` indiquera une erreur d'analyse.
Appelez addData() pour ajouter d'autres données à analyser.
Voir également ` reset()` et ` setDevice()`.
int QCborStreamReader::containerDepth() const
Renvoie le nombre de conteneurs dans lesquels ce flux est entré via la fonction enterContainer() mais qu'il n'a pas encore quittés.
Voir également ` enterContainer()` et ` leaveContainer()`.
qint64 QCborStreamReader::currentOffset() const
Renvoie l'offset dans le flux d'entrée de l'élément en cours de décodage. L'offset actuel correspond au nombre d'octets décodés jusqu'à présent uniquement si les données source sont un « QByteArray » ou un « QIODevice » dont la position a été placée au début lors du démarrage du décodage.
Voir également reset(), clear() et device().
qsizetype QCborStreamReader::currentStringChunkSize() const
Renvoie la taille du bloc de texte ou de chaîne d'octets actuel. Si le flux CBOR contient une chaîne non segmentée (c'est-à-dire si la fonction ` isLengthKnown()` renvoie ` true`), cette fonction renvoie la taille de la chaîne entière, à l'instar de la fonction ` length()`.
Cette fonction est utile pour préallouer le tampon dont le pointeur pourra être transmis ultérieurement à readStringChunk().
Voir également readString(), readByteArray() et readStringChunk().
QIODevice *QCborStreamReader::device() const
Renvoie l'objet ` QIODevice ` qui a été créé à l'aide de la fonction ` setDevice()` ou du constructeur ` QCborStreamReader `. Si cet objet effectuait une lecture à partir d'un ` QByteArray`, cette fonction renvoie alors `nullptr`.
Voir également ` setDevice()`.
bool QCborStreamReader::enterContainer()
Accède au tableau ou à la carte qui constitue l’élément actuel et prépare l’itération sur les éléments contenus dans le conteneur. Renvoie « true » si l’accès au conteneur a réussi, « false » dans le cas contraire (généralement en cas d’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() renvoie « true »). L’appeler dans toute autre condition génère une erreur.
Voir également leaveContainer(), isContainer(), isArray() et isMap().
[noexcept] bool QCborStreamReader::hasNext() const
Renvoie « true » s'il reste des éléments à décoder dans le conteneur actuel, ou « false » si l'on a atteint la fin de celui-ci. Si l'on analyse l'élément racine, le fait que `hasNext()` renvoie « false » indique que l'analyse est terminée ; dans le cas contraire, si la profondeur du conteneur est différente de zéro, le code externe doit alors appeler ` leaveContainer()`.
Voir également parentContainerType(), containerDepth() et leaveContainer().
bool QCborStreamReader::isArray() const
Renvoie « true » si le type de l'élément courant est un tableau (c'est-à-dire si la fonction ` type()` renvoie « QCborStreamReader::Array »). Si cette fonction renvoie « true », vous pouvez appeler la fonction ` enterContainer()` pour commencer l'analyse de ce conteneur.
Lorsque l'élément courant est un tableau, vous pouvez également appeler isLengthKnown() pour déterminer si la taille du tableau est explicitement indiquée 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 soit une valeur raisonnable. Si le flux d'entrée indique que la longueur est de 1 milliard d'éléments, la fonction ci-dessus tentera d'allouer environ 16 Go, voire plus, de mémoire vive, ce qui peut entraîner un plantage.
Voir également type(), isMap(), isLengthKnown(), length(), enterContainer() et leaveContainer().
bool QCborStreamReader::isBool() const
Renvoie « true » si l'élément courant est une valeur booléenne (true ou false), et « false » dans tous les autres cas. Si cette fonction renvoie « true », vous pouvez appeler toBool() pour récupérer la valeur de la variable booléenne. Vous pouvez également appeler toSimpleType() et comparer le résultat à QCborSimpleValue::True ou à QCborSimpleValue::False.
Voir également type(), isFalse(), isTrue(), toBool(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isByteArray() const
Renvoie « true » si le type de l'élément courant est un tableau d'octets (c'est-à-dire si type() renvoie QCborStreamReader::ByteArray). Si cette fonction renvoie « true », vous pouvez appeler readByteArray() pour lire ces données.
Voir également type(), readByteArray() et isString().
bool QCborStreamReader::isContainer() const
Renvoie « true » si l'élément courant est un conteneur (c'est-à-dire un tableau ou une carte), « false » dans le cas contraire. Si l'élément courant est un conteneur, la fonction ` isLengthKnown()` peut être utilisée pour déterminer si la taille du conteneur est explicitement indiquée dans le flux et, le cas échéant, la fonction ` length()` permet d'obtenir cette taille.
Plus important encore, pour un conteneur, la fonction ` enterContainer()` permet de commencer à parcourir les éléments qu’il contient.
Voir également type(), isArray(), isMap(), isLengthKnown(), length(), enterContainer(), leaveContainer() et containerDepth().
bool QCborStreamReader::isDouble() const
Renvoie « true » si le type de l'élément courant est un nombre à virgule flottante double précision IEEE 754 (c'est-à-dire si type() renvoie QCborStreamReader::Double). Si cette fonction renvoie « true », vous pouvez appeler toDouble() pour lire ces données.
Voir également type(), toDouble(), isFloat16() et isFloat().
bool QCborStreamReader::isFalse() const
Renvoie « true » si l'élément actuel correspond à la valeur « false », et « false » dans le cas contraire.
Voir également type(), isTrue(), isBool(), toBool(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isFloat16() const
Renvoie `true` si le type de l'élément courant est un nombre à virgule flottante demi-précision IEEE 754 (c'est-à-dire si ` type()` renvoie ` QCborStreamReader::Float16`). Si cette fonction renvoie `true`, vous pouvez appeler ` toFloat16()` pour lire ces données.
Voir également type(), toFloat16(), isFloat() et isDouble().
bool QCborStreamReader::isFloat() const
Renvoie « true » si le type de l'élément courant est un nombre à virgule flottante en simple précision IEEE 754 (c'est-à-dire si type() renvoie QCborStreamReader::Float). Si cette fonction renvoie « true », vous pouvez appeler toFloat() pour lire ces données.
Voir également type(), toFloat(), isFloat16() et isDouble().
bool QCborStreamReader::isInteger() const
Renvoie « true » si le type de l'élément courant est soit un entier non signé, soit un entier négatif (c'est-à-dire si la fonction type() renvoie QCborStreamReader::UnsignedInteger ou QCborStreamReader::NegativeInteger). Si cette fonction renvoie « true », vous pouvez appeler la fonction toInteger() pour lire cette valeur.
Voir également type(), toInteger(), toUnsignedInteger(), toNegativeInteger(), isUnsignedInteger() et isNegativeInteger().
bool QCborStreamReader::isInvalid() const
Renvoie « true » si l'élément actuel n'est pas valide, « false » dans le cas contraire. L'élément actuel peut ne pas être valide s'il y a eu une erreur de décodage ou si l'on vient d'analyser le dernier élément d'un tableau ou d'une carte.
Remarque : cette fonction ne doit pas être confondue avec isNull(). Null est un type CBOR normal qui doit être géré par l'application.
Voir également type() et isValid().
[noexcept] bool QCborStreamReader::isLengthKnown() const
Renvoie « true » si la longueur du tableau, de la carte, du tableau d'octets ou de la chaîne de caractères actuel(le) 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-ci.
Si la longueur est connue, elle peut être obtenue en appelant ` length()`.
Si la longueur d’une table ou d’un tableau n’est pas connue, elle est déduite du nombre d’éléments présents dans le flux. QCborStreamReader ne dispose d’aucune API permettant de calculer la longueur dans cette situation.
Les chaînes de caractères et les tableaux d’octets peuvent également avoir une longueur indéterminée (c’est-à-dire qu’ils peuvent être transmis en plusieurs blocs). Ceux-ci 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 également length(), QCborStreamWriter::startArray() et QCborStreamWriter::startMap().
bool QCborStreamReader::isMap() const
Renvoie « true » si le type de l'élément courant est une carte (c'est-à-dire si la fonction ` type()` renvoie ` QCborStreamReader::Map`). Si cette fonction renvoie « true », vous pouvez appeler la fonction ` enterContainer()` pour commencer l'analyse de ce conteneur.
Lorsque l'élément courant est une table, vous pouvez également appeler isLengthKnown() pour savoir si la taille de la table est explicitement indiquée dans le flux CBOR. Si c'est le cas, cette taille peut être obtenue en appelant length().
L’exemple suivant pré-alloue un ` 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 données comme clés, 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 de caractères, soit utiliser un autre conteneur qu’ QVariantMap et QVariantHash. Par exemple, si la carte est censée contenir des clés de type entier (ce qui est recommandé car cela réduit la taille du flux et le travail d’analyse), le conteneur approprié serait \l{QMap}<int, QVariant> ou \l{QHash}<int, QVariant>.
Remarque : le code ci-dessus ne vérifie pas que la longueur soit une valeur raisonnable. Si le flux d’entrée indique que la longueur est de 1 milliard d’éléments, la fonction ci-dessus tentera d’allouer environ 24 Go ou plus de mémoire vive, ce qui peut entraîner un plantage.
Voir également type(), isArray(), isLengthKnown(), length(), enterContainer() et leaveContainer().
bool QCborStreamReader::isNegativeInteger() const
Renvoie « true » si le type de l'élément actuel est un entier négatif (c'est-à-dire si type() renvoie QCborStreamReader::NegativeInteger). Si cette fonction renvoie « true », vous pouvez appeler toNegativeInteger() ou toInteger() pour lire cette valeur.
Voir également type(), toNegativeInteger(), toInteger(), isInteger() et isUnsignedInteger().
bool QCborStreamReader::isNull() const
Renvoie « true » si l'élément courant correspond à la valeur « null », et « false » dans le cas contraire. Les valeurs nulles peuvent être utilisées pour indiquer l'absence de certaines données facultatives.
Remarque : cette fonction n’est pas l’opposé de ` isValid()`. Une valeur `Null` est une valeur CBOR valide.
Voir également type(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isSimpleType() const
Renvoie « true » 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 déterminer de quel type simple il s’agit, appelez la méthode ` toSimpleType()`. Sinon, pour vérifier la présence d’un type simple spécifique, appelez la surcharge qui prend un paramètre de type « QCborSimpleType ».
Les types simples CBOR sont des types qui ne portent pas de valeur supplémentaire. Il existe 255 possibilités, mais seules quatre valeurs ont actuellement une signification définie. Le code n’est pas censé gérer les types simples inconnus et peut simplement rejeter le flux comme non valide s’il en rencontre un inconnu.
Voir également QCborSimpleType, type(), isSimpleType(QCborSimpleType) et toSimpleType().
bool QCborStreamReader::isSimpleType(QCborSimpleType st) const
Renvoie « true » si le type de l’élément courant est un type simple st, « false » dans le cas contraire. Si cette fonction renvoie « true », alors toSimpleType() renverra st.
Les types simples CBOR sont des types qui ne comportent pas de valeur supplémentaire. Il existe 255 possibilités, mais seules quatre valeurs ont actuellement une signification définie. Le code n’est pas censé gérer les types simples inconnus et peut simplement rejeter le flux comme non valide s’il en rencontre un inconnu.
Voir également QCborSimpleType, type(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isString() const
Renvoie « true » 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 « true », vous pouvez appeler readString() pour lire ces données.
Voir également type(), readString() et isByteArray().
bool QCborStreamReader::isTag() const
Renvoie « true » si le type de l'élément actuel est une balise CBOR (c'est-à-dire si type() renvoie QCborStreamReader::Tag). Si cette fonction renvoie « true », vous pouvez appeler toTag() pour lire ces données.
Voir également type() et toTag().
bool QCborStreamReader::isTrue() const
Renvoie « true » si l'élément courant correspond à la valeur « true », et « false » dans le cas contraire.
Voir également type(), isFalse(), isBool(), toBool(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isUndefined() const
Renvoie « true » si l'élément courant correspond à la valeur « undefined », et « false » dans tous les autres cas. Les valeurs indéfinies peuvent être encodées pour indiquer qu'une conversion a échoué ou n'a pas pu être effectuée lors de la création du flux. QCborStreamReader n'effectue jamais de remplacement et cette fonction ne renvoie « true » que si le flux contient une valeur indéfinie explicite.
Voir également type(), isSimpleType() et toSimpleType().
bool QCborStreamReader::isUnsignedInteger() const
Renvoie « true » si le type de l'élément courant est un entier non signé (c'est-à-dire si type() renvoie QCborStreamReader::UnsignedInteger). Si cette fonction renvoie « true », vous pouvez appeler toUnsignedInteger() ou toInteger() pour lire cette valeur.
Voir également type(), toUnsignedInteger(), toInteger(), isInteger() et isNegativeInteger().
bool QCborStreamReader::isValid() const
Renvoie « true » si l'élément courant est valide, « false » dans le cas contraire. L'élément courant peut être invalide s'il y a eu une erreur de décodage ou si l'on vient d'analyser le dernier élément d'un tableau ou d'une carte.
Remarque : cette fonction n'est pas l'opposé de isNull(). Null est un type CBOR normal qui doit être géré par l'application.
Voir également type() et isInvalid().
QCborError QCborStreamReader::lastError() const
Renvoie la dernière erreur survenue lors du décodage du flux, le cas échéant. Si aucune erreur n'a été détectée, cette fonction renvoie un objet ` QCborError::NoError`.
Voir également ` 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. Renvoie « 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 renvoyé « false » et si containerDepth() n’est pas égal à zéro. L’appeler dans toute autre condition constitue une erreur.
Voir également 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 d'un tableau, ou encore le nombre de paires d'éléments d'une carte, si ces informations sont connues. Cette fonction ne doit pas être appelée si la longueur est inconnue (c'est-à-dire si la fonction isLengthKnown() a renvoyé la valeur false). Cela constitue une erreur et entraînera l’arrêt de l’analyse du flux d’entrée par QCborStreamReader.
Voir également isLengthKnown(), QCborStreamWriter::startArray() et QCborStreamWriter::startMap().
bool QCborStreamReader::next(int maxRecursion = 10000)
Fait avancer le décodage du flux CBOR d’un élément. Vous devriez généralement appeler cette fonction lors de l’analyse d’éléments de base à largeur fixe (c’est-à-dire les entiers, les valeurs simples, les balises et les valeurs à virgule flottante). Cependant, cette fonction peut également être appelée lorsque l’élément actuel est une chaîne, un tableau ou une carte ; dans ce cas, elle ignorera l’intégralité de cet élément, y compris tous les éléments qu’il contient.
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 de cette fonction lorsque hasNext() a renvoyé `false` constitue également une erreur. Si cette fonction renvoie `false`, lastError() renverra le code d’erreur détaillant la nature de l’échec.
Voir également lastError(), isValid() et hasNext().
QCborStreamReader::Type QCborStreamReader::parentContainerType() const
Renvoie soit ` QCborStreamReader::Array `, soit ` QCborStreamReader::Map`, indiquant respectivement si le conteneur renfermant l'élément courant était un tableau ou une carte. Si l'on est 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 courante et la renvoie. Si la chaîne est fragmentée, cette fonction parcourt tous les fragments et les concatène. En cas d'erreur, cette fonction renvoie un QByteArray() construit par défaut, mais celui-ci peut être impossible à distinguer de certaines chaînes d'octets vides. Il convient donc de vérifier la valeur de 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 constitue une erreur.
Remarque : cette fonction ne peut pas être reprise. Autrement dit, elle ne doit pas être utilisée dans des contextes où des données CBOR sont encore susceptibles d’être reçues, par exemple depuis un socket ou un tube. Elle ne doit être utilisée que lorsque toutes les données 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 également 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 fragmentée, cette fonction parcourt tous les fragments et les concatène. En cas d’erreur, cette fonction renvoie un objet QString() construit par défaut, mais celui-ci peut être impossible à distinguer de certaines chaînes de texte vides. Il est donc préférable de vérifier la méthode 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 doit être appelée que si la fonction isString() a renvoyé la valeur true ; l’appeler dans toute autre condition constitue une erreur.
Remarque : cette fonction ne peut pas être interrompue. Autrement dit, elle ne doit pas être utilisée dans des contextes où des données CBOR pourraient encore être reçues, par exemple depuis un socket ou un tube. Elle ne doit être utilisée que lorsque l’intégralité des données a déjà été reçue et est disponible dans l’entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir également 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 fragmentée, cette fonction parcourt tous les fragments et les concatène. En cas d’erreur, cette fonction renvoie un objet QString() construit par défaut, mais celui-ci peut être impossible à distinguer de certaines chaînes de texte vides. Il est donc préférable de vérifier la méthode 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 doit être appelée que si la fonction isString() a renvoyé la valeur true ; l’appeler dans toute autre condition constitue une erreur.
Remarque : cette fonction ne peut pas être reprise. Autrement dit, elle ne doit pas être utilisée dans des contextes où des données CBOR sont encore susceptibles d’être reçues, par exemple depuis un socket ou un tube. Elle ne doit être utilisée que lorsque toutes les données ont déjà été reçues et sont disponibles dans les paramètres d’entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir également readString(), readStringChunk(), isString() et readAllByteArray().
[since 6.7] bool QCborStreamReader::readAndAppendToByteArray(QByteArray &dst)
Décode la chaîne d’octets courante et l’ajoute à ` dst`. Si la chaîne est fragmentée, cette fonction parcourt tous les fragments et les concatène. Si une erreur survient pendant le décodage, il se peut que d’autres fragments ayant pu être décodés avec succès aient néanmoins été écrits dans ` dst `. Renvoie ` 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 constitue une erreur.
Remarque : cette fonction ne peut pas être reprise. Autrement dit, elle ne doit pas être utilisée dans des contextes où des données CBOR sont encore susceptibles d’être reçues, par exemple depuis un socket ou un tube. Elle ne doit être utilisée que lorsque toutes les données ont déjà été reçues et sont disponibles dans les paramètres d’entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir également 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 segmentée, cette fonction parcourt toutes les segments et les concatène. Si une erreur survient pendant le décodage, il se peut que d'autres segments ayant pu être décodés avec succès aient néanmoins été écrits dans ` dst `. Renvoie ` 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 renvoyé true ; l’appeler dans toute autre condition constitue une erreur.
Remarque : cette fonction ne peut pas être reprise. Autrement dit, elle ne doit pas être utilisée dans des contextes où des données CBOR sont encore susceptibles d’être reçues, par exemple depuis un socket ou un tube. Elle ne doit être utilisée que lorsque l’intégralité des données a déjà été reçue et est disponible dans les paramètres d’entrée QByteArray ou QIODevice.
Cette fonction a été introduite dans Qt 6.7.
Voir également 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 fragmentée, cette fonction parcourt tous les fragments et les concatène. Si une erreur survient pendant le décodage, il se peut que d'autres fragments ayant pu être décodés avec succès aient néanmoins été écrits dans ` dst `. Renvoie ` 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 renvoyé true ; l’appeler dans toute autre condition constitue une erreur.
Remarque : cette fonction ne peut pas être reprise. Autrement dit, elle ne doit pas être utilisée dans des contextes où des données CBOR sont encore susceptibles d’être reçues, par exemple depuis un socket ou un tube. Elle ne doit être utilisée que lorsque toutes les données 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 également readString(), readStringChunk(), isString() et readAndAppendToByteArray().
QCborStreamReader::StringResult<QByteArray> QCborStreamReader::readByteArray()
Décode un bloc de tableau d'octets à partir de la chaîne CBOR et le renvoie. Cette fonction est utilisée aussi bien pour les contenus classiques que pour les contenus segmentés ; l'appelant doit donc 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() met en œuvre la boucle ci-dessus ainsi que 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 constitue une erreur.
Voir également readAllByteArray(), readString(), isByteArray() et readStringChunk().
QCborStreamReader::StringResult<QString> QCborStreamReader::readString()
Décode un bloc de chaîne issu de la chaîne CBOR et le renvoie. Cette fonction s'applique aussi bien au contenu de chaîne classique qu'au contenu segmenté ; l'appelant doit donc 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() met en œuvre la boucle ci-dessus ainsi que 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 renvoyé la valeur true ; l’appeler dans toute autre condition constitue une erreur.
Voir également readAllString(), readByteArray(), isString() et readStringChunk().
QCborStreamReader::StringResult<qsizetype> QCborStreamReader::readStringChunk(char *ptr, qsizetype maxlen)
Lit le bloc de chaîne actuel dans le tampon pointé par ` ptr`, dont la taille est ` maxlen`. Cette fonction renvoie un objet ` StringResult `, dans lequel le nombre d’octets copiés dans ` ptr ` est enregistré dans le membre ` \l ` ` StringResult::data `. Le membre ` \l ` ` StringResult::status ` indique s’il y a eu une erreur lors de la lecture de la chaîne, si des données ont été copiées ou s’il s’agissait du dernier bloc.
Cette fonction peut être appelée aussi bien pour les types String que pour les types 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 la valeur QString qui aurait été renvoyée.
Cette fonction est généralement utilisée avec currentStringChunkSize() dans une boucle. Par exemple :
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 soumise aux contraintes d’implémentation de QByteArray et QString.
Remarque : cette fonction ne vérifie pas que le contenu UTF-8 est correctement formaté. Cela signifie qu’elle ne génère pas l’erreur « QCborError::InvalidUtf8String », même lorsque la fonction readString() le fait.
Voir également currentStringChunkSize(), readString(), readByteArray(), isString() et isByteArray().
[since 6.7] QCborStreamReader::StringResult<QByteArray> QCborStreamReader::readUtf8String()
Décode un bloc de chaîne issu de la chaîne CBOR et le renvoie. Cette fonction s'applique aussi bien aux chaînes classiques qu'aux chaînes segmentées ; l'appelant doit donc toujours appeler cette fonction en boucle, même si isLengthKnown() renvoie vrai. Cette fonction s'utilise généralement de la même manière que readString() dans l'exemple suivant :
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() implémente la boucle ci-dessus ainsi que 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 renvoyé true ; l’appeler dans toute autre condition constitue une erreur.
Cette fonction a été introduite dans Qt 6.7.
Voir également readAllString(), readByteArray(), isString() et readStringChunk().
void QCborStreamReader::reparse()
Réanalyse l'élément courant. Cette fonction doit être appelée lorsque davantage de données deviennent disponibles dans l'QIODevice -source après un échec d'analyse dû au fait que la fin des données d'entrée a été atteinte avant la fin du flux CBOR.
Lors d'une lecture à partir de QByteArray(), la fonction addData() appelle automatiquement cette fonction. Son appel lorsque la lecture n'a pas échoué n'a aucun effet.
void QCborStreamReader::reset()
Réinitialise la source au début et efface l'état du décodeur. Si les données source étaient de type ` QByteArray`, la fonction ` QCborStreamReader ` redémarrera depuis le début du tableau.
Si les données source sont de type ` QIODevice`, cette fonction appellera ` QIODevice::reset()`, qui se positionnera à 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 risque alors de ne pas fonctionner correctement. Dans ce cas, positionnez plutôt ` QIODevice ` au décalage approprié et appelez ` setDevice()`.
Voir également clear() et setDevice().
void QCborStreamReader::setDevice(QIODevice *device)
Définit la source des données sur device, ce qui réinitialise le décodeur à son état initial.
Voir également 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 entier. Par conséquent, elle ne peut être appelée que si isTrue(), isFalse() ou isBool() ont renvoyé « true » ; l'appeler dans toute autre condition constitue une erreur.
Voir également isBool(), isTrue(), isFalse() et toInteger().
double QCborStreamReader::toDouble() const
Renvoie la valeur à virgule flottante double précision 64 bits de l'élément courant.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'autres types à 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 génère une erreur.
Voir également isDouble(), toFloat16() et toFloat().
qfloat16 QCborStreamReader::toFloat16() const
Renvoie la valeur à virgule flottante de demi-précision (16 bits) de l'élément courant.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'autres types à 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 génère une erreur.
Voir également isFloat16(), toFloat() et toDouble().
float QCborStreamReader::toFloat() const
Renvoie la valeur à virgule flottante simple précision 32 bits de l'élément actuel.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'autres types à 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 génère 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 renvoyée subira un débordement et présentera un signe incorrect. Si vous devez gérer ces valeurs, utilisez plutôt toUnsignedInteger() ou toNegativeInteger().
Cette fonction n’effectue aucune conversion de type, y compris à partir d’une valeur booléenne ou d’une balise CBOR. Par conséquent, elle ne peut être appelée que si isInteger() est vrai ; l’appeler dans toute autre condition constitue une erreur.
Voir également 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. De plus, QCborNegativeValue(0) représente le nombre-264.
Cette fonction n'effectue aucune conversion de type, y compris à partir d'une valeur booléenne ou d'une balise CBOR. Par conséquent, elle ne peut être appelée que si isNegativeInteger() est vrai ; l'appeler dans toute autre condition constitue une erreur.
Cette fonction peut être utilisée pour obtenir des nombres dépassant la plage du type de retour de toInteger(). Cependant, l’utilisation de nombres négatifs inférieurs à-263 est fortement déconseillée.
Voir également 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 génère une erreur.
Voir également isSimpleType(), isTrue(), isFalse(), isBool(), isNull() et isUndefined().
QCborTag QCborStreamReader::toTag() const
Renvoie la valeur de la balise de l'élément 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 isTag() est vrai ; l'appeler dans toute autre condition génère une erreur.
Les balises sont des nombres sur 64 bits associés à des types CBOR génériques, ce qui leur confère une signification supplémentaire. Pour obtenir la liste des balises connues, consultez 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 valeur booléenne ou d’une balise CBOR. Par conséquent, elle ne peut être appelée que si isUnsignedInteger() est vrai ; l’appeler dans toute autre condition génère une erreur.
Cette fonction peut être utilisée pour obtenir des nombres dépassant la plage du type de retour de la fonction ` toInteger()`.
Voir également type(), toInteger(), isUnsignedInteger() et isNegativeInteger().
QCborStreamReader::Type QCborStreamReader::type() const
Renvoie le type de l'élément actuel. Il s'agit de l'un des types valides ou de « Invalid ».
Voir également isValid(), isUnsignedInteger(), isNegativeInteger(), isInteger(), isByteArray(), isString(), isArray(), isMap(), isTag(), isSimpleType(), isBool(), isFalse(), isTrue(), isNull(), isUndefined(), isFloat16(), isFloat() et isDouble().
[delete] QCborStreamReader &QCborStreamReader::operator=(const QCborStreamReader &)
Copie et attribue « other » à cette instance de « QCborStreamReader ». Cette fonction est supprimée.
© 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.