aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers/ExtendableMessageLite.cs
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2010-11-09 20:49:12 -0600
committercsharptest <roger@csharptest.net>2010-11-09 20:49:12 -0600
commit272cb8aee775de65e08b4ab17c485cd678d08266 (patch)
tree3489244ff5bd901592b535ea5ad9352096d1521f /src/ProtocolBuffers/ExtendableMessageLite.cs
parente49547735834485dd22842e1a82bc5ae4139b8a8 (diff)
downloadprotobuf-272cb8aee775de65e08b4ab17c485cd678d08266.tar.gz
protobuf-272cb8aee775de65e08b4ab17c485cd678d08266.tar.bz2
protobuf-272cb8aee775de65e08b4ab17c485cd678d08266.zip
Lite feature complete.
Diffstat (limited to 'src/ProtocolBuffers/ExtendableMessageLite.cs')
-rw-r--r--src/ProtocolBuffers/ExtendableMessageLite.cs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/ProtocolBuffers/ExtendableMessageLite.cs b/src/ProtocolBuffers/ExtendableMessageLite.cs
index fc2ccb6c..aed8545d 100644
--- a/src/ProtocolBuffers/ExtendableMessageLite.cs
+++ b/src/ProtocolBuffers/ExtendableMessageLite.cs
@@ -33,7 +33,10 @@
#endregion
using System;
+using System.Collections;
using System.Collections.Generic;
+using Google.ProtocolBuffers.Collections;
+
namespace Google.ProtocolBuffers {
public abstract class ExtendableMessageLite<TMessage, TBuilder> : GeneratedMessageLite<TMessage, TBuilder>
where TMessage : GeneratedMessageLite<TMessage, TBuilder>
@@ -49,6 +52,31 @@ namespace Google.ProtocolBuffers {
get { return extensions; }
}
+ public override bool Equals(object obj) {
+ ExtendableMessageLite<TMessage, TBuilder> other = obj as ExtendableMessageLite<TMessage, TBuilder>;
+ return !ReferenceEquals(null, other) &&
+ Dictionaries.Equals(extensions.AllFields, other.extensions.AllFields);
+ }
+
+ public override int GetHashCode() {
+ return Dictionaries.GetHashCode(extensions.AllFields);
+ }
+
+ /// <summary>
+ /// writes the extensions to the text stream
+ /// </summary>
+ public override void PrintTo(System.IO.TextWriter writer) {
+ foreach (KeyValuePair<IFieldDescriptorLite, object> entry in extensions.AllFields) {
+ string fn = string.Format("[{0}]", entry.Key.FullName);
+ if (entry.Key.IsRepeated) {
+ foreach (object o in ((IEnumerable)entry.Value))
+ PrintField(fn, true, o, writer);
+ } else {
+ PrintField(fn, true, entry.Value, writer);
+ }
+ }
+ }
+
/// <summary>
/// Checks if a singular extension is present.
/// </summary>