Commit cdb4518a authored by Jon Skeet's avatar Jon Skeet

Overload of ContinueArray for situations where we know in advance that the array isn't packed.

parent 0f3540e2
...@@ -530,6 +530,21 @@ namespace Google.ProtocolBuffers ...@@ -530,6 +530,21 @@ namespace Google.ProtocolBuffers
return true; return true;
} }
private bool ContinueArray(uint currentTag)
{
string ignore;
uint next;
if (PeekNextTag(out next, out ignore))
{
if (next == currentTag)
{
hasNextTag = false;
return true;
}
}
return false;
}
/// <summary> /// <summary>
/// Returns true if the next tag is also part of the same unpacked array /// Returns true if the next tag is also part of the same unpacked array
/// </summary> /// </summary>
...@@ -588,7 +603,7 @@ namespace Google.ProtocolBuffers ...@@ -588,7 +603,7 @@ namespace Google.ProtocolBuffers
{ {
list.Add(value); list.Add(value);
} }
} while (ContinueArray(fieldTag, false, 0)); } while (ContinueArray(fieldTag));
} }
} }
...@@ -600,7 +615,7 @@ namespace Google.ProtocolBuffers ...@@ -600,7 +615,7 @@ namespace Google.ProtocolBuffers
{ {
ReadString(ref tmp); ReadString(ref tmp);
list.Add(tmp); list.Add(tmp);
} while (ContinueArray(fieldTag, false, 0)); } while (ContinueArray(fieldTag));
} }
[CLSCompliant(false)] [CLSCompliant(false)]
...@@ -611,7 +626,7 @@ namespace Google.ProtocolBuffers ...@@ -611,7 +626,7 @@ namespace Google.ProtocolBuffers
{ {
ReadBytes(ref tmp); ReadBytes(ref tmp);
list.Add(tmp); list.Add(tmp);
} while (ContinueArray(fieldTag, false, 0)); } while (ContinueArray(fieldTag));
} }
[CLSCompliant(false)] [CLSCompliant(false)]
...@@ -869,7 +884,7 @@ namespace Google.ProtocolBuffers ...@@ -869,7 +884,7 @@ namespace Google.ProtocolBuffers
} }
unknown.Add(unkval); unknown.Add(unkval);
} }
} while (ContinueArray(fieldTag, false, 0)); } while (ContinueArray(fieldTag));
} }
} }
...@@ -921,7 +936,7 @@ namespace Google.ProtocolBuffers ...@@ -921,7 +936,7 @@ namespace Google.ProtocolBuffers
} }
unknown.Add(unkval); unknown.Add(unkval);
} }
} while (ContinueArray(fieldTag, false, 0)); } while (ContinueArray(fieldTag));
} }
} }
...@@ -934,7 +949,7 @@ namespace Google.ProtocolBuffers ...@@ -934,7 +949,7 @@ namespace Google.ProtocolBuffers
IBuilderLite builder = messageType.WeakCreateBuilderForType(); IBuilderLite builder = messageType.WeakCreateBuilderForType();
ReadMessage(builder, registry); ReadMessage(builder, registry);
list.Add((T) builder.WeakBuildPartial()); list.Add((T) builder.WeakBuildPartial());
} while (ContinueArray(fieldTag, false, 0)); } while (ContinueArray(fieldTag));
} }
[CLSCompliant(false)] [CLSCompliant(false)]
...@@ -946,7 +961,7 @@ namespace Google.ProtocolBuffers ...@@ -946,7 +961,7 @@ namespace Google.ProtocolBuffers
IBuilderLite builder = messageType.WeakCreateBuilderForType(); IBuilderLite builder = messageType.WeakCreateBuilderForType();
ReadGroup(WireFormat.GetTagFieldNumber(fieldTag), builder, registry); ReadGroup(WireFormat.GetTagFieldNumber(fieldTag), builder, registry);
list.Add((T) builder.WeakBuildPartial()); list.Add((T) builder.WeakBuildPartial());
} while (ContinueArray(fieldTag, false, 0)); } while (ContinueArray(fieldTag));
} }
/// <summary> /// <summary>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment