Any Class

class QtProtobuf::Any

A helper class to simplify working with the protobuf Any type. More...

Header: #include <Any>
CMake: find_package(Qt6 REQUIRED COMPONENTS ProtobufWellKnownTypes)
target_link_libraries(mytarget PRIVATE Qt6::ProtobufWellKnownTypes)
qmake: QT += protobufwellknowntypes
Since: Qt 6.6
Inherits: QProtobufMessage
Status: Technical Preview

Public Functions

Any()
Any(const QtProtobuf::Any &other)
~Any()
std::optional<T> as(QAbstractProtobufSerializer *serializer) const
void setTypeUrl(const QString &typeUrl)
void setValue(const QByteArray &value)
QString typeUrl() const
QByteArray value() const
QtProtobuf::Any &operator=(const QtProtobuf::Any &other)

Static Public Members

QtProtobuf::Any fromMessage(QAbstractProtobufSerializer *serializer, const T &message, QAnyStringView typeUrlPrefix = defaultUrlPrefix())
bool operator!=(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)
bool operator==(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)

Detailed Description

The Any class enables easy casting to and from other types using as() and fromMessage().

It is the type used in code generated by qtprotobufgen when a message contains a field of the google.protobuf.Any type.

Member Function Documentation

Any::Any()

Constructs a defaulted, empty, instance of Any.

Any::Any(const QtProtobuf::Any &other)

Constructs a copy of other.

[noexcept] Any::~Any()

Destroys this instance of Any

template <typename T> std::optional<T> Any::as(QAbstractProtobufSerializer *serializer) const

This function compares the message name of T with the value of typeUrl() before deserializing the data using serializer.

If the verification or deserialization fails it will return std::nullopt.

Note: T must be a class derived from QProtobufMessage with the Q_PROTOBUF_OBJECT macro or (for a nested Any message) be Any itself.

[static] template <typename T> QtProtobuf::Any Any::fromMessage(QAbstractProtobufSerializer *serializer, const T &message, QAnyStringView typeUrlPrefix = defaultUrlPrefix())

This function serializes the given message as the value of the returned Any instance. This instance's typeUrl() is constructed from a prefix, a forward slash and the message name obtained from T::propertyOrdering.getMessageFullName() using serializer. If typeUrlPrefix is supplied, it is used as prefix, otherwise "type.googleapis.com" is used.

Note: T must be a class derived from QProtobufMessage with the Q_PROTOBUF_OBJECT macro or (for a nested Any message) be Any itself.

void Any::setTypeUrl(const QString &typeUrl)

Sets the type URL for the data contained to typeUrl.

Note: No verification is performed on the input to test if it's correct or in a valid format.

Note: Setter function for property typeUrl.

See also typeUrl() and fromMessage().

void Any::setValue(const QByteArray &value)

Sets the raw bytes of the value stored to value.

value must be the output of serializing a message.

Note: Setter function for property value.

See also value() and fromMessage().

QString Any::typeUrl() const

Returns the type URL of the Any object. The URL is meant as a hint for what the contained data really is.

Note: Qt has no support for dynamically obtaining any potential recipes for deconstructing types and simply uses the type URL to verify that types passed as T to as<T>() are of the correct type.

Note: Getter function for property typeUrl.

See also setTypeUrl() and value().

QByteArray Any::value() const

Returns the raw bytes that make up the value stored.

Consult typeUrl() to determine how to interpret these bytes.

Note: Getter function for property value.

See also setValue() and typeUrl().

QtProtobuf::Any &Any::operator=(const QtProtobuf::Any &other)

Copies the data of other into this instance.

Related Non-Members

[noexcept] bool operator!=(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)

Returns true if the two instances of Any, lhs and rhs, are distinct.

[noexcept] bool operator==(const QtProtobuf::Any &lhs, const QtProtobuf::Any &rhs)

Returns true if the two instances of Any, lhs and rhs, compare equal.