QCborValue Class
La classe QCborValue encapsule une valeur au format CBOR. En savoir plus...
| En-tête : | #include <QCborValue> |
| 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
- QCborValue fait partie du support CBOR dans Qt.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Comparaisons QCborValue
| Catégorie | Types comparables |
|---|---|
| strong | QCborValue |
Types publics
| enum | DiagnosticNotationOption { Compact, LineWrapped, ExtendedFormat } |
| flags | DiagnosticNotationOptions |
| enum | EncodingOption { NoTransformation, UseFloat, UseFloat16, UseIntegers } |
| flags | EncodingOptions |
| enum | Type { Integer, ByteArray, String, Array, Map, …, Uuid } |
Fonctions publiques
| QCborValue() | |
| QCborValue(QCborArray &&a) | |
| QCborValue(QCborMap &&m) | |
| QCborValue(QCborSimpleType st) | |
| QCborValue(QCborValue::Type t_) | |
| QCborValue(QStringView s) | |
| QCborValue(bool b) | |
| QCborValue(const QByteArray &ba) | |
| QCborValue(const QCborArray &a) | |
| QCborValue(const QCborMap &m) | |
| QCborValue(const QDateTime &dt) | |
| QCborValue(const QRegularExpression &rx) | |
| QCborValue(const QString &s) | |
| QCborValue(const QUrl &url) | |
| QCborValue(const QUuid &uuid) | |
| QCborValue(const void *) | |
| QCborValue(double d) | |
| QCborValue(qint64 i) | |
| QCborValue(std::nullptr_t) | |
| QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue()) | |
| QCborValue(QCborTag tag, const QCborValue &tv = QCborValue()) | |
| QCborValue(QLatin1StringView s) | |
| QCborValue(const QCborValue &other) | |
| QCborValue(QCborValue &&other) | |
| ~QCborValue() | |
| int | compare(const QCborValue &other) const |
| bool | isArray() const |
| bool | isBool() const |
| bool | isByteArray() const |
| bool | isContainer() const |
| bool | isDateTime() const |
| bool | isDouble() const |
| bool | isFalse() const |
| bool | isInteger() const |
| bool | isInvalid() const |
| bool | isMap() const |
| bool | isNull() const |
| bool | isRegularExpression() const |
| bool | isSimpleType() const |
| bool | isSimpleType(QCborSimpleType st) const |
| bool | isString() const |
| bool | isTag() const |
| bool | isTrue() const |
| bool | isUndefined() const |
| bool | isUrl() const |
| bool | isUuid() const |
| void | swap(QCborValue &other) |
| QCborTag | tag(QCborTag defaultValue = QCborTag(-1)) const |
| QCborValue | taggedValue(const QCborValue &defaultValue = QCborValue()) const |
| QCborArray | toArray() const |
| QCborArray | toArray(const QCborArray &defaultValue) const |
| bool | toBool(bool defaultValue = false) const |
| QByteArray | toByteArray(const QByteArray &defaultValue = {}) const |
| QByteArray | toCbor(QCborValue::EncodingOptions opt = NoTransformation) const |
| void | toCbor(QCborStreamWriter &writer, QCborValue::EncodingOptions opt = NoTransformation) const |
| QDateTime | toDateTime(const QDateTime &defaultValue = {}) const |
| QString | toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opts = Compact) const |
| double | toDouble(double defaultValue = 0) const |
| qint64 | toInteger(qint64 defaultValue = 0) const |
| QJsonValue | toJsonValue() const |
| QCborMap | toMap() const |
| QCborMap | toMap(const QCborMap &defaultValue) const |
| QRegularExpression | toRegularExpression(const QRegularExpression &defaultValue = {}) const |
| QCborSimpleType | toSimpleType(QCborSimpleType defaultValue = QCborSimpleType::Undefined) const |
| QString | toString(const QString &defaultValue = {}) const |
(since 6.10) QAnyStringView | toStringView(QAnyStringView defaultValue = {}) const |
| QUrl | toUrl(const QUrl &defaultValue = {}) const |
| QUuid | toUuid(const QUuid &defaultValue = {}) const |
| QVariant | toVariant() const |
| QCborValue::Type | type() const |
| QCborValue & | operator=(const QCborValue &other) |
| QCborValue & | operator=(QCborValue &&other) |
| QCborValueRef | operator[](const QString &key) |
| const QCborValue | operator[](const QString &key) const |
| QCborValueRef | operator[](QLatin1StringView key) |
| QCborValueRef | operator[](qint64 key) |
| const QCborValue | operator[](QLatin1StringView key) const |
| const QCborValue | operator[](qint64 key) const |
Membres publics statiques
| QCborValue | fromCbor(QCborStreamReader &reader) |
| QCborValue | fromCbor(const QByteArray &ba, QCborParserError *error = nullptr) |
| QCborValue | fromCbor(const char *data, qsizetype len, QCborParserError *error = nullptr) |
| QCborValue | fromCbor(const quint8 *data, qsizetype len, QCborParserError *error = nullptr) |
| QCborValue | fromJsonValue(const QJsonValue &v) |
| QCborValue | fromVariant(const QVariant &variant) |
Éléments non membres associés
| bool | operator!=(const QCborValue &lhs, const QCborValue &rhs) |
| bool | operator<(const QCborValue &lhs, const QCborValue &rhs) |
| bool | operator<=(const QCborValue &lhs, const QCborValue &rhs) |
| bool | operator==(const QCborValue &lhs, const QCborValue &rhs) |
| bool | operator>(const QCborValue &lhs, const QCborValue &rhs) |
| bool | operator>=(const QCborValue &lhs, const QCborValue &rhs) |
Description détaillée
Cette classe peut être utilisée pour contenir l'un des nombreux types disponibles dans CBOR. CBOR (Concise Binary Object Representation) est un format très compact de codage de données binaires qui constitue un sur-ensemble de 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.
Le CBOR comporte trois groupes de types intégrés :
- Types de base : entiers, nombres à virgule flottante (double), booléens, null, etc.
- Types de type chaîne : chaînes de caractères et tableaux d’octets
- Conteneurs : tableaux et tables
De plus, CBOR prend en charge une forme d’extensibilité des types en associant une « balise » à l’un des types ci-dessus afin de transmettre davantage d’informations. Par exemple, un UUID est représenté par une balise et un tableau d’octets contenant les 16 octets du contenu de l’UUID. QCborValue permet de créer et de décoder plusieurs de ces types étendus directement avec des classes Qt (comme QUuid).
Pour la liste complète, voir QCborValue::Type. Le type d’un QCborValue peut être interrogé à l’aide de la fonction type() ou de l’une des fonctions « isXxxx ».
Types étendus et valeurs balisées
Une valeur balisée est un QCborValue standard associé à un nombre qui lui sert de balise. Consultez QCborKnownTags pour plus d’informations sur les balises disponibles dans l’API ainsi que pour obtenir la liste officielle complète. Ces combinaisons forment des types étendus.
QCborValue prend en charge certains types étendus dans l'API, comme l'URL (avec ` QUrl`) et l'UUID (avec ` QUuid`). Les autres types étendus non pris en charge par l'API sont représentés par un `QCborValue` de type ` Tag `. La balise peut ensuite être récupérée à l'aide de ` tag()` et la valeur balisée à l'aide de ` taggedValue()`.
Afin d’assurer la compatibilité future, les objets `QCborValue` contenant des types Qt étendus sont considérés comme égaux au type d’étiquette ayant le même contenu. En d’autres termes, l’expression suivante est vraie :
QCborValue(uuid) == QCborValue(QCborKnownTags::Uuid, uuid.toRfc4122());Valeurs indéfinies et nulles
QCborValue peut contenir une valeur « null », qui n’appartient à aucun type spécifique. Elle s’apparente au type C++ ` std::nullptr_t `, dont la seule valeur possible est ` nullptr`. QCborValue dispose d’un constructeur acceptant ce type et créant un QCborValue nul.
Les valeurs null sont utilisées pour indiquer qu’une valeur facultative est absente. À cet égard, elles sont similaires au type « std::optional » de la bibliothèque standard C++ lorsqu’il est désactivé. Contrairement au type C++, les valeurs null CBOR sont simplement de type « Null » et il n’est pas possible de déterminer quel type concret elles remplacent.
QCborValue peut également être de type « undefined », ce qui représente une valeur « indéfinie ». C’est d’ailleurs ce que crée le constructeur par défaut de QCborValue.
Les valeurs « Undefined » sont différentes des valeurs « null ». Alors que les valeurs « null » sont utilisées pour indiquer une valeur facultative qui n’est pas fournie, « Undefined » est généralement utilisé pour indiquer qu’une valeur attendue n’a pas pu être fournie, le plus souvent en raison d’une erreur ou d’une condition préalable qui n’a pas pu être satisfaite.
Ces valeurs sont tout à fait valides et peuvent apparaître dans des flux CBOR, contrairement au contenu JSON et au bit « undefined » de QJsonValue. Mais à l’instar de la valeur « Undefined » de QJsonValue, elle est renvoyée par la méthode value() ou l’opérateur [] en lecture seule d’un conteneur CBOR en cas de recherches non valides (index hors plage pour QCborArray, ou clé introuvable pour QCborMap). Il n’est pas possible de distinguer un tel cas de la valeur de `Undefined` ; par conséquent, si cela s’avère nécessaire, vérifiez la taille de l’ QCborArray et utilisez l’API d’itérateur QCborMap.
Types simples
CBOR prend en charge des types simples supplémentaires qui, à l’instar de « Null » et « Undefined », ne portent aucune autre valeur. Ils sont appelés indifféremment « types simples » et « valeurs simples ». CBOR encode les booléens sous la forme de deux types distincts (l’un pour true et l’autre pour false), mais QCborValue dispose d’une API pratique pour les gérer.
Il n’existe actuellement aucun autre type simple CBOR défini. QCborValue les prend en charge simplement par leur numéro grâce à des API telles que ` isSimpleType()` et ` toSimpleType()`, disponibles à des fins de compatibilité avec de futures spécifications avant que l’API Qt ne puisse être mise à jour. Leur utilisation avant la publication d’une telle spécification est déconseillée, car d’autres implémentations CBOR pourraient ne pas les prendre entièrement en charge.
Prise en charge de CBOR
QCborValue prend en charge toutes les fonctionnalités CBOR requises pour créer des flux canoniques et stricts. Il implémente la quasi-totalité des fonctionnalités spécifiées dans la RFC 7049.
Le tableau suivant répertorie les fonctionnalités CBOR prises en charge par QCborValue.
| Fonctionnalité | Prise en charge |
|---|---|
| Nombres non signés | Oui (plageqint64 ) |
| Nombres négatifs | Oui (plageqint64 ) |
| Chaînes d’octets | Oui |
| Chaînes de texte | Oui |
| Chaînes fragmentées | Voir ci-dessous |
| 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 en 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) |
Les entiers dans QCborValue sont limités à la plage du type « qint64 ». C'est-à-dire de -9 223 372 036 854 775 808 (-263) à 9 223 372 036 854 775 807 (263 - 1). Le format CBOR lui-même peut représenter des valeurs entières en dehors de cette plage, ce que QCborValue ne prend pas en charge. Lors du décodage d’un flux à l’aide de ` fromCbor()` contenant l’une de ces valeurs, QCborValue effectuera automatiquement une conversion vers ` Double`, mais cela peut entraîner une perte de précision pouvant aller jusqu’à 11 bits.
fromCbor() est capable de décoder des chaînes fragmentées, mais fusionnera toujours les fragments en un seul QCborValue. C'est pourquoi elle écrit toujours des chaînes non fragmentées lors de l'utilisation de toCbor() (ce qui est de toute façon requis par le format Canonical).
QCborValue convertit systématiquement les valeurs à virgule flottante de demi-précision et de simple précision présentes dans le flux CBOR en double précision. La fonction toCbor() peut prendre un paramètre indiquant de les recréer.
QCborValueRef
QCborValueRef est une classe d’aide pour QCborArray et QCborMap. C’est le type que vous obtenez lorsque vous utilisez l’une des API de modification de ces classes. Contrairement à QCborValue, de nouvelles valeurs peuvent être attribuées à cette classe. Une fois cela fait, le tableau ou la carte auquel elle fait référence sera modifié avec la nouvelle valeur. À tous les autres égards, son API est identique à celle de QCborValue.
Voir également QCborArray, QCborMap, QCborStreamReader, QCborStreamWriter, QJsonValue, QJsonDocument, Convertisseur de sérialisation, ainsi que Analyse et affichage des données CBOR.
Documentation sur les types de membres
enum QCborValue::DiagnosticNotationOption
flags QCborValue::DiagnosticNotationOptions
Cette énumération est utilisée dans l'argument « option » de la fonction toDiagnosticNotation(), afin de modifier le format de sortie.
| Constante | Valeur | Description |
|---|---|---|
QCborValue::Compact | 0x00 | N'utilise aucun saut de ligne, ce qui produit une représentation compacte. |
QCborValue::LineWrapped | 0x01 | Utilise des sauts de ligne, à raison d’un QCborValue par ligne. |
QCborValue::ExtendedFormat | 0x02 | Utilise certaines options différentes pour représenter les valeurs, qui ne figurent pas dans la RFC 7049. Ces options sont susceptibles d'être modifiées. |
Actuellement, l'ExtendedFormat modifie la manière dont les tableaux d'octets sont représentés. Sans elle, ceux-ci sont toujours encodés en hexadécimal et sans espaces. Avec elle, la fonction QCborValue::toCbor() utilisera soit l'encodage hexadécimal avec espaces, soit l'encodage base64 ou base64url, selon le contexte.
Le type `DiagnosticNotationOptions` est un `typedef` pour ` QFlags<DiagnosticNotationOption>`. Il stocke une combinaison OR de valeurs `DiagnosticNotationOption`.
Voir également toDiagnosticNotation().
enum QCborValue::EncodingOption
flags QCborValue::EncodingOptions
Cette énumération est utilisée dans l'argument « options » de la fonction toCbor(), afin de modifier le comportement de l'encodeur.
| Constante | Valeur | Description |
|---|---|---|
QCborValue::NoTransformation | 0 | (Par défaut) N'effectue aucune transformation. |
QCborValue::UseFloat | 0x02 | Indique à l’encodeur d’utiliser la virgule flottante à simple précision IEEE 754 (c’est-à-dire float) dans la mesure du possible. |
QCborValue::UseFloat16 | UseFloat | 0x04 | Indique à l’encodeur d’utiliser le format à virgule flottante demi-précision IEEE 754 (c’est-à-dire qfloat16) dès que possible. Implique UseFloat. |
QCborValue::UseIntegers | 0x08 | Indique à l’encodeur d’utiliser des entiers chaque fois qu’une valeur de type Double contient un entier. |
L'utilisation de ` UseFloat16 ` est requise pour encoder le flux au format canonique, mais n'est pas nécessaire dans les autres cas.
Le type EncodingOptions est un typedef de QFlags<EncodingOption>. Il stocke une combinaison OR de valeurs EncodingOption.
Voir également toCbor().
enum QCborValue::Type
Cette énumération représente le type « QCborValue ». Elle est renvoyée par la fonction type().
Les types intégrés de CBOR sont les suivants :
| Constante | Valeur | Description |
|---|---|---|
QCborValue::Integer | 0x00 | qint64: Une valeur entière |
QCborValue::ByteArray | 0x40 | QByteArray: un tableau d’octets (« chaîne d’octets ») |
QCborValue::String | 0x60 | QString: une chaîne Unicode (« chaîne de texte ») |
QCborValue::Array | 0x80 | QCborArray: un tableau de QCborValues |
QCborValue::Map | 0xa0 | QCborMap: un conteneur associatif de QCborValues |
QCborValue::SimpleType | 0x100 | QCborSimpleType: l’un des différents types/valeurs simples |
QCborValue::False | SimpleType + int(QCborSimpleType::False) | bool: le type simple correspondant à la valeur false |
QCborValue::True | SimpleType + int(QCborSimpleType::True) | bool: le type simple de la valeur true |
QCborValue::Null | SimpleType + int(QCborSimpleType::Null) | std::nullptr_t: le type simple de la valeur nulle |
QCborValue::Undefined | SimpleType + int(QCborSimpleType::Undefined) | (pas de type) le type simple de la valeur indéfinie |
QCborValue::Double | 0x202 | double: un nombre à virgule flottante double précision |
QCborValue::Invalid | -1 | Valeur non valide ; cela indique généralement une erreur de décodage CBOR |
De plus, QCborValue peut représenter des types étendus :
| Constante | Valeur | Description |
|---|---|---|
QCborValue::Tag | 0xc0 | Un type étendu inconnu ou non reconnu, représenté par son identificateur ( QCborTag) et la valeur associée ( QCborValue) |
QCborValue::DateTime | 0x10000 | QDateTime: un horodatage |
QCborValue::Url | 0x10020 | QUrl: une URL ou un URI |
QCborValue::RegularExpression | 0x10023 | QRegularExpression: le motif d'une expression régulière |
QCborValue::Uuid | 0x10025 | QUuid: un UUID |
Voir aussi type().
Documentation des fonctions membres
QCborValue::QCborValue()
Crée une valeur QCborValue de type « Undefined ».
Les valeurs non définies CBOR sont utilisées pour signaler des informations manquantes, généralement à la suite d’une opération précédente qui ne s’est pas déroulée comme prévu. Elles sont également utilisées par les API QCborArray et QCborMap pour indiquer que l’élément recherché n’a pas été trouvé.
Les valeurs indéfinies sont représentées par Undefined simple type. De ce fait, les objets QCborValue contenant des valeurs indéfinies renverront également « true » pour les méthodes isSimpleType() et isSimpleType(QCborSimpleType::Undefined).
Les valeurs non définies sont différentes des valeurs nulles.
Les objets `QCborValue` contenant des valeurs indéfinies sont également différents des objets `QCborValue` non valides. L’API ne crée pas d’objets `QCborValue` non valides, mais ceux-ci peuvent exister à la suite d’une erreur d’analyse.
Voir également isUndefined(), isNull() et isSimpleType().
QCborValue::QCborValue(QCborArray &&a)
QCborValue::QCborValue(const QCborArray &a)
Crée un objet ` QCborValue ` contenant le tableau ` a`. Ce tableau peut ensuite être récupéré à l'aide de la fonction ` toArray()`.
Voir également toArray(), isArray() et isMap().
Crée une instance de ` QCborValue ` avec la carte ` m`. La carte peut ensuite être récupérée à l'aide de la fonction ` toMap()`.
Voir également toMap(), isMap() et isArray().
QCborValue::QCborValue(QCborSimpleType st)
Crée un objet `QCborValue` de type simple ` st`. Ce type peut ensuite être récupéré à l'aide des méthodes ` toSimpleType()` ainsi que ` isSimpleType(st)`.
Les types simples CBOR sont des types qui ne sont associés à aucune valeur, à l'instar du type ` std::nullptr_t ` en C++, dont la seule valeur possible est ` nullptr`.
Si st est QCborSimpleType::Null, le QCborValue résultant sera de type Null, et il en va de même pour QCborSimpleType::Undefined. Si st est QCborSimpleType::False ou QCborSimpleType::True, le QCborValue créé sera un booléen contenant respectivement la valeur false ou true.
Cette fonction peut être utilisée avec des types simples non définis dans l’API. Par exemple, pour créer un QCborValue de type simple 12, on pourrait écrire :
QCborValue value(QCborSimpleType(12));Les types simples ne doivent pas être utilisés tant qu’une spécification les concernant n’a pas été publiée, car d’autres implémentations pourraient ne pas les prendre correctement en charge. Les valeurs de types simples comprises entre 24 et 31 sont réservées et ne doivent pas être utilisées.
isSimpleType(), isNull(), isUndefined(), isTrue(), isFalse()
QCborValue::QCborValue(QCborValue::Type t_)
Crée un objet `QCborValue` de type ` t_`. La valeur associée à ce type (le cas échéant) sera construite par défaut.
Voir également type().
QCborValue::QCborValue(QStringView s)
Crée un objet QCborValue avec la valeur de chaîne « s ». Cette valeur peut ensuite être récupérée à l'aide de la fonction toString().
Voir également toString(), isString() et isByteArray().
QCborValue::QCborValue(bool b)
Crée un objet `QCborValue` avec la valeur booléenne ` b`. Cette valeur peut ensuite être récupérée à l'aide de la fonction ` toBool()`.
En interne, les booléens CBOR sont représentés par une paire de types, l’un pour « true » et l’autre pour « false ». C’est pourquoi les objets QCborValue de type booléen renverront « true » pour la méthode isSimpleType() et soit isSimpleType(QCborSimpleType::False), soit isSimpleType(QCborSimpleType::True).
Voir également toBool(), isBool(), isTrue(), isFalse() et isSimpleType().
QCborValue::QCborValue(const QByteArray &ba)
Crée un objet QCborValue dont la valeur est un tableau d'octets : ba. Cette valeur peut ensuite être récupérée à l'aide de la fonction toByteArray().
Voir également toByteArray(), isByteArray() et isString().
[explicit] QCborValue::QCborValue(const QDateTime &dt)
Crée un objet QCborValue de type étendu « date/heure » contenant la valeur représentée par dt. Cette valeur peut ensuite être récupérée à l'aide de la fonction toDateTime().
Les types date/heure CBOR sont des types étendus utilisant des balises : soit une chaîne de caractères (au format de date ISO) balisée comme DateTime, soit un nombre (exprimé en secondes depuis le début de l'année 1970, UTC) balisé comme UnixTime_t. Lors de l'analyse des flux CBOR, QCborValue convertit UnixTime_t en type basé sur une chaîne de caractères.
Voir également toDateTime(), isDateTime() et taggedValue().
[explicit] QCborValue::QCborValue(const QRegularExpression &rx)
Crée un objet `QCborValue` de type « motif d’expression régulière étendu » contenant la valeur représentée par ` rx`. Cette valeur peut ensuite être récupérée à l’aide de la fonction ` toRegularExpression()`.
Le type d'expression régulière CBOR est un type étendu représenté par une chaîne marquée comme RegularExpression. Notez que les expressions régulières CBOR ne stockent que les motifs ; par conséquent, tous les indicateurs que l'objet QRegularExpression pourrait contenir seront perdus.
Voir également toRegularExpression(), isRegularExpression() et taggedValue().
QCborValue::QCborValue(const QString &s)
Crée un objet QCborValue avec la valeur de chaîne « s ». Cette valeur peut ensuite être récupérée à l'aide de la fonction toString().
Voir également toString(), isString() et isByteArray().
[explicit] QCborValue::QCborValue(const QUrl &url)
Crée un objet QCborValue de type étendu URL contenant la valeur représentée par url. Cette valeur peut ensuite être récupérée à l'aide de la fonction toUrl().
Le type URL CBOR est un type étendu représenté par une chaîne balisée sous la forme Url.
Voir également toUrl(), isUrl() et taggedValue().
[explicit] QCborValue::QCborValue(const QUuid &uuid)
Crée un objet QCborValue de type étendu UUID contenant la valeur représentée par uuid. Cette valeur peut ensuite être récupérée à l'aide de la fonction toUuid().
Le type CBOR UUID est un type étendu représenté par un tableau d’octets balisé en tant qu’ Uuid.
Voir également toUuid(), isUuid() et taggedValue().
[delete] QCborValue::QCborValue(const void *)
Construit par défaut une instance de ` QCborValue`. Cette fonction est supprimée.
QCborValue::QCborValue(double d)
Crée un objet QCborValue contenant la valeur à virgule flottante d. Cette valeur peut ensuite être récupérée à l'aide de la fonction toDouble().
Les valeurs à virgule flottante CBOR sont distinctes des valeurs entières. Par conséquent, la comparaison entre des objets `QCborValue` contenant des entiers et des objets `QCborValue` contenant des valeurs à virgule flottante donnera des résultats différents, même si les valeurs contenues dans ces objets sont équivalentes.
Voir également toDouble(), isDouble() et isInteger().
QCborValue::QCborValue(qint64 i)
Crée un objet `QCborValue` contenant la valeur entière ` i`. Cette valeur peut ensuite être récupérée à l'aide de la méthode ` toInteger()`.
Les valeurs entières CBOR sont distinctes des valeurs à virgule flottante. Par conséquent, la comparaison entre des objets `QCborValue` contenant des entiers et des objets `QCborValue` contenant des valeurs à virgule flottante donnera des résultats différents, même si les valeurs contenues dans ces objets sont équivalentes.
Voir également toInteger(), isInteger() et isDouble().
QCborValue::QCborValue(std::nullptr_t)
Crée un objet `QCborValue` de type ` Null `.
Les valeurs null CBOR sont utilisées pour indiquer des valeurs facultatives qui n’ont pas été fournies. Elles se distinguent des valeurs indéfinies en ce sens que les valeurs null ne résultent généralement pas d’une erreur ou d’un problème antérieur.
Voir également isNull(), isUndefined() et isSimpleType().
QCborValue::QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue())
QCborValue::QCborValue(QCborTag tag, const QCborValue &tv = QCborValue())
Crée un objet ` QCborValue ` pour le type étendu représenté par la valeur de balise ` tag` et la valeur balisée ` tv`. La balise peut ensuite être récupérée à l'aide de la méthode ` tag()` et la valeur balisée à l'aide de la méthode ` taggedValue()`.
Voir également isTag(), tag(), taggedValue() et QCborKnownTags.
QCborValue::QCborValue(QLatin1StringView s)
Crée un objet QCborValue contenant la chaîne Latin-1 telle qu'elle est affichée par s. La valeur peut ensuite être récupérée à l'aide de la fonction toString().
Il s'agit d'une fonction surchargée.
Voir également toString(), isString() et isByteArray().
[noexcept] QCborValue::QCborValue(const QCborValue &other)
Copie le contenu de ` other ` dans cet objet.
[noexcept] QCborValue::QCborValue(QCborValue &&other)
Transfère le contenu de l'objet QCborValue de other vers celui-ci et libère les ressources de ce dernier.
Il s'agit d'une fonction surchargée.
[noexcept] QCborValue::~QCborValue()
Supprime l'objet « QCborValue » actuel et libère toutes les ressources associées.
int QCborValue::compare(const QCborValue &other) const
Compare cette valeur à other et renvoie un entier indiquant si cette valeur doit être triée avant (si le résultat est négatif) ou après other (si le résultat est positif). Si cette fonction renvoie 0, les deux valeurs sont égales et ont le même contenu.
Si chaque QCborValue contient un tableau ou une carte, la comparaison s’effectue de manière récursive sur les éléments qu’ils contiennent.
Types étendus
QCborValue compares considère comme égales une QCborValue contenant un type étendu, tel que Url et Url, et sa représentation balisée équivalente. Ainsi, par exemple, l’expression suivante est vraie :
QCborValue(QUrl("https://example.com")) == QCborValue(QCborKnownTags::Url, "https://example.com");Notez bien que les types Qt tels que QUrl et QDateTime normalisent et modifient leurs arguments. L’expression ci-dessus n’est vraie que parce que la chaîne de caractères du côté droit correspond à la valeur normalisée que prendrait l’ QCborValue du côté gauche. Si, par exemple, la partie « https » était en majuscules des deux côtés, la comparaison échouerait. Pour plus d’informations sur les normalisations effectuées par QCborValue, veuillez consulter la documentation du constructeur prenant le type Qt en question.
Ordre de tri
L’ordre de tri dans CBOR est défini dans la RFC 7049, section 3.9, qui traite du tri des clés dans une table (map) selon l’encodage canonique. Selon la spécification, « le tri s’effectue sur les octets de la représentation des éléments de données de la clé » et en déduit les conséquences suivantes :
- « Si deux clés ont des longueurs différentes, la plus courte est triée en premier ; »
- « Si deux clés ont la même longueur, celle dont la valeur est la plus faible selon l’ordre lexical (octet par octet) est classée en premier. »
Il en résulte un tri surprenant des QCborValues, où le résultat de cette fonction diffère de celui qui serait obtenu par la suite en comparant les éléments qu’elle contient. Par exemple, l’ QCborValue, qui contient la chaîne « zzz », est classée avant l’ QCborValue, qui contient la chaîne « foobar », alors que si l’on compare les éléments sous la forme QStrings ou QByteArrays, « zzz » vient après « foobar » (ordre lexical).
La spécification n’indique pas clairement quel ordre de tri doit être appliqué pour les valeurs de types différents (elle précise que le tri ne doit pas « tenir compte de la division en 3/5 bits pour les types majeurs »). QCborValue part du principe que les types doivent également être triés. Les valeurs numériques de l’énumération QCborValue::Type sont classées dans cet ordre, à l’exception des types étendus, qui sont comparés comme leurs équivalents balisés.
Remarque : l’ordrede tri est préliminaire et susceptible d’être modifié. Pour l’instant, les applications ne doivent pas se fier à l’ordre renvoyé par cette fonction.
Voir également QCborArray::compare(), QCborMap::compare() et operator==().
[static] QCborValue QCborValue::fromCbor(QCborStreamReader &reader)
Décode un élément du flux CBOR présent dans reader et renvoie la représentation équivalente. Cette fonction est récursive : si l'élément est une carte ou un tableau, elle décodera tous les éléments contenus dans cette carte ou ce tableau, jusqu'à ce que l'objet le plus externe soit traité.
Il n’est pas nécessaire d’utiliser cette fonction sur l’élément racine d’un fichier « QCborStreamReader ». Par exemple, le code suivant montre comment ignorer la balise de signature CBOR au début d’un fichier :
if (reader.isTag() && reader.toTag() == QCborKnownTags::Signature)
reader.next();
QCborValue contents = QCborValue::fromCbor(reader);La valeur renvoyée peut être partiellement complète et impossible à distinguer d’un QCborValue valide, même si le décodage a échoué. Pour déterminer s’il y a eu une erreur, vérifiez si la fonction reader.lastError() indique une condition d’erreur. Cette fonction interrompt le décodage immédiatement après la première erreur.
Voir également toCbor(), toDiagnosticNotation(), toVariant() et toJsonValue().
[static] QCborValue QCborValue::fromCbor(const QByteArray &ba, QCborParserError *error = nullptr)
Décode un élément du flux CBOR contenu dans le tableau d'octets ba et renvoie la représentation équivalente. Cette fonction est récursive : si l'élément est une carte ou un tableau, elle décodera tous les éléments contenus dans cette carte ou ce tableau, jusqu'à ce que l'objet le plus externe soit traité.
Cette fonction stocke l’état d’erreur, le cas échéant, dans l’objet pointé par error, ainsi que le décalage correspondant à l’endroit où l’erreur s’est produite. Si aucune erreur ne s’est produite, elle stocke NoError dans l’état d’erreur ainsi que le nombre d’octets consommés (c’est-à-dire qu’elle stocke le décalage correspondant au premier octet non utilisé). L’utilisation de ces informations permet d’analyser d’autres données pouvant se trouver dans le même tableau d’octets.
La valeur renvoyée peut être partiellement complète et impossible à distinguer d’un QCborValue valide, même si le décodage a échoué. Pour déterminer s’il y a eu une erreur, vérifiez si une erreur a été enregistrée dans error. Cette fonction interrompt le décodage immédiatement après la première erreur.
Il s’agit d’une fonction surchargée.
Voir également toCbor(), toDiagnosticNotation(), toVariant() et toJsonValue().
[static] QCborValue QCborValue::fromCbor(const char *data, qsizetype len, QCborParserError *error = nullptr)
[static] QCborValue QCborValue::fromCbor(const quint8 *data, qsizetype len, QCborParserError *error = nullptr)
Convertit len octets de data en un QByteArray, puis appelle la surcharge de cette fonction qui accepte un QByteArray, en transmettant également error, s'il est fourni.
[static] QCborValue QCborValue::fromJsonValue(const QJsonValue &v)
Convertit la valeur JSON contenue dans ` v ` en sa valeur CBOR correspondante et la renvoie. La conversion de JSON vers CBOR n'entraîne aucune perte de données, car l'ensemble des types CBOR est plus riche que celui de JSON. De plus, les valeurs converties en CBOR à l'aide de cette fonction peuvent être reconverties en JSON à l'aide de ` toJsonValue()` sans aucune perte de données.
Le tableau suivant répertorie le mappage des types JSON vers les types CBOR :
| Type JSON | Type CBOR |
|---|---|
| Bool | Bool |
| Number | Entier (si le nombre ne comporte pas de fraction et se situe dans l'intervalle qint64 ) ou Double |
| Chaîne | Chaîne |
| Tableau | Tableau |
| Objet | Carte |
| Null | Null |
QJsonValue peut également être indéfini, ce qui indique qu’une opération précédente n’a pas pu être menée à bien (par exemple, la recherche d’une clé absente d’un objet). Les valeurs indéfinies ne sont pas des types JSON et ne peuvent pas apparaître dans les tableaux et objets JSON, mais cette fonction renvoie la valeur indéfini de QCborValue si l’ QJsonValue correspondant est indéfini.
Voir également toJsonValue(), fromVariant(), QCborArray::fromJsonArray() et QCborMap::fromJsonObject().
[static] QCborValue QCborValue::fromVariant(const QVariant &variant)
Convertit l'QVariant variant en QCborValue et le renvoie.
Les QVariants peuvent contenir une longue liste de méta-types différents, dont beaucoup n’ont pas de représentation correspondante en CBOR. Cela inclut tous les méta-types définis par l’utilisateur. Lors de la préparation d’une transmission à l’aide de CBOR, il est recommandé d’encoder soigneusement chaque valeur afin d’éviter toute perte de représentation.
Le tableau suivant répertorie les conversions appliquées par cette fonction :
| Type Qt (C++) | Type CBOR |
|---|---|
| invalide (QVariant()) | Non défini |
bool | Bool |
std::nullptr_t | Null |
short, ushort, int, uint, qint64 | entier |
| quint64 | Entier, ou Double si la valeur est hors de la plage de qint64 |
float, double | Double |
| QByteArray | ByteArray |
| QDateTime | DateTime |
| QCborSimpleType | Type simple |
| QJsonArray | Tableau, converti à l’aide de QCborArray::formJsonArray() |
| QJsonDocument | Tableau ou carte |
| QJsonObject | Carte, convertie à l’aide de QCborMap::fromJsonObject() |
| QJsonValue | converti à l'aide de fromJsonValue() |
| QRegularExpression | RegularExpression |
| QString | Chaîne |
| QStringList | Tableau |
| QVariantHash | Table |
| QVariantList | Tableau |
| QVariantMap | Carte |
| QUrl | URL |
| QUuid | UUID |
Si QVariant::isNull() renvoie true, une valeur nulle QCborValue est renvoyée ou insérée dans la liste ou l’objet, quel que soit le type porté par QVariant. Notez que le changement de comportement dans Qt 6.0 affectant QVariant::isNull() affecte également cette fonction.
Pour les autres types non répertoriés ci-dessus, une conversion en chaîne de caractères sera tentée, généralement, mais pas systématiquement, en appelant QVariant::toString(). Si la conversion échoue, la valeur est remplacée par une valeur CBOR indéfinie. Notez que QVariant::toString() entraîne également une perte d’informations pour la majorité des types.
Veuillez noter que les conversions via QVariant::toString() sont susceptibles d’être modifiées à tout moment. Les méthodes QVariant et QCborValue pourraient être étendues à l’avenir pour prendre en charge davantage de types, ce qui entraînera une modification de la manière dont cette fonction effectue les conversions.
Voir également toVariant(), fromJsonValue(), QCborArray::toVariantList(), QCborMap::toVariantMap() et QJsonValue::fromVariant().
bool QCborValue::isArray() const
Renvoie « true » si cet objet « QCborValue » est de type tableau. La valeur du tableau peut être récupérée à l'aide de la fonction « toArray() ».
Voir également type() et toArray().
bool QCborValue::isBool() const
Renvoie « true » si cet « QCborValue » est une valeur booléenne. La valeur peut être récupérée à l'aide de la fonction « toBool() ».
Voir également type(), toBool(), isTrue() et isFalse().
bool QCborValue::isByteArray() const
Renvoie « true » si cet objet ` QCborValue ` est de type tableau d'octets. La valeur du tableau d'octets peut être récupérée à l'aide de la fonction ` toByteArray()`.
Voir également type() et toByteArray().
bool QCborValue::isContainer() const
Cette fonction pratique renvoie « true » si l'QCborValue est soit un tableau, soit une carte.
Voir également ` isArray()` et ` isMap()`.
bool QCborValue::isDateTime() const
Renvoie « true » si cet élément « QCborValue » est de type date/heure. La valeur peut être récupérée à l’aide de la fonction « toDateTime() ». Les dates et heures sont des types étendus qui utilisent la balise « DateTime ».
De plus, lors du décodage à partir d’un flux CBOR, QCborValue interprète les balises dont la valeur est UnixTime_t et les convertit en date/heure équivalente.
Voir également type() et toDateTime().
bool QCborValue::isDouble() const
Renvoie « true » si cet objet ` QCborValue ` est de type à virgule flottante. La valeur peut être récupérée à l'aide de la fonction ` toDouble()`.
Voir également type() et toDouble().
bool QCborValue::isFalse() const
Renvoie « true » si cette valeur « QCborValue » est un booléen dont la valeur est « false ». Cette fonction existe car, en interne, les booléens CBOR sont stockés sous la forme de deux types distincts, l’un pour « true » et l’autre pour « false ».
Voir également type(), isBool(), isTrue() et toBool().
bool QCborValue::isInteger() const
Renvoie « true » si cet objet ` QCborValue ` est de type entier. La valeur entière peut être récupérée à l'aide de la fonction ` toInteger()`.
Voir également type() et toInteger().
bool QCborValue::isInvalid() const
Renvoie « true » si cet objet « QCborValue » n'est pas d'un type valide. Les valeurs « QCborValues » non valides se distinguent de celles dont les valeurs sont indéfinies et indiquent généralement une erreur de décodage.
Voir également ` isUndefined()` et ` isNull()`.
bool QCborValue::isMap() const
Renvoie « true » si cet objet ` QCborValue ` est de type « map ». La valeur de la « map » peut être récupérée à l'aide de la fonction ` toMap()`.
Voir également type() et toMap().
bool QCborValue::isNull() const
Renvoie « true » si cet objet « QCborValue » est de type null.
Les valeurs null CBOR sont utilisées pour indiquer des valeurs facultatives qui n’ont pas été fournies. Elles se distinguent des valeurs non définies, dans la mesure où les valeurs null ne résultent généralement pas d’une erreur ou d’un problème antérieur.
Les valeurs null se distinguent des valeurs indéfinies et des objets « QCborValue » invalides. L’API ne crée pas de QCborValues invalides, mais celles-ci peuvent exister à la suite d’une erreur d’analyse.
Voir également type(), isUndefined() et isInvalid().
bool QCborValue::isRegularExpression() const
Renvoie « true » si cet objet ` QCborValue ` contient un motif d'expression régulière. Le motif peut être récupéré à l'aide de la fonction ` toRegularExpression()` ().
Voir également type() et toRegularExpression().
bool QCborValue::isSimpleType() const
Renvoie « true » si cet objet ` QCborValue ` correspond à l’un des types simples CBOR. Le type lui-même peut ensuite être récupéré à l’aide de la fonction ` type()`, même pour les types qui ne disposent pas d’énumération dans l’API. Ils peuvent également être vérifiés à l’aide de la surcharge de la fonction ` isSimpleType` (QCborSimpleType).
Voir également QCborSimpleType, isSimpleType(QCborSimpleType) et toSimpleType().
bool QCborValue::isSimpleType(QCborSimpleType st) const
Renvoie « true » si cet QCborValue est d'un type simple et si toSimpleType() renverrait st; renvoie « false » dans le cas contraire. Cette fonction peut être utilisée pour vérifier n'importe quel type simple CBOR, même ceux pour lesquels il n'existe pas d'énumération dans l'API. Par exemple, pour le type simple de valeur 12, vous pourriez écrire :
value.isSimpleType(QCborSimpleType(12));Il s'agit d'une fonction surchargée.
Voir également QCborValue::QCborValue(QCborSimpleType), isSimpleType(), isFalse(), isTrue(), isNull, isUndefined() et toSimpleType().
bool QCborValue::isString() const
Renvoie « true » si cet objet « QCborValue » est de type chaîne de caractères. La valeur de la chaîne peut être récupérée à l'aide de la fonction « toString() ».
Voir également type() et toString().
bool QCborValue::isTag() const
Renvoie « true » si cet objet « QCborValue » est de type « tag ». La valeur de la balise peut être récupérée à l’aide de ` tag()` et la valeur associée à la balise à l’aide de ` taggedValue()`.
Cette fonction renvoie également la valeur true pour les types étendus reconnus par l’API. Pour le code qui gère directement les types étendus avant que l’API Qt ne soit mise à jour pour les prendre en charge, il est possible de recréer la paire balise + valeur balisée à l’aide de taggedValue().
Voir également type(), tag() et taggedValue().
bool QCborValue::isTrue() const
Renvoie « true » si cette valeur « QCborValue » est un booléen dont la valeur est « true ». Cette fonction existe car, en interne, les booléens CBOR sont stockés sous la forme de deux types distincts, l'un pour « false » et l'autre pour « true ».
Voir également type(), isBool(), isFalse() et toBool().
bool QCborValue::isUndefined() const
Renvoie « true » si cet « QCborValue » est de type « undefined ».
Les valeurs « undefined » CBOR sont utilisées pour signaler des informations manquantes, généralement à la suite d’une opération précédente qui ne s’est pas déroulée comme prévu. Elles sont également utilisées par les API QCborArray et QCborMap pour indiquer que l’élément recherché n’a pas été trouvé.
Les valeurs indéfinies sont distinctes des valeurs nulles.
QCborValue Les objets comportant des valeurs non définies diffèrent également des objets QCborValue invalides. L’API ne crée pas de valeurs QCborValues invalides, mais celles-ci peuvent exister à la suite d’une erreur d’analyse syntaxique.
Voir également type(), isNull() et isInvalid().
bool QCborValue::isUrl() const
Renvoie « true » si cet objet ` QCborValue ` est de type URL. La valeur de l'URL peut être récupérée à l'aide de la fonction ` toUrl()`.
Voir également type() et toUrl().
bool QCborValue::isUuid() const
Renvoie « true » si cet objet ` QCborValue ` contient un UUID. La valeur peut être récupérée à l'aide de la fonction ` toUuid()`.
Voir également type() et toUuid().
[noexcept] void QCborValue::swap(QCborValue &other)
Permute cette valeur avec celle de ` other`. Cette opération est très rapide et ne rencontre jamais d'échec.
QCborTag QCborValue::tag(QCborTag defaultValue = QCborTag(-1)) const
Renvoie l'identifiant de cet objet « extended QCborValue », s'il est de type « tag » ; sinon, renvoie « defaultValue ».
CBOR représente les types étendus en associant un nombre (la balise) à une représentation stockée. Cette fonction renvoie ce nombre. Pour récupérer la représentation, utilisez ` taggedValue()`.
Voir également isTag(), taggedValue(), isDateTime(), isUrl(), isRegularExpression() et isUuid().
QCborValue QCborValue::taggedValue(const QCborValue &defaultValue = QCborValue()) const
Renvoie la valeur étiquetée de cet objet « extended QCborValue », s’il s’agit d’un type étiqueté ; sinon, renvoie « defaultValue ».
CBOR représente les types étendus en associant un nombre (la balise) à une représentation stockée. Cette fonction renvoie cette représentation. Pour récupérer la balise, utilisez tag().
Voir également isTag(), tag(), isDateTime(), isUrl(), isRegularExpression() et isUuid().
QCborArray QCborValue::toArray() const
QCborArray QCborValue::toArray(const QCborArray &defaultValue) const
Renvoie la valeur du tableau stockée dans cet objet ` QCborValue`, si celui-ci est de type tableau. Sinon, elle renvoie ` defaultValue`.
Notez que cette fonction n'effectue aucune conversion à partir d'autres types vers ` QCborArray`.
Voir également isArray(), isByteArray(), isMap(), isContainer() et toMap().
bool QCborValue::toBool(bool defaultValue = false) const
Renvoie la valeur booléenne stockée dans cet objet ` QCborValue`, si celle-ci est de type booléen. Sinon, elle renvoie ` defaultValue`.
Voir également isBool(), isTrue() et isFalse().
QByteArray QCborValue::toByteArray(const QByteArray &defaultValue = {}) const
Renvoie la valeur du tableau d'octets stockée dans cet objet ` QCborValue`, si celui-ci est de type tableau d'octets. Sinon, elle renvoie ` defaultValue`.
Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QByteArray`.
Voir également isByteArray(), isString() et toString().
QByteArray QCborValue::toCbor(QCborValue::EncodingOptions opt = NoTransformation) const
Encode cet objet ` QCborValue ` en sa représentation CBOR, en utilisant les options spécifiées dans ` opt`, et renvoie le tableau d’octets contenant cette représentation.
Cette fonction ne renvoie pas d’erreur, sauf si cet objet ` QCborValue ` ou l’un de ses éléments (s’il s’agit d’une carte ou d’un tableau) n’est pas valide. Les types non valides ne sont généralement pas générés par l’API, mais peuvent résulter d’erreurs de décodage.
Par défaut, cette fonction n’effectue aucune transformation sur les valeurs de l’ QCborValue, en écrivant toutes les valeurs à virgule flottante directement sous forme de types à double précision (double). Si l’option UseFloat est spécifiée, elle utilisera la précision simple (float) pour toute valeur à virgule flottante pour laquelle l’utilisation de cette représentation n’entraîne aucune perte de précision. Cela inclut les infinis et les valeurs NaN.
De même, si l’option UseFloat16 est spécifiée, cette fonction tentera d’utiliser la virgule flottante en demi-précision (qfloat16) si la conversion vers ce format n’entraîne aucune perte de précision. C’est toujours le cas pour les infinis et les valeurs NaN.
Si ` UseIntegers ` est spécifié, la fonction utilisera des entiers pour toute valeur à virgule flottante contenant un entier réel.
Voir également fromCbor(), fromVariant() et fromJsonValue().
void QCborValue::toCbor(QCborStreamWriter &writer, QCborValue::EncodingOptions opt = NoTransformation) const
Encode cet objet ` QCborValue ` sous sa forme CBOR, en utilisant les options spécifiées dans ` opt`, vers l'éditeur spécifié par ` writer`. Un même éditeur peut être utilisé par plusieurs objets `QCborValues`, par exemple pour encoder différents éléments d'un tableau plus vaste.
Cette fonction ne renvoie pas d’erreur, sauf si cet objet ` QCborValue ` ou l’un des éléments qu’il contient (s’il s’agit d’une carte ou d’un tableau) n’est pas valide. Les types non valides ne sont généralement pas générés par l’API, mais peuvent résulter d’erreurs de décodage.
Par défaut, cette fonction n’effectue aucune transformation sur les valeurs de l’ QCborValue, en écrivant toutes les valeurs à virgule flottante directement sous forme de types à double précision (binary64). Si l’option UseFloat est spécifiée, elle utilisera la précision simple (binary32) pour toute valeur à virgule flottante pour laquelle l’utilisation de cette représentation n’entraîne aucune perte de précision. Cela inclut les valeurs infinies et les valeurs NaN.
De même, si l’option ` UseFloat16 ` est spécifiée, cette fonction tentera d’utiliser la précision demi-précision (binary16) si la conversion vers ce format n’entraîne aucune perte de précision. C’est toujours le cas pour les infinis et les valeurs NaN.
Si « UseIntegers » est spécifié, la fonction utilisera des entiers pour toute valeur à virgule flottante contenant un entier réel.
Il s’agit d’une fonction surchargée.
Voir également fromCbor(), fromVariant() et fromJsonValue().
QDateTime QCborValue::toDateTime(const QDateTime &defaultValue = {}) const
Renvoie la valeur de date/heure stockée dans cet objet ` QCborValue`, si celui-ci est de type « date/heure étendue ». Sinon, elle renvoie ` defaultValue`.
Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QDateTime`.
Voir également isDateTime(), isTag() et taggedValue().
QString QCborValue::toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opts = Compact) const
Crée l'équivalent en notation de diagnostic de cet objet CBOR et le renvoie. Le paramètre ` opts ` contrôle le dialecte de la notation. La notation de diagnostic est utile lors du débogage, car elle aide le développeur à comprendre quelle valeur est stockée dans l’ QCborValue ou dans un flux CBOR. C’est pourquoi l’API Qt ne prend pas en charge la reconversion de la notation de diagnostic en format mémoire ou en flux CBOR, bien que la représentation soit unique et que cela soit techniquement possible.
La notation diagnostique CBOR est spécifiée par la section 6 de la RFC 7049. Il s'agit d'une représentation textuelle du flux CBOR, très similaire à JSON, mais qui prend en charge les types CBOR absents de JSON. Le format étendu activé par l'indicateur ` ExtendedFormat ` figure actuellement dans certains projets de l'IETF et son format est susceptible d'évoluer.
Cette fonction produit la représentation équivalente du flux que produirait ` toCbor()`, sans aucune option de transformation fournie dans ce cas. Cela implique également que cette fonction peut ne pas produire une représentation du flux qui a été utilisé pour créer l’objet, si celui-ci a été créé à l’aide de ` fromCbor()`, car cette fonction a pu appliquer des transformations. Pour une notation haute fidélité d’un flux, sans transformation, voir l’exemple « cbordump ».
Voir également toCbor() et QJsonDocument::toJson().
double QCborValue::toDouble(double defaultValue = 0) const
Renvoie la valeur à virgule flottante stockée dans cet objet ` QCborValue`, si celle-ci est de type `Double`. Si elle est de type `Integer`, cette fonction renvoie la valeur entière convertie en `Double`. Dans tous les autres cas, elle renvoie ` defaultValue`.
Voir également isDouble(), isInteger() et toInteger().
qint64 QCborValue::toInteger(qint64 defaultValue = 0) const
Renvoie la valeur entière stockée dans cet objet ` QCborValue`, si celui-ci est de type entier. S'il est de type `Double`, cette fonction renvoie la valeur à virgule flottante convertie en entier. Dans tous les autres cas, elle renvoie ` defaultValue`.
Voir également isInteger(), isDouble() et toDouble().
QJsonValue QCborValue::toJsonValue() const
Convertit cet objet ` QCborValue ` en une représentation équivalente au format JSON et le renvoie sous la forme d'un ` QJsonValue`.
Veuillez noter que le CBOR contient un ensemble de types plus riche et plus étendu que le JSON ; certaines informations peuvent donc être perdues lors de cette conversion. Le tableau suivant compare les types CBOR aux types JSON et indique si des informations sont susceptibles d'être perdues ou non.
| Type CBOR | Type JSON | Remarques |
|---|---|---|
| Bool | Bool | Aucune perte de données possible |
| Double | Nombre | Les valeurs infinies et NaN seront converties en Null ; aucune perte de données pour les autres valeurs |
| Entier | Nombre | Une perte de données est possible lors de la conversion si l’entier est supérieur à253 ou inférieur à-253. |
| Null | Null | Aucune perte de données possible |
| Non défini | Null | Informations de type perdues |
| Chaîne | Chaîne | Aucune perte de données possible |
| Tableau d'octets | Chaîne | Converties en un encodage sans perte tel que Base64url, mais la distinction entre les chaînes de caractères et les tableaux d’octets est perdue |
| Autres types simples | Chaîne | Informations sur le type perdues |
| Tableau | Tableau | La conversion s'applique à chaque valeur contenue |
| Table de correspondance | Objet | Les clés sont converties en chaîne de caractères ; les valeurs sont converties selon ce tableau |
| Balises et types étendus | Spécial | Le numéro de balise est perdu et la valeur balisée est convertie au format JSON |
Pour plus d’informations sur la conversion des clés de table CBOR en chaînes de caractères, consultez QCborMap::toJsonObject().
Si cet « QCborValue » contient la valeur « undefined », cette fonction renverra également un « QJsonValue » de type « undefined ». Notez que JSON ne prend pas en charge les valeurs « undefined » et que les QJsonValues de type « undefined » constituent une extension de la spécification. Elles ne peuvent pas être stockées dans une « QJsonArray » ou une « QJsonObject », mais peuvent être renvoyées par des fonctions pour signaler un échec. À toutes autres fins, elles sont équivalentes à « null ».
Traitement particulier des balises et des types étendus
Certaines balises font l’objet d’un traitement particulier et modifient la transformation de la valeur balisée de CBOR vers JSON. Le tableau suivant répertorie ces cas particuliers :
| Balise | Type CBOR | Transformation |
|---|---|---|
| ExpectedBase64url | Tableau d’octets | Encode le tableau d'octets au format Base64url |
| ExpectedBase64 | Tableau d'octets | Encode le tableau d'octets au format Base64 |
| ExpectedBase16 | Tableau d'octets | Encode le tableau d'octets au format hexadécimal |
| URL | URL et chaîne de caractères | Utilise la fonction ` QUrl::toEncoded()` pour normaliser l'encodage au format entièrement encodé de l'URL |
| Uuid | Uuid et tableau d'octets | Utilise la fonction ` QUuid::toString()` pour créer la représentation sous forme de chaîne |
Voir également fromJsonValue(), toVariant(), QCborArray::toJsonArray() et QCborMap::toJsonObject().
Renvoie la valeur de la carte stockée dans cet objet ` QCborValue`, si celui-ci est de type carte. Sinon, elle renvoie ` defaultValue`.
Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers QCborMap.
Voir également isMap(), isArray(), isContainer() et toArray().
QRegularExpression QCborValue::toRegularExpression(const QRegularExpression &defaultValue = {}) const
Renvoie la valeur de l'expression régulière stockée dans cette variable ` QCborValue`, si celle-ci est de type « motif d'expression régulière étendu ». Sinon, elle renvoie ` defaultValue`.
Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QRegularExpression`.
Voir également isRegularExpression(), isTag() et taggedValue().
QCborSimpleType QCborValue::toSimpleType(QCborSimpleType defaultValue = QCborSimpleType::Undefined) const
Renvoie le type simple auquel appartient l'QCborValue, s'il s'agit d'un type simple. S'il ne s'agit pas d'un type simple, elle renvoie « defaultValue ».
Les types suivants sont des types simples et cette fonction renverra les valeurs indiquées :
| QCborValue::False | QCborSimpleType::False |
| QCborValue::True | QCborSimpleType::True |
| QCborValue::Null | QCborSimpleType::Null |
| QCborValue::Undefined | QCborSimpleType::Undefined |
Voir également type(), isSimpleType(), isBool(), isTrue(), isFalse(), isNull() et isUndefined().
QString QCborValue::toString(const QString &defaultValue = {}) const
Renvoie la valeur de type chaîne stockée dans cet objet ` QCborValue`, si celle-ci est de type chaîne. Sinon, elle renvoie ` defaultValue`.
Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers « QString ».
Voir également toStringView(), isString(), isByteArray() et toByteArray().
[since 6.10] QAnyStringView QCborValue::toStringView(QAnyStringView defaultValue = {}) const
Renvoie la valeur de type chaîne stockée dans cet QCborValue, si celle-ci est de type chaîne. Sinon, elle renvoie defaultValue. Étant donné que QCborValue stocke les chaînes au format US-ASCII, UTF-8 ou UTF-16, la valeur QAnyStringView renvoyée peut être dans n'importe lequel de ces encodages.
Cette fonction n’alloue pas de mémoire. La valeur de retour est valide jusqu’au prochain appel d’une fonction membre non-const sur cet objet. Si cet objet sort de sa portée, la valeur de retour est valide jusqu’au prochain appel d’une fonction membre non-const sur l’objet CBOR parent (carte ou tableau).
Notez que cette fonction n’effectue aucune conversion depuis d’autres types vers l’ QString.
Cette fonction a été introduite dans Qt 6.10.
Voir également ` toString()`, ` isString()`, ` isByteArray()` et ` toByteArray()`.
QUrl QCborValue::toUrl(const QUrl &defaultValue = {}) const
Renvoie la valeur de l'URL stockée dans cet objet ` QCborValue`, si celui-ci est de type « URL étendu ». Sinon, elle renvoie ` defaultValue`.
Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QUrl`.
Voir également isUrl(), isTag() et taggedValue().
QUuid QCborValue::toUuid(const QUuid &defaultValue = {}) const
Renvoie la valeur UUID stockée dans cet objet ` QCborValue`, s'il s'agit d'un type UUID étendu. Sinon, elle renvoie ` defaultValue`.
Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QUuid`.
Voir également isUuid(), isTag() et taggedValue().
QVariant QCborValue::toVariant() const
Convertit cette valeur en un type natif Qt et renvoie l'QVariant correspondant.
Le tableau suivant répertorie les correspondances établies entre QCborValue types et Qt meta types.
| Type CBOR | Type Qt ou C++ | Remarques |
|---|---|---|
| Entier | qint64 | |
| Double | double | |
| Bool | bool | |
| Null | std::nullptr_t | |
| Non défini | sans type (QVariant()) | |
| Tableau d'octets | QByteArray | |
| Chaîne | QString | |
| Tableau | QVariantList | Convertit toutes les valeurs de manière récursive |
| Table de correspondance | QVariantMap | Les types de clés sont « convertis en chaînes de caractères » |
| Autres types simples | QCborSimpleType | |
| DateTime | QDateTime | |
| URL | QUrl | |
| RegularExpression | QRegularExpression | |
| Uuid | QUuid | |
| Autres balises | Spécial | La balise est ignorée et la valeur balisée est convertie à l'aide de cette fonction |
Notez que les valeurs contenues dans les tables de correspondance CBOR et les tableaux sont également converties de manière récursive à l’aide de cette fonction, puis placées respectivement dans QVariantMap et QVariantList. Vous ne trouverez pas QCborMap ni QCborArray stockés à l’intérieur des QVariants.
Les QVariantMaps possèdent des clés de type chaîne de caractères, contrairement au CBOR ; la conversion d’une QCborMap en QVariantMap implique donc une étape de « conversion en chaîne » des valeurs des clés. Voir QCborMap::toJsonObject() pour plus de détails.
Voir également fromVariant(), toJsonValue(), QCborArray::toVariantList() et QCborMap::toVariantMap().
QCborValue::Type QCborValue::type() const
Renvoie le type de cet objet QCborValue. Ce type peut également être récupéré ultérieurement à l'aide de l'une des fonctions « isXxx ».
Voir également isInteger(), isByteArray(), isString(), isArray(), isMap(), isTag(), isFalse(), isTrue(), isBool(), isNull(), isUndefined, isDouble(), isDateTime(), isUrl(), isRegularExpression() et isUuid().
[noexcept] QCborValue &QCborValue::operator=(const QCborValue &other)
Remplace le contenu de cet objet QCborObject par une copie de other.
[noexcept] QCborValue &QCborValue::operator=(QCborValue &&other)
Déplace le contenu de l'objet other QCborValue vers celui-ci et libère les ressources de ce dernier. Renvoie une référence à cet objet.
Il s'agit d'une fonction surchargée.
QCborValueRef QCborValue::operator[](const QString &key)
Renvoie une référence de type `QCborValueRef` pouvant être utilisée pour lire ou modifier l’entrée de cette structure (considérée comme une carte) à l’aide de l’ key donné. Lorsque cet QCborValue est de type ` QCborMap`, cette fonction équivaut à l’opérateur `[]` correspondant sur cette carte.
Avant de renvoyer la référence : si cet QCborValue était un tableau, il est d’abord converti en carte (de sorte que map[i] soit array[i] pour chaque index, i, avec des array[i] valides) ; sinon, s’il ne s’agissait pas d’une carte, il sera remplacé par une carte vide.
Voir également operator[](qint64), QCborMap::operator[], QCborMap::value() et QCborMap::find().
const QCborValue QCborValue::operator[](const QString &key) const
Si cet objet QCborValue est un QCborMap, cette fonction recherche dans les éléments la valeur dont la clé correspond à key. S'il n'existe aucune clé correspondant à key dans la carte ou si cet objet QCborValue n'est pas une carte, la fonction renvoie la valeur « undefined ».
Cette fonction est équivalente à :
value.toMap().value(key);Voir également operator[](qint64), QCborMap::operator[], QCborMap::value() et QCborMap::find().
QCborValueRef QCborValue::operator[](QLatin1StringView key)
Renvoie une référence de type `QCborValueRef` pouvant être utilisée pour lire ou modifier l’entrée de cette structure (considérée comme une carte) à l’aide de l’ key donné. Lorsque cet QCborValue est un QCborMap, cette fonction équivaut à l’opérateur [] correspondant sur cette carte.
Avant de renvoyer la référence : si cet QCborValue était un tableau, il est d’abord converti en carte (de sorte que map[i] soit array[i] pour chaque index, i, avec des array[i] valides) ; sinon, s’il ne s’agissait pas d’une carte, il sera remplacé par une carte vide.
Il s’agit d’une fonction surchargée.
Voir également operator[](qint64), QCborMap::operator[], QCborMap::value() et QCborMap::find().
QCborValueRef QCborValue::operator[](qint64 key)
Renvoie une référence `QCborValueRef` pouvant être utilisée pour lire ou modifier l’entrée de cet objet (sous forme de carte ou de tableau) à l’aide de l’ key fournie. Lorsque cette QCborValue est une QCborMap ou, pour 0 <= key < 0x10000, une QCborArray, cette fonction équivaut à l’opérateur `[]` correspondant sur cette carte ou ce tableau.
Avant de renvoyer la référence : si cet QCborValue était un tableau mais que la clé est hors de la plage autorisée, le tableau est d’abord converti en carte (de sorte que map[i] soit array[i] pour chaque index, i, avec une array[i] valide) ; sinon, s’il ne s’agissait pas d’une carte, il sera remplacé par une carte vide.
Il s’agit d’une fonction surchargée.
Voir également operator[], QCborMap::operator[], QCborMap::value(), QCborMap::find(), QCborArray::operator[] et QCborArray::at().
const QCborValue QCborValue::operator[](QLatin1StringView key) const
Si cet objet QCborValue est une carte QCborMap, cette fonction recherche dans les éléments de la carte la valeur dont la clé correspond à key. S’il n’y a pas de clé correspondant à key dans la carte ou si cet objet QCborValue n’est pas une carte, la fonction renvoie la valeur « undefined ».
Cette fonction est équivalente à :
value.toMap().value(key);Il s'agit d'une fonction surchargée.
Voir également operator[](qint64), QCborMap::operator[], QCborMap::value() et QCborMap::find().
const QCborValue QCborValue::operator[](qint64 key) const
Si cet objet QCborValue est un QCborMap, la fonction recherche dans les éléments la valeur dont la clé correspond à key. S'il s'agit d'un QCborArray, elle renvoie l'élément dont l'index est key. S'il n'y a pas de valeur correspondante dans le tableau ou la carte, ou si cet objet QCborValue n'est ni un tableau ni une carte, elle renvoie la valeur « undefined ».
Il s’agit d’une fonction surchargée.
Voir également operator[], QCborMap::operator[], QCborMap::value(), QCborMap::find(), QCborArray::operator[] et QCborArray::at().
Liens connexes pour les non-membres
[noexcept] bool operator!=(const QCborValue &lhs, const QCborValue &rhs)
Compare lhs et rhs, et renvoie « true » si leur contenu diffère, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s’effectue de manière récursive sur les éléments qu’ils contiennent.
Pour plus d’informations sur l’égalité CBOR dans Qt, voir QCborValue::compare().
Voir également compare(), QCborMap::operator==(), operator==() et operator<().
[noexcept] bool operator<(const QCborValue &lhs, const QCborValue &rhs)
Compare lhs et rhs, et renvoie « true » si lhs doit être trié avant rhs, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s'effectue de manière récursive sur les éléments qu'ils contiennent.
Pour plus d’informations sur l’ordre de tri CBOR, voir QCborValue::compare().
Voir également compare(), QCborValue::operator==(), QCborMap::operator==(), operator==() et operator!=().
[noexcept] bool operator<=(const QCborValue &lhs, const QCborValue &rhs)
Compare lhs et rhs, et renvoie « true » si lhs doit être trié avant rhs ou s’il est égal à rhs, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s’effectue de manière récursive sur les éléments qu’ils contiennent.
Pour plus d’informations sur l’ordre de tri CBOR, voir QCborValue::compare().
Voir également compare(), QCborValue::operator<(), QCborMap::operator==(), operator==() et operator!=().
[noexcept] bool operator==(const QCborValue &lhs, const QCborValue &rhs)
Compare lhs et rhs, et renvoie « true » si leur contenu est identique, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s’effectue de manière récursive sur les éléments qu’ils contiennent.
Pour plus d’informations sur l’égalité CBOR dans Qt, voir compare().
Voir également compare(), QCborMap::operator==(), operator!=() et operator<().
[noexcept] bool operator>(const QCborValue &lhs, const QCborValue &rhs)
Compare lhs et rhs, et renvoie « true » si lhs doit être classé après rhs, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s'effectue de manière récursive sur les éléments qu'ils contiennent.
Pour plus d’informations sur l’ordre de tri CBOR, voir QCborValue::compare().
Voir également compare(), QCborValue::operator>=(), QCborMap::operator==(), operator==() et operator!=().
[noexcept] bool operator>=(const QCborValue &lhs, const QCborValue &rhs)
Compare lhs et rhs, et renvoie « true » si lhs doit être classé après rhs ou s'il est égal à rhs, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s'effectue de manière récursive sur les éléments qu'ils contiennent.
Pour plus d’informations sur l’ordre de tri CBOR, voir QCborValue::compare().
Voir également compare(), QCborValue::operator>(), QCborMap::operator==(), operator==() et operator!=().
© 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.