diff options
author | Jon Skeet <skeet@pobox.com> | 2010-12-12 12:37:30 +0000 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2010-12-12 12:37:30 +0000 |
commit | 1738462b7fbaf806a3bc28b52b61a037b45a73f4 (patch) | |
tree | c29623a454f41741a1cd0f265709cd4cd92647a0 /src/ProtoGen/RepeatedMessageFieldGenerator.cs | |
parent | 0c58d060f7e919439210fff5ee107e023b1c8199 (diff) | |
parent | 00ca60805301f14ff4abc70cef5cd6df0b3f8b67 (diff) | |
download | protobuf-1738462b7fbaf806a3bc28b52b61a037b45a73f4.tar.gz protobuf-1738462b7fbaf806a3bc28b52b61a037b45a73f4.tar.bz2 protobuf-1738462b7fbaf806a3bc28b52b61a037b45a73f4.zip |
First commit of lite code - more to come
Diffstat (limited to 'src/ProtoGen/RepeatedMessageFieldGenerator.cs')
-rw-r--r-- | src/ProtoGen/RepeatedMessageFieldGenerator.cs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ProtoGen/RepeatedMessageFieldGenerator.cs b/src/ProtoGen/RepeatedMessageFieldGenerator.cs index 3eac8090..4461190f 100644 --- a/src/ProtoGen/RepeatedMessageFieldGenerator.cs +++ b/src/ProtoGen/RepeatedMessageFieldGenerator.cs @@ -132,5 +132,22 @@ namespace Google.ProtocolBuffers.ProtoGen { writer.WriteLine(" size += pb::CodedOutputStream.Compute{0}Size({1}, element);", MessageOrGroup, Number); writer.WriteLine("}"); } + + public override void WriteHash(TextGenerator writer) { + writer.WriteLine("foreach({0} i in {1}_)", TypeName, Name); + writer.WriteLine(" hash ^= i.GetHashCode();"); + } + + public override void WriteEquals(TextGenerator writer) { + writer.WriteLine("if({0}_.Count != other.{0}_.Count) return false;", Name); + writer.WriteLine("for(int ix=0; ix < {0}_.Count; ix++)", Name); + writer.WriteLine(" if(!{0}_[ix].Equals(other.{0}_[ix])) return false;", Name); + } + + public override void WriteToString(TextGenerator writer) { + writer.WriteLine("PrintField(\"{0}\", {1}_, writer);", + Descriptor.FieldType == FieldType.Group ? Descriptor.MessageType.Name : Descriptor.Name, Name); + } + } } |