Any Class
class QtProtobuf::AnyA 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()) |
Related Non-Members
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.