aboutsummaryrefslogtreecommitdiffhomepage
path: root/csharp/src/AddressBook
diff options
context:
space:
mode:
authorGravatar Jon Skeet <jonskeet@google.com>2015-06-23 16:09:27 +0100
committerGravatar Jon Skeet <jonskeet@google.com>2015-06-24 17:56:22 +0100
commitbfee2dfe137b07e64ebd46baf71d932d58d01b1f (patch)
tree4bf6258a990369335cc82c8a8059eaaf1dc2dd06 /csharp/src/AddressBook
parent94071b54d24d2f2f1cb5933a692b5397a047057c (diff)
Implement freezing for messages and repeated fields.
Fixes issue #523.
Diffstat (limited to 'csharp/src/AddressBook')
-rw-r--r--csharp/src/AddressBook/Addressbook.cs62
1 files changed, 52 insertions, 10 deletions
diff --git a/csharp/src/AddressBook/Addressbook.cs b/csharp/src/AddressBook/Addressbook.cs
index cd1f6231..2fb6be83 100644
--- a/csharp/src/AddressBook/Addressbook.cs
+++ b/csharp/src/AddressBook/Addressbook.cs
@@ -76,6 +76,9 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
get { return global::Google.ProtocolBuffers.Examples.AddressBook.Addressbook.internal__static_tutorial_Person__FieldAccessorTable; }
}
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
public Person() { }
public Person(Person other) {
@@ -89,30 +92,44 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
return new Person(this);
}
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ phone_.Freeze();
+ }
+
public const int NameFieldNumber = 1;
private string name_ = "";
public string Name {
get { return name_; }
- set { name_ = value ?? ""; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ name_ = value ?? "";
+ }
}
-
public const int IdFieldNumber = 2;
private int id_;
public int Id {
get { return id_; }
- set { id_ = value; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ id_ = value;
+ }
}
-
public const int EmailFieldNumber = 3;
private string email_ = "";
public string Email {
get { return email_; }
- set { email_ = value ?? ""; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ email_ = value ?? "";
+ }
}
-
public const int PhoneFieldNumber = 4;
private readonly pbc::RepeatedField<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber> phone_ = new pbc::RepeatedField<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber>();
public pbc::RepeatedField<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber> Phone {
@@ -254,6 +271,9 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
get { return global::Google.ProtocolBuffers.Examples.AddressBook.Addressbook.internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable; }
}
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
public PhoneNumber() { }
public PhoneNumber(PhoneNumber other) {
@@ -265,22 +285,33 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
return new PhoneNumber(this);
}
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
public const int NumberFieldNumber = 1;
private string number_ = "";
public string Number {
get { return number_; }
- set { number_ = value ?? ""; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ number_ = value ?? "";
+ }
}
-
public const int TypeFieldNumber = 2;
private global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType type_ = global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType.HOME;
public global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType Type {
get { return type_; }
- set { type_ = value; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ type_ = value;
+ }
}
-
public override bool Equals(object other) {
return Equals(other as PhoneNumber);
}
@@ -382,6 +413,9 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
get { return global::Google.ProtocolBuffers.Examples.AddressBook.Addressbook.internal__static_tutorial_AddressBook__FieldAccessorTable; }
}
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
public AddressBook() { }
public AddressBook(AddressBook other) {
@@ -392,6 +426,14 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
return new AddressBook(this);
}
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ person_.Freeze();
+ }
+
public const int PersonFieldNumber = 1;
private readonly pbc::RepeatedField<global::Google.ProtocolBuffers.Examples.AddressBook.Person> person_ = new pbc::RepeatedField<global::Google.ProtocolBuffers.Examples.AddressBook.Person>();
public pbc::RepeatedField<global::Google.ProtocolBuffers.Examples.AddressBook.Person> Person {