Qt Protobuf Mutable Getters

The generated Qt Protobuf messages allow access to the fields of a message type using mutable getters. The getters have the mut prefix and return a non-const reference to the field.

 message Point {
     double x = 1;
     double y = 2;
 }

 message Line {
     Point start = 1;
     Point end = 2;
 }

The above .proto scheme generates the following code for the Line message:

 class Line : public QProtobufMessage
 {
     const Point &start() const &;
     Point &mutStart() &;
     ...

     const Point &end() const &;
     Point &mutEnd() &;
     ...
 }

For the start and end fields, the qtprotobufgen generator creates additional mutable getters: mutStart and mutEnd. Use these getters to modify fields directly, without creating intermediate messages:

 Line line;

 // Setting the line start point to (5.0, 5.0)
 line.mutStart().setX(5.0);
 line.mutStart().setY(5.0);

 // Setting the line end point to (10.0, 20.0)
 line.mutEnd().setX(10.0);
 line.mutEnd().setY(20.0);

 // Display the Line data
 qDebug().nospace() << "start: (" << line.start().x() << "," << line.start().y() << ") "
     "end: (" << line.end().x() << "," << line.end().y() << ")";

Calling the mutable getters performs any necessary field allocation and allows you to modify the underlying data directly.

Warning: Mutable getters add a mut prefix to field names. If a message contains fields named field and mutField, a naming conflict occurs. This scenario is currently unsupported and will result in a generator error.