diff options
Diffstat (limited to 'src/com/google/common/io/protocol/ProtoBuf.java')
-rw-r--r-- | src/com/google/common/io/protocol/ProtoBuf.java | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/src/com/google/common/io/protocol/ProtoBuf.java b/src/com/google/common/io/protocol/ProtoBuf.java index 8ebd1b9a..ff7a3243 100644 --- a/src/com/google/common/io/protocol/ProtoBuf.java +++ b/src/com/google/common/io/protocol/ProtoBuf.java @@ -145,6 +145,28 @@ public class ProtoBuf { } /** + * Adds a new protobuf for the specified tag, setting the child protobuf's + * type correctly for the tag. + * @param tag the tag for which to create a new protobuf + * @return the newly created protobuf + */ + public ProtoBuf addNewProtoBuf(int tag) { + ProtoBuf child = newProtoBufForTag(tag); + addProtoBuf(tag, child); + return child; + } + + /** + * Creates and returns a new protobuf for the specified tag, setting the new + * protobuf's type correctly for the tag. + * @param tag the tag for which to create a new protobuf + * @return the newly created protobuf + */ + public ProtoBuf newProtoBufForTag(int tag) { + return new ProtoBuf((ProtoBufType) msgType.getData(tag)); + } + + /** * Appends the given (repeated) tag with the given String value. */ public void addString(int tag, String value){ @@ -181,7 +203,7 @@ public class ProtoBuf { return (byte[]) getObject(tag, index, ProtoBufType.TYPE_DATA); } - /** + /** * Returns the integer value for the given tag. */ public int getInt(int tag) { @@ -196,7 +218,7 @@ public class ProtoBuf { ProtoBufType.TYPE_INT32)).longValue(); } - /** + /** * Returns the long value for the given tag. */ public long getLong(int tag) { @@ -238,7 +260,7 @@ public class ProtoBuf { return Double.longBitsToDouble(getLong(tag, index)); } - /** + /** * Returns the group or nested message for the given tag. */ public ProtoBuf getProtoBuf(int tag) { @@ -269,7 +291,7 @@ public class ProtoBuf { return (String) getObject(tag, index, ProtoBufType.TYPE_TEXT); } - /** + /** * Returns the type definition of this protocol buffer or group -- if set. */ public ProtoBufType getType() { @@ -729,6 +751,18 @@ public class ProtoBuf { setObject(tag, pb); } + /** + * Sets a new protobuf for the specified tag, setting the child protobuf's + * type correctly for the tag. + * @param tag the tag for which to create a new protobuf + * @return the newly created protobuf + */ + public ProtoBuf setNewProtoBuf(int tag) { + ProtoBuf child = newProtoBufForTag(tag); + setProtoBuf(tag, child); + return child; + } + /** * Sets the given tag to the given String value. */ |