aboutsummaryrefslogtreecommitdiff
path: root/src/ProtoGen
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2009-05-29 06:34:52 +0100
committerJon Skeet <skeet@pobox.com>2009-05-29 06:34:52 +0100
commit2e6dc12fa8e8cf58a8ab27838b11f929b5cf909b (patch)
treed91d424a60adc04ac4c63d6dad592aa141b0bb7b /src/ProtoGen
parent43da7ae328b699d9c6e64ea909e348fac3506f73 (diff)
downloadprotobuf-2e6dc12fa8e8cf58a8ab27838b11f929b5cf909b.tar.gz
protobuf-2e6dc12fa8e8cf58a8ab27838b11f929b5cf909b.tar.bz2
protobuf-2e6dc12fa8e8cf58a8ab27838b11f929b5cf909b.zip
Write/Read delimited messages
Diffstat (limited to 'src/ProtoGen')
-rw-r--r--src/ProtoGen/MessageGenerator.cs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ProtoGen/MessageGenerator.cs b/src/ProtoGen/MessageGenerator.cs
index 9857764d..4b983003 100644
--- a/src/ProtoGen/MessageGenerator.cs
+++ b/src/ProtoGen/MessageGenerator.cs
@@ -218,6 +218,12 @@ namespace Google.ProtocolBuffers.ProtoGen {
writer.WriteLine("public static {0} ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {{", ClassName);
writer.WriteLine(" return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();");
writer.WriteLine("}");
+ writer.WriteLine("public static {0} ParseDelimitedFrom(global::System.IO.Stream input) {{", ClassName);
+ writer.WriteLine(" return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();");
+ writer.WriteLine("}");
+ writer.WriteLine("public static {0} ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {{", ClassName);
+ writer.WriteLine(" return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();");
+ writer.WriteLine("}");
writer.WriteLine("public static {0} ParseFrom(pb::CodedInputStream input) {{", ClassName);
writer.WriteLine(" return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();");
writer.WriteLine("}");
@@ -325,6 +331,9 @@ namespace Google.ProtocolBuffers.ProtoGen {
writer.WriteLine("public override {0} BuildPartial() {{", ClassName);
writer.Indent();
+ writer.WriteLine("if (result == null) {");
+ writer.WriteLine(" throw new global::System.InvalidOperationException(\"build() has already been called on this Builder\");");
+ writer.WriteLine("}");
foreach (FieldDescriptor field in Descriptor.Fields) {
SourceGenerators.CreateFieldGenerator(field).GenerateBuildingCode(writer);
}