diff options
author | csharptest <roger@csharptest.net> | 2011-06-03 14:15:21 -0500 |
---|---|---|
committer | rogerk <devnull@localhost> | 2011-06-03 14:15:21 -0500 |
commit | 123e534914df3dbdcd918ec4f8d79c47a3bf85e5 (patch) | |
tree | 036d1f3d61f9a5eb3dcb6950f35a0bd32022058e /src/ProtocolBuffers/MessageStreamIterator.cs | |
parent | ffafdaa0f9a96d17d456c844a3e554512a5c121d (diff) | |
download | protobuf-123e534914df3dbdcd918ec4f8d79c47a3bf85e5.tar.gz protobuf-123e534914df3dbdcd918ec4f8d79c47a3bf85e5.tar.bz2 protobuf-123e534914df3dbdcd918ec4f8d79c47a3bf85e5.zip |
Canged CodedInputStream.ReadTag to use boolean result with out params to
support reading a field name rather than a field tag.
Diffstat (limited to 'src/ProtocolBuffers/MessageStreamIterator.cs')
-rw-r--r-- | src/ProtocolBuffers/MessageStreamIterator.cs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/ProtocolBuffers/MessageStreamIterator.cs b/src/ProtocolBuffers/MessageStreamIterator.cs index 7bc32383..9b266fa4 100644 --- a/src/ProtocolBuffers/MessageStreamIterator.cs +++ b/src/ProtocolBuffers/MessageStreamIterator.cs @@ -219,13 +219,14 @@ namespace Google.ProtocolBuffers CodedInputStream input = CodedInputStream.CreateInstance(stream);
input.SetSizeLimit(sizeLimit);
uint tag;
- while ((tag = input.ReadTag()) != 0)
+ string name;
+ while (input.ReadTag(out tag, out name))
{
- if (tag != ExpectedTag)
- {
+ if ((tag == 0 && name == "item") || (tag == ExpectedTag))
+ yield return messageReader(input, extensionRegistry);
+ else
throw InvalidProtocolBufferException.InvalidMessageStreamTag();
- }
- yield return messageReader(input, extensionRegistry);
+
input.ResetSizeCounter();
}
}
|