commit
f265fb8152
@ -154,6 +154,7 @@ csharp_EXTRA_DIST= \
|
|||||||
csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs \
|
csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs \
|
||||||
csharp/src/Google.Protobuf/Reflection/OneofAccessor.cs \
|
csharp/src/Google.Protobuf/Reflection/OneofAccessor.cs \
|
||||||
csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs \
|
csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs \
|
||||||
|
csharp/src/Google.Protobuf/Reflection/OriginalNameAttribute.cs \
|
||||||
csharp/src/Google.Protobuf/Reflection/PackageDescriptor.cs \
|
csharp/src/Google.Protobuf/Reflection/PackageDescriptor.cs \
|
||||||
csharp/src/Google.Protobuf/Reflection/PartialClasses.cs \
|
csharp/src/Google.Protobuf/Reflection/PartialClasses.cs \
|
||||||
csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs \
|
csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs \
|
||||||
|
@ -73,13 +73,13 @@ namespace Google.Protobuf.Examples.AddressBook
|
|||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case "mobile":
|
case "mobile":
|
||||||
phoneNumber.Type = Person.Types.PhoneType.MOBILE;
|
phoneNumber.Type = Person.Types.PhoneType.Mobile;
|
||||||
break;
|
break;
|
||||||
case "home":
|
case "home":
|
||||||
phoneNumber.Type = Person.Types.PhoneType.HOME;
|
phoneNumber.Type = Person.Types.PhoneType.Home;
|
||||||
break;
|
break;
|
||||||
case "work":
|
case "work":
|
||||||
phoneNumber.Type = Person.Types.PhoneType.WORK;
|
phoneNumber.Type = Person.Types.PhoneType.Work;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
output.Write("Unknown phone type. Using default.");
|
output.Write("Unknown phone type. Using default.");
|
||||||
|
@ -228,9 +228,9 @@ namespace Google.Protobuf.Examples.AddressBook {
|
|||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
public static partial class Types {
|
public static partial class Types {
|
||||||
public enum PhoneType {
|
public enum PhoneType {
|
||||||
MOBILE = 0,
|
[pbr::OriginalName("MOBILE")] Mobile = 0,
|
||||||
HOME = 1,
|
[pbr::OriginalName("HOME")] Home = 1,
|
||||||
WORK = 2,
|
[pbr::OriginalName("WORK")] Work = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
@ -273,7 +273,7 @@ namespace Google.Protobuf.Examples.AddressBook {
|
|||||||
|
|
||||||
/// <summary>Field number for the "type" field.</summary>
|
/// <summary>Field number for the "type" field.</summary>
|
||||||
public const int TypeFieldNumber = 2;
|
public const int TypeFieldNumber = 2;
|
||||||
private global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType type_ = global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE;
|
private global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType type_ = 0;
|
||||||
public global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType Type {
|
public global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType Type {
|
||||||
get { return type_; }
|
get { return type_; }
|
||||||
set {
|
set {
|
||||||
@ -300,7 +300,7 @@ namespace Google.Protobuf.Examples.AddressBook {
|
|||||||
public override int GetHashCode() {
|
public override int GetHashCode() {
|
||||||
int hash = 1;
|
int hash = 1;
|
||||||
if (Number.Length != 0) hash ^= Number.GetHashCode();
|
if (Number.Length != 0) hash ^= Number.GetHashCode();
|
||||||
if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE) hash ^= Type.GetHashCode();
|
if (Type != 0) hash ^= Type.GetHashCode();
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,7 +313,7 @@ namespace Google.Protobuf.Examples.AddressBook {
|
|||||||
output.WriteRawTag(10);
|
output.WriteRawTag(10);
|
||||||
output.WriteString(Number);
|
output.WriteString(Number);
|
||||||
}
|
}
|
||||||
if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE) {
|
if (Type != 0) {
|
||||||
output.WriteRawTag(16);
|
output.WriteRawTag(16);
|
||||||
output.WriteEnum((int) Type);
|
output.WriteEnum((int) Type);
|
||||||
}
|
}
|
||||||
@ -324,7 +324,7 @@ namespace Google.Protobuf.Examples.AddressBook {
|
|||||||
if (Number.Length != 0) {
|
if (Number.Length != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeStringSize(Number);
|
size += 1 + pb::CodedOutputStream.ComputeStringSize(Number);
|
||||||
}
|
}
|
||||||
if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE) {
|
if (Type != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
@ -337,7 +337,7 @@ namespace Google.Protobuf.Examples.AddressBook {
|
|||||||
if (other.Number.Length != 0) {
|
if (other.Number.Length != 0) {
|
||||||
Number = other.Number;
|
Number = other.Number;
|
||||||
}
|
}
|
||||||
if (other.Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE) {
|
if (other.Type != 0) {
|
||||||
Type = other.Type;
|
Type = other.Type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,13 +55,13 @@ namespace Google.Protobuf.Examples.AddressBook
|
|||||||
{
|
{
|
||||||
switch (phoneNumber.Type)
|
switch (phoneNumber.Type)
|
||||||
{
|
{
|
||||||
case Person.Types.PhoneType.MOBILE:
|
case Person.Types.PhoneType.Mobile:
|
||||||
Console.Write(" Mobile phone #: ");
|
Console.Write(" Mobile phone #: ");
|
||||||
break;
|
break;
|
||||||
case Person.Types.PhoneType.HOME:
|
case Person.Types.PhoneType.Home:
|
||||||
Console.Write(" Home phone #: ");
|
Console.Write(" Home phone #: ");
|
||||||
break;
|
break;
|
||||||
case Person.Types.PhoneType.WORK:
|
case Person.Types.PhoneType.Work:
|
||||||
Console.Write(" Work phone #: ");
|
Console.Write(" Work phone #: ");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -199,15 +199,15 @@ namespace Conformance {
|
|||||||
}
|
}
|
||||||
#region Enums
|
#region Enums
|
||||||
public enum WireFormat {
|
public enum WireFormat {
|
||||||
UNSPECIFIED = 0,
|
[pbr::OriginalName("UNSPECIFIED")] Unspecified = 0,
|
||||||
PROTOBUF = 1,
|
[pbr::OriginalName("PROTOBUF")] Protobuf = 1,
|
||||||
JSON = 2,
|
[pbr::OriginalName("JSON")] Json = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ForeignEnum {
|
public enum ForeignEnum {
|
||||||
FOREIGN_FOO = 0,
|
[pbr::OriginalName("FOREIGN_FOO")] ForeignFoo = 0,
|
||||||
FOREIGN_BAR = 1,
|
[pbr::OriginalName("FOREIGN_BAR")] ForeignBar = 1,
|
||||||
FOREIGN_BAZ = 2,
|
[pbr::OriginalName("FOREIGN_BAZ")] ForeignBaz = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -278,7 +278,7 @@ namespace Conformance {
|
|||||||
|
|
||||||
/// <summary>Field number for the "requested_output_format" field.</summary>
|
/// <summary>Field number for the "requested_output_format" field.</summary>
|
||||||
public const int RequestedOutputFormatFieldNumber = 3;
|
public const int RequestedOutputFormatFieldNumber = 3;
|
||||||
private global::Conformance.WireFormat requestedOutputFormat_ = global::Conformance.WireFormat.UNSPECIFIED;
|
private global::Conformance.WireFormat requestedOutputFormat_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Which format should the testee serialize its message to?
|
/// Which format should the testee serialize its message to?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -328,7 +328,7 @@ namespace Conformance {
|
|||||||
int hash = 1;
|
int hash = 1;
|
||||||
if (payloadCase_ == PayloadOneofCase.ProtobufPayload) hash ^= ProtobufPayload.GetHashCode();
|
if (payloadCase_ == PayloadOneofCase.ProtobufPayload) hash ^= ProtobufPayload.GetHashCode();
|
||||||
if (payloadCase_ == PayloadOneofCase.JsonPayload) hash ^= JsonPayload.GetHashCode();
|
if (payloadCase_ == PayloadOneofCase.JsonPayload) hash ^= JsonPayload.GetHashCode();
|
||||||
if (RequestedOutputFormat != global::Conformance.WireFormat.UNSPECIFIED) hash ^= RequestedOutputFormat.GetHashCode();
|
if (RequestedOutputFormat != 0) hash ^= RequestedOutputFormat.GetHashCode();
|
||||||
hash ^= (int) payloadCase_;
|
hash ^= (int) payloadCase_;
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
@ -346,7 +346,7 @@ namespace Conformance {
|
|||||||
output.WriteRawTag(18);
|
output.WriteRawTag(18);
|
||||||
output.WriteString(JsonPayload);
|
output.WriteString(JsonPayload);
|
||||||
}
|
}
|
||||||
if (RequestedOutputFormat != global::Conformance.WireFormat.UNSPECIFIED) {
|
if (RequestedOutputFormat != 0) {
|
||||||
output.WriteRawTag(24);
|
output.WriteRawTag(24);
|
||||||
output.WriteEnum((int) RequestedOutputFormat);
|
output.WriteEnum((int) RequestedOutputFormat);
|
||||||
}
|
}
|
||||||
@ -360,7 +360,7 @@ namespace Conformance {
|
|||||||
if (payloadCase_ == PayloadOneofCase.JsonPayload) {
|
if (payloadCase_ == PayloadOneofCase.JsonPayload) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonPayload);
|
size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonPayload);
|
||||||
}
|
}
|
||||||
if (RequestedOutputFormat != global::Conformance.WireFormat.UNSPECIFIED) {
|
if (RequestedOutputFormat != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RequestedOutputFormat);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RequestedOutputFormat);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
@ -370,7 +370,7 @@ namespace Conformance {
|
|||||||
if (other == null) {
|
if (other == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (other.RequestedOutputFormat != global::Conformance.WireFormat.UNSPECIFIED) {
|
if (other.RequestedOutputFormat != 0) {
|
||||||
RequestedOutputFormat = other.RequestedOutputFormat;
|
RequestedOutputFormat = other.RequestedOutputFormat;
|
||||||
}
|
}
|
||||||
switch (other.PayloadCase) {
|
switch (other.PayloadCase) {
|
||||||
@ -1044,7 +1044,7 @@ namespace Conformance {
|
|||||||
|
|
||||||
/// <summary>Field number for the "optional_nested_enum" field.</summary>
|
/// <summary>Field number for the "optional_nested_enum" field.</summary>
|
||||||
public const int OptionalNestedEnumFieldNumber = 21;
|
public const int OptionalNestedEnumFieldNumber = 21;
|
||||||
private global::Conformance.TestAllTypes.Types.NestedEnum optionalNestedEnum_ = global::Conformance.TestAllTypes.Types.NestedEnum.FOO;
|
private global::Conformance.TestAllTypes.Types.NestedEnum optionalNestedEnum_ = 0;
|
||||||
public global::Conformance.TestAllTypes.Types.NestedEnum OptionalNestedEnum {
|
public global::Conformance.TestAllTypes.Types.NestedEnum OptionalNestedEnum {
|
||||||
get { return optionalNestedEnum_; }
|
get { return optionalNestedEnum_; }
|
||||||
set {
|
set {
|
||||||
@ -1054,7 +1054,7 @@ namespace Conformance {
|
|||||||
|
|
||||||
/// <summary>Field number for the "optional_foreign_enum" field.</summary>
|
/// <summary>Field number for the "optional_foreign_enum" field.</summary>
|
||||||
public const int OptionalForeignEnumFieldNumber = 22;
|
public const int OptionalForeignEnumFieldNumber = 22;
|
||||||
private global::Conformance.ForeignEnum optionalForeignEnum_ = global::Conformance.ForeignEnum.FOREIGN_FOO;
|
private global::Conformance.ForeignEnum optionalForeignEnum_ = 0;
|
||||||
public global::Conformance.ForeignEnum OptionalForeignEnum {
|
public global::Conformance.ForeignEnum OptionalForeignEnum {
|
||||||
get { return optionalForeignEnum_; }
|
get { return optionalForeignEnum_; }
|
||||||
set {
|
set {
|
||||||
@ -2079,8 +2079,8 @@ namespace Conformance {
|
|||||||
if (OptionalBytes.Length != 0) hash ^= OptionalBytes.GetHashCode();
|
if (OptionalBytes.Length != 0) hash ^= OptionalBytes.GetHashCode();
|
||||||
if (optionalNestedMessage_ != null) hash ^= OptionalNestedMessage.GetHashCode();
|
if (optionalNestedMessage_ != null) hash ^= OptionalNestedMessage.GetHashCode();
|
||||||
if (optionalForeignMessage_ != null) hash ^= OptionalForeignMessage.GetHashCode();
|
if (optionalForeignMessage_ != null) hash ^= OptionalForeignMessage.GetHashCode();
|
||||||
if (OptionalNestedEnum != global::Conformance.TestAllTypes.Types.NestedEnum.FOO) hash ^= OptionalNestedEnum.GetHashCode();
|
if (OptionalNestedEnum != 0) hash ^= OptionalNestedEnum.GetHashCode();
|
||||||
if (OptionalForeignEnum != global::Conformance.ForeignEnum.FOREIGN_FOO) hash ^= OptionalForeignEnum.GetHashCode();
|
if (OptionalForeignEnum != 0) hash ^= OptionalForeignEnum.GetHashCode();
|
||||||
if (OptionalStringPiece.Length != 0) hash ^= OptionalStringPiece.GetHashCode();
|
if (OptionalStringPiece.Length != 0) hash ^= OptionalStringPiece.GetHashCode();
|
||||||
if (OptionalCord.Length != 0) hash ^= OptionalCord.GetHashCode();
|
if (OptionalCord.Length != 0) hash ^= OptionalCord.GetHashCode();
|
||||||
if (recursiveMessage_ != null) hash ^= RecursiveMessage.GetHashCode();
|
if (recursiveMessage_ != null) hash ^= RecursiveMessage.GetHashCode();
|
||||||
@ -2247,11 +2247,11 @@ namespace Conformance {
|
|||||||
output.WriteRawTag(154, 1);
|
output.WriteRawTag(154, 1);
|
||||||
output.WriteMessage(OptionalForeignMessage);
|
output.WriteMessage(OptionalForeignMessage);
|
||||||
}
|
}
|
||||||
if (OptionalNestedEnum != global::Conformance.TestAllTypes.Types.NestedEnum.FOO) {
|
if (OptionalNestedEnum != 0) {
|
||||||
output.WriteRawTag(168, 1);
|
output.WriteRawTag(168, 1);
|
||||||
output.WriteEnum((int) OptionalNestedEnum);
|
output.WriteEnum((int) OptionalNestedEnum);
|
||||||
}
|
}
|
||||||
if (OptionalForeignEnum != global::Conformance.ForeignEnum.FOREIGN_FOO) {
|
if (OptionalForeignEnum != 0) {
|
||||||
output.WriteRawTag(176, 1);
|
output.WriteRawTag(176, 1);
|
||||||
output.WriteEnum((int) OptionalForeignEnum);
|
output.WriteEnum((int) OptionalForeignEnum);
|
||||||
}
|
}
|
||||||
@ -2492,10 +2492,10 @@ namespace Conformance {
|
|||||||
if (optionalForeignMessage_ != null) {
|
if (optionalForeignMessage_ != null) {
|
||||||
size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalForeignMessage);
|
size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalForeignMessage);
|
||||||
}
|
}
|
||||||
if (OptionalNestedEnum != global::Conformance.TestAllTypes.Types.NestedEnum.FOO) {
|
if (OptionalNestedEnum != 0) {
|
||||||
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalNestedEnum);
|
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalNestedEnum);
|
||||||
}
|
}
|
||||||
if (OptionalForeignEnum != global::Conformance.ForeignEnum.FOREIGN_FOO) {
|
if (OptionalForeignEnum != 0) {
|
||||||
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalForeignEnum);
|
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalForeignEnum);
|
||||||
}
|
}
|
||||||
if (OptionalStringPiece.Length != 0) {
|
if (OptionalStringPiece.Length != 0) {
|
||||||
@ -2719,10 +2719,10 @@ namespace Conformance {
|
|||||||
}
|
}
|
||||||
OptionalForeignMessage.MergeFrom(other.OptionalForeignMessage);
|
OptionalForeignMessage.MergeFrom(other.OptionalForeignMessage);
|
||||||
}
|
}
|
||||||
if (other.OptionalNestedEnum != global::Conformance.TestAllTypes.Types.NestedEnum.FOO) {
|
if (other.OptionalNestedEnum != 0) {
|
||||||
OptionalNestedEnum = other.OptionalNestedEnum;
|
OptionalNestedEnum = other.OptionalNestedEnum;
|
||||||
}
|
}
|
||||||
if (other.OptionalForeignEnum != global::Conformance.ForeignEnum.FOREIGN_FOO) {
|
if (other.OptionalForeignEnum != 0) {
|
||||||
OptionalForeignEnum = other.OptionalForeignEnum;
|
OptionalForeignEnum = other.OptionalForeignEnum;
|
||||||
}
|
}
|
||||||
if (other.OptionalStringPiece.Length != 0) {
|
if (other.OptionalStringPiece.Length != 0) {
|
||||||
@ -3448,13 +3448,13 @@ namespace Conformance {
|
|||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
public static partial class Types {
|
public static partial class Types {
|
||||||
public enum NestedEnum {
|
public enum NestedEnum {
|
||||||
FOO = 0,
|
[pbr::OriginalName("FOO")] Foo = 0,
|
||||||
BAR = 1,
|
[pbr::OriginalName("BAR")] Bar = 1,
|
||||||
BAZ = 2,
|
[pbr::OriginalName("BAZ")] Baz = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Intentionally negative.
|
/// Intentionally negative.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
NEG = -1,
|
[pbr::OriginalName("NEG")] Neg = -1,
|
||||||
}
|
}
|
||||||
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
@ -109,10 +109,10 @@ namespace Google.Protobuf.Conformance
|
|||||||
{
|
{
|
||||||
switch (request.RequestedOutputFormat)
|
switch (request.RequestedOutputFormat)
|
||||||
{
|
{
|
||||||
case global::Conformance.WireFormat.JSON:
|
case global::Conformance.WireFormat.Json:
|
||||||
var formatter = new JsonFormatter(new JsonFormatter.Settings(false, typeRegistry));
|
var formatter = new JsonFormatter(new JsonFormatter.Settings(false, typeRegistry));
|
||||||
return new ConformanceResponse { JsonPayload = formatter.Format(message) };
|
return new ConformanceResponse { JsonPayload = formatter.Format(message) };
|
||||||
case global::Conformance.WireFormat.PROTOBUF:
|
case global::Conformance.WireFormat.Protobuf:
|
||||||
return new ConformanceResponse { ProtobufPayload = message.ToByteString() };
|
return new ConformanceResponse { ProtobufPayload = message.ToByteString() };
|
||||||
default:
|
default:
|
||||||
throw new Exception("Unsupported request output format: " + request.PayloadCase);
|
throw new Exception("Unsupported request output format: " + request.PayloadCase);
|
||||||
|
@ -58,7 +58,7 @@ namespace Google.Protobuf
|
|||||||
new FieldCodecTestData<float>(FieldCodec.ForFloat(100), 1234.5f, "Float"),
|
new FieldCodecTestData<float>(FieldCodec.ForFloat(100), 1234.5f, "Float"),
|
||||||
new FieldCodecTestData<double>(FieldCodec.ForDouble(100), 1234567890.5d, "Double"),
|
new FieldCodecTestData<double>(FieldCodec.ForDouble(100), 1234567890.5d, "Double"),
|
||||||
new FieldCodecTestData<ForeignEnum>(
|
new FieldCodecTestData<ForeignEnum>(
|
||||||
FieldCodec.ForEnum(100, t => (int) t, t => (ForeignEnum) t), ForeignEnum.FOREIGN_BAZ, "Enum"),
|
FieldCodec.ForEnum(100, t => (int) t, t => (ForeignEnum) t), ForeignEnum.ForeignBaz, "Enum"),
|
||||||
new FieldCodecTestData<ForeignMessage>(
|
new FieldCodecTestData<ForeignMessage>(
|
||||||
FieldCodec.ForMessage(100, ForeignMessage.Parser), new ForeignMessage { C = 10 }, "Message"),
|
FieldCodec.ForMessage(100, ForeignMessage.Parser), new ForeignMessage { C = 10 }, "Message"),
|
||||||
};
|
};
|
||||||
|
@ -66,13 +66,13 @@ namespace Google.Protobuf
|
|||||||
Assert.AreEqual(0, message.SingleFixed32);
|
Assert.AreEqual(0, message.SingleFixed32);
|
||||||
Assert.AreEqual(0L, message.SingleFixed64);
|
Assert.AreEqual(0L, message.SingleFixed64);
|
||||||
Assert.AreEqual(0.0f, message.SingleFloat);
|
Assert.AreEqual(0.0f, message.SingleFloat);
|
||||||
Assert.AreEqual(ForeignEnum.FOREIGN_UNSPECIFIED, message.SingleForeignEnum);
|
Assert.AreEqual(ForeignEnum.ForeignUnspecified, message.SingleForeignEnum);
|
||||||
Assert.IsNull(message.SingleForeignMessage);
|
Assert.IsNull(message.SingleForeignMessage);
|
||||||
Assert.AreEqual(ImportEnum.IMPORT_ENUM_UNSPECIFIED, message.SingleImportEnum);
|
Assert.AreEqual(ImportEnum.Unspecified, message.SingleImportEnum);
|
||||||
Assert.IsNull(message.SingleImportMessage);
|
Assert.IsNull(message.SingleImportMessage);
|
||||||
Assert.AreEqual(0, message.SingleInt32);
|
Assert.AreEqual(0, message.SingleInt32);
|
||||||
Assert.AreEqual(0L, message.SingleInt64);
|
Assert.AreEqual(0L, message.SingleInt64);
|
||||||
Assert.AreEqual(TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED, message.SingleNestedEnum);
|
Assert.AreEqual(TestAllTypes.Types.NestedEnum.Unspecified, message.SingleNestedEnum);
|
||||||
Assert.IsNull(message.SingleNestedMessage);
|
Assert.IsNull(message.SingleNestedMessage);
|
||||||
Assert.IsNull(message.SinglePublicImportMessage);
|
Assert.IsNull(message.SinglePublicImportMessage);
|
||||||
Assert.AreEqual(0, message.SingleSfixed32);
|
Assert.AreEqual(0, message.SingleSfixed32);
|
||||||
@ -145,13 +145,13 @@ namespace Google.Protobuf
|
|||||||
SingleFixed32 = 23,
|
SingleFixed32 = 23,
|
||||||
SingleFixed64 = 1234567890123,
|
SingleFixed64 = 1234567890123,
|
||||||
SingleFloat = 12.25f,
|
SingleFloat = 12.25f,
|
||||||
SingleForeignEnum = ForeignEnum.FOREIGN_BAR,
|
SingleForeignEnum = ForeignEnum.ForeignBar,
|
||||||
SingleForeignMessage = new ForeignMessage { C = 10 },
|
SingleForeignMessage = new ForeignMessage { C = 10 },
|
||||||
SingleImportEnum = ImportEnum.IMPORT_BAZ,
|
SingleImportEnum = ImportEnum.ImportBaz,
|
||||||
SingleImportMessage = new ImportMessage { D = 20 },
|
SingleImportMessage = new ImportMessage { D = 20 },
|
||||||
SingleInt32 = 100,
|
SingleInt32 = 100,
|
||||||
SingleInt64 = 3210987654321,
|
SingleInt64 = 3210987654321,
|
||||||
SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
|
SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo,
|
||||||
SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
|
SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
|
||||||
SinglePublicImportMessage = new PublicImportMessage { E = 54 },
|
SinglePublicImportMessage = new PublicImportMessage { E = 54 },
|
||||||
SingleSfixed32 = -123,
|
SingleSfixed32 = -123,
|
||||||
@ -179,13 +179,13 @@ namespace Google.Protobuf
|
|||||||
RepeatedFixed32 = { uint.MaxValue, 23 },
|
RepeatedFixed32 = { uint.MaxValue, 23 },
|
||||||
RepeatedFixed64 = { ulong.MaxValue, 1234567890123 },
|
RepeatedFixed64 = { ulong.MaxValue, 1234567890123 },
|
||||||
RepeatedFloat = { 100f, 12.25f },
|
RepeatedFloat = { 100f, 12.25f },
|
||||||
RepeatedForeignEnum = { ForeignEnum.FOREIGN_FOO, ForeignEnum.FOREIGN_BAR },
|
RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar },
|
||||||
RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
|
RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
|
||||||
RepeatedImportEnum = { ImportEnum.IMPORT_BAZ, ImportEnum.IMPORT_ENUM_UNSPECIFIED },
|
RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified },
|
||||||
RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
|
RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
|
||||||
RepeatedInt32 = { 100, 200 },
|
RepeatedInt32 = { 100, 200 },
|
||||||
RepeatedInt64 = { 3210987654321, long.MaxValue },
|
RepeatedInt64 = { 3210987654321, long.MaxValue },
|
||||||
RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.FOO, TestAllTypes.Types.NestedEnum.NEG },
|
RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg },
|
||||||
RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
|
RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
|
||||||
RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
|
RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
|
||||||
RepeatedSfixed32 = { -123, 123 },
|
RepeatedSfixed32 = { -123, 123 },
|
||||||
@ -224,8 +224,8 @@ namespace Google.Protobuf
|
|||||||
{ 5, new ForeignMessage() },
|
{ 5, new ForeignMessage() },
|
||||||
},
|
},
|
||||||
MapInt32Enum = {
|
MapInt32Enum = {
|
||||||
{ 1, MapEnum.MAP_ENUM_BAR },
|
{ 1, MapEnum.Bar },
|
||||||
{ 2000, MapEnum.MAP_ENUM_FOO }
|
{ 2000, MapEnum.Foo }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -249,7 +249,7 @@ namespace Google.Protobuf
|
|||||||
Assert.AreEqual(1, parsed.MapInt32Bytes.Count);
|
Assert.AreEqual(1, parsed.MapInt32Bytes.Count);
|
||||||
Assert.AreEqual(ByteString.Empty, parsed.MapInt32Bytes[0]);
|
Assert.AreEqual(ByteString.Empty, parsed.MapInt32Bytes[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void MapWithOnlyValue()
|
public void MapWithOnlyValue()
|
||||||
{
|
{
|
||||||
@ -449,7 +449,7 @@ namespace Google.Protobuf
|
|||||||
SingleFloat = 12.25f,
|
SingleFloat = 12.25f,
|
||||||
SingleInt32 = 100,
|
SingleInt32 = 100,
|
||||||
SingleInt64 = 3210987654321,
|
SingleInt64 = 3210987654321,
|
||||||
SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
|
SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo,
|
||||||
SingleSfixed32 = -123,
|
SingleSfixed32 = -123,
|
||||||
SingleSfixed64 = -12345678901234,
|
SingleSfixed64 = -12345678901234,
|
||||||
SingleSint32 = -456,
|
SingleSint32 = -456,
|
||||||
@ -479,7 +479,7 @@ namespace Google.Protobuf
|
|||||||
RepeatedFloat = { 100f, 12.25f },
|
RepeatedFloat = { 100f, 12.25f },
|
||||||
RepeatedInt32 = { 100, 200 },
|
RepeatedInt32 = { 100, 200 },
|
||||||
RepeatedInt64 = { 3210987654321, long.MaxValue },
|
RepeatedInt64 = { 3210987654321, long.MaxValue },
|
||||||
RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.FOO, TestAllTypes.Types.NestedEnum.NEG },
|
RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg },
|
||||||
RepeatedSfixed32 = { -123, 123 },
|
RepeatedSfixed32 = { -123, 123 },
|
||||||
RepeatedSfixed64 = { -12345678901234, 12345678901234 },
|
RepeatedSfixed64 = { -12345678901234, 12345678901234 },
|
||||||
RepeatedSint32 = { -456, 100 },
|
RepeatedSint32 = { -456, 100 },
|
||||||
@ -670,7 +670,7 @@ namespace Google.Protobuf
|
|||||||
{
|
{
|
||||||
// 130, 3 is the message tag
|
// 130, 3 is the message tag
|
||||||
// 1 is the data length - but there's no data.
|
// 1 is the data length - but there's no data.
|
||||||
var data = new byte[] { 130, 3, 1 };
|
var data = new byte[] { 130, 3, 1 };
|
||||||
Assert.Throws<InvalidProtocolBufferException>(() => TestAllTypes.Parser.ParseFrom(data));
|
Assert.Throws<InvalidProtocolBufferException>(() => TestAllTypes.Parser.ParseFrom(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -720,4 +720,4 @@ namespace Google.Protobuf
|
|||||||
Assert.AreEqual("{ \"c\": 31 }", writer.ToString());
|
Assert.AreEqual("{ \"c\": 31 }", writer.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -75,13 +75,13 @@ namespace Google.Protobuf
|
|||||||
SingleFixed32 = 23,
|
SingleFixed32 = 23,
|
||||||
SingleFixed64 = 1234567890123,
|
SingleFixed64 = 1234567890123,
|
||||||
SingleFloat = 12.25f,
|
SingleFloat = 12.25f,
|
||||||
SingleForeignEnum = ForeignEnum.FOREIGN_BAR,
|
SingleForeignEnum = ForeignEnum.ForeignBar,
|
||||||
SingleForeignMessage = new ForeignMessage { C = 10 },
|
SingleForeignMessage = new ForeignMessage { C = 10 },
|
||||||
SingleImportEnum = ImportEnum.IMPORT_BAZ,
|
SingleImportEnum = ImportEnum.ImportBaz,
|
||||||
SingleImportMessage = new ImportMessage { D = 20 },
|
SingleImportMessage = new ImportMessage { D = 20 },
|
||||||
SingleInt32 = 100,
|
SingleInt32 = 100,
|
||||||
SingleInt64 = 3210987654321,
|
SingleInt64 = 3210987654321,
|
||||||
SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
|
SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo,
|
||||||
SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
|
SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
|
||||||
SinglePublicImportMessage = new PublicImportMessage { E = 54 },
|
SinglePublicImportMessage = new PublicImportMessage { E = 54 },
|
||||||
SingleSfixed32 = -123,
|
SingleSfixed32 = -123,
|
||||||
@ -174,14 +174,14 @@ namespace Google.Protobuf
|
|||||||
[Test]
|
[Test]
|
||||||
public void UnknownEnumValueNumeric_RepeatedField()
|
public void UnknownEnumValueNumeric_RepeatedField()
|
||||||
{
|
{
|
||||||
var message = new TestAllTypes { RepeatedForeignEnum = { ForeignEnum.FOREIGN_BAZ, (ForeignEnum) 100, ForeignEnum.FOREIGN_FOO } };
|
var message = new TestAllTypes { RepeatedForeignEnum = { ForeignEnum.ForeignBaz, (ForeignEnum) 100, ForeignEnum.ForeignFoo } };
|
||||||
AssertJson("{ 'repeatedForeignEnum': [ 'FOREIGN_BAZ', 100, 'FOREIGN_FOO' ] }", JsonFormatter.Default.Format(message));
|
AssertJson("{ 'repeatedForeignEnum': [ 'FOREIGN_BAZ', 100, 'FOREIGN_FOO' ] }", JsonFormatter.Default.Format(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void UnknownEnumValueNumeric_MapField()
|
public void UnknownEnumValueNumeric_MapField()
|
||||||
{
|
{
|
||||||
var message = new TestMap { MapInt32Enum = { { 1, MapEnum.MAP_ENUM_FOO }, { 2, (MapEnum) 100 }, { 3, MapEnum.MAP_ENUM_BAR } } };
|
var message = new TestMap { MapInt32Enum = { { 1, MapEnum.Foo }, { 2, (MapEnum) 100 }, { 3, MapEnum.Bar } } };
|
||||||
AssertJson("{ 'mapInt32Enum': { '1': 'MAP_ENUM_FOO', '2': 100, '3': 'MAP_ENUM_BAR' } }", JsonFormatter.Default.Format(message));
|
AssertJson("{ 'mapInt32Enum': { '1': 'MAP_ENUM_FOO', '2': 100, '3': 'MAP_ENUM_BAR' } }", JsonFormatter.Default.Format(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,8 +142,8 @@ namespace Google.Protobuf
|
|||||||
[TestCase(typeof(DoubleValue), "1.5", 1.5d)]
|
[TestCase(typeof(DoubleValue), "1.5", 1.5d)]
|
||||||
public void Wrappers_Standalone(System.Type wrapperType, string json, object expectedValue)
|
public void Wrappers_Standalone(System.Type wrapperType, string json, object expectedValue)
|
||||||
{
|
{
|
||||||
IMessage parsed = (IMessage) Activator.CreateInstance(wrapperType);
|
IMessage parsed = (IMessage)Activator.CreateInstance(wrapperType);
|
||||||
IMessage expected = (IMessage) Activator.CreateInstance(wrapperType);
|
IMessage expected = (IMessage)Activator.CreateInstance(wrapperType);
|
||||||
JsonParser.Default.Merge(parsed, "null");
|
JsonParser.Default.Merge(parsed, "null");
|
||||||
Assert.AreEqual(expected, parsed);
|
Assert.AreEqual(expected, parsed);
|
||||||
|
|
||||||
@ -640,7 +640,7 @@ namespace Google.Protobuf
|
|||||||
var parsed = Timestamp.Parser.ParseJson(json);
|
var parsed = Timestamp.Parser.ParseJson(json);
|
||||||
Assert.AreEqual(WrapInQuotes(expectedFormatted), parsed.ToString());
|
Assert.AreEqual(WrapInQuotes(expectedFormatted), parsed.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[TestCase("2015-10-09 14:46:23.123456789Z", Description = "No T between date and time")]
|
[TestCase("2015-10-09 14:46:23.123456789Z", Description = "No T between date and time")]
|
||||||
[TestCase("2015/10/09T14:46:23.123456789Z", Description = "Wrong date separators")]
|
[TestCase("2015/10/09T14:46:23.123456789Z", Description = "Wrong date separators")]
|
||||||
@ -886,9 +886,9 @@ namespace Google.Protobuf
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[TestCase("\"FOREIGN_BAR\"", ForeignEnum.FOREIGN_BAR)]
|
[TestCase("\"FOREIGN_BAR\"", ForeignEnum.ForeignBar)]
|
||||||
[TestCase("5", ForeignEnum.FOREIGN_BAR)]
|
[TestCase("5", ForeignEnum.ForeignBar)]
|
||||||
[TestCase("100", (ForeignEnum) 100)]
|
[TestCase("100", (ForeignEnum)100)]
|
||||||
public void EnumValid(string value, ForeignEnum expectedValue)
|
public void EnumValid(string value, ForeignEnum expectedValue)
|
||||||
{
|
{
|
||||||
string json = "{ \"singleForeignEnum\": " + value + " }";
|
string json = "{ \"singleForeignEnum\": " + value + " }";
|
||||||
@ -922,4 +922,4 @@ namespace Google.Protobuf
|
|||||||
return '"' + text + '"';
|
return '"' + text + '"';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -195,7 +195,7 @@ namespace Google.Protobuf.Reflection
|
|||||||
Assert.AreEqual(value, enumType.Values[1]);
|
Assert.AreEqual(value, enumType.Values[1]);
|
||||||
Assert.AreEqual("FOREIGN_FOO", value.Name);
|
Assert.AreEqual("FOREIGN_FOO", value.Name);
|
||||||
Assert.AreEqual(4, value.Number);
|
Assert.AreEqual(4, value.Number);
|
||||||
Assert.AreEqual((int) ForeignEnum.FOREIGN_FOO, value.Number);
|
Assert.AreEqual((int) ForeignEnum.ForeignFoo, value.Number);
|
||||||
Assert.AreEqual(value, enumType.FindValueByNumber(4));
|
Assert.AreEqual(value, enumType.FindValueByNumber(4));
|
||||||
Assert.Null(enumType.FindValueByName("NO_SUCH_VALUE"));
|
Assert.Null(enumType.FindValueByName("NO_SUCH_VALUE"));
|
||||||
for (int i = 0; i < enumType.Values.Count; i++)
|
for (int i = 0; i < enumType.Values.Count; i++)
|
||||||
|
@ -128,7 +128,7 @@ namespace Google.Protobuf.Reflection
|
|||||||
fields[TestAllTypes.SingleInt32FieldNumber].Accessor.SetValue(message, 500);
|
fields[TestAllTypes.SingleInt32FieldNumber].Accessor.SetValue(message, 500);
|
||||||
fields[TestAllTypes.SingleStringFieldNumber].Accessor.SetValue(message, "It's a string");
|
fields[TestAllTypes.SingleStringFieldNumber].Accessor.SetValue(message, "It's a string");
|
||||||
fields[TestAllTypes.SingleBytesFieldNumber].Accessor.SetValue(message, ByteString.CopyFrom(99, 98, 97));
|
fields[TestAllTypes.SingleBytesFieldNumber].Accessor.SetValue(message, ByteString.CopyFrom(99, 98, 97));
|
||||||
fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.SetValue(message, ForeignEnum.FOREIGN_FOO);
|
fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.SetValue(message, ForeignEnum.ForeignFoo);
|
||||||
fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.SetValue(message, new ForeignMessage { C = 12345 });
|
fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.SetValue(message, new ForeignMessage { C = 12345 });
|
||||||
fields[TestAllTypes.SingleDoubleFieldNumber].Accessor.SetValue(message, 20150701.5);
|
fields[TestAllTypes.SingleDoubleFieldNumber].Accessor.SetValue(message, 20150701.5);
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ namespace Google.Protobuf.Reflection
|
|||||||
SingleInt32 = 500,
|
SingleInt32 = 500,
|
||||||
SingleString = "It's a string",
|
SingleString = "It's a string",
|
||||||
SingleBytes = ByteString.CopyFrom(99, 98, 97),
|
SingleBytes = ByteString.CopyFrom(99, 98, 97),
|
||||||
SingleForeignEnum = ForeignEnum.FOREIGN_FOO,
|
SingleForeignEnum = ForeignEnum.ForeignFoo,
|
||||||
SingleForeignMessage = new ForeignMessage { C = 12345 },
|
SingleForeignMessage = new ForeignMessage { C = 12345 },
|
||||||
SingleDouble = 20150701.5
|
SingleDouble = 20150701.5
|
||||||
};
|
};
|
||||||
|
@ -54,13 +54,13 @@ namespace Google.Protobuf
|
|||||||
SingleFixed32 = 23,
|
SingleFixed32 = 23,
|
||||||
SingleFixed64 = 1234567890123,
|
SingleFixed64 = 1234567890123,
|
||||||
SingleFloat = 12.25f,
|
SingleFloat = 12.25f,
|
||||||
SingleForeignEnum = ForeignEnum.FOREIGN_BAR,
|
SingleForeignEnum = ForeignEnum.ForeignBar,
|
||||||
SingleForeignMessage = new ForeignMessage { C = 10 },
|
SingleForeignMessage = new ForeignMessage { C = 10 },
|
||||||
SingleImportEnum = ImportEnum.IMPORT_BAZ,
|
SingleImportEnum = ImportEnum.ImportBaz,
|
||||||
SingleImportMessage = new ImportMessage { D = 20 },
|
SingleImportMessage = new ImportMessage { D = 20 },
|
||||||
SingleInt32 = 100,
|
SingleInt32 = 100,
|
||||||
SingleInt64 = 3210987654321,
|
SingleInt64 = 3210987654321,
|
||||||
SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
|
SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo,
|
||||||
SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
|
SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
|
||||||
SinglePublicImportMessage = new PublicImportMessage { E = 54 },
|
SinglePublicImportMessage = new PublicImportMessage { E = 54 },
|
||||||
SingleSfixed32 = -123,
|
SingleSfixed32 = -123,
|
||||||
@ -76,13 +76,13 @@ namespace Google.Protobuf
|
|||||||
RepeatedFixed32 = { UInt32.MaxValue, 23 },
|
RepeatedFixed32 = { UInt32.MaxValue, 23 },
|
||||||
RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 },
|
RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 },
|
||||||
RepeatedFloat = { 100f, 12.25f },
|
RepeatedFloat = { 100f, 12.25f },
|
||||||
RepeatedForeignEnum = { ForeignEnum.FOREIGN_FOO, ForeignEnum.FOREIGN_BAR },
|
RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar },
|
||||||
RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
|
RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
|
||||||
RepeatedImportEnum = { ImportEnum.IMPORT_BAZ, ImportEnum.IMPORT_ENUM_UNSPECIFIED },
|
RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified },
|
||||||
RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
|
RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
|
||||||
RepeatedInt32 = { 100, 200 },
|
RepeatedInt32 = { 100, 200 },
|
||||||
RepeatedInt64 = { 3210987654321, Int64.MaxValue },
|
RepeatedInt64 = { 3210987654321, Int64.MaxValue },
|
||||||
RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.FOO, TestAllTypes.Types.NestedEnum.NEG },
|
RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg },
|
||||||
RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
|
RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
|
||||||
RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
|
RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
|
||||||
RepeatedSfixed32 = { -123, 123 },
|
RepeatedSfixed32 = { -123, 123 },
|
||||||
@ -92,8 +92,8 @@ namespace Google.Protobuf
|
|||||||
RepeatedString = { "foo", "bar" },
|
RepeatedString = { "foo", "bar" },
|
||||||
RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue },
|
RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue },
|
||||||
RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue },
|
RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue },
|
||||||
OneofString = "Oneof string"
|
OneofString = "Oneof string"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -43,8 +43,8 @@ namespace Google.Protobuf
|
|||||||
NegativeEnumMessage msg = new NegativeEnumMessage
|
NegativeEnumMessage msg = new NegativeEnumMessage
|
||||||
{
|
{
|
||||||
Value = NegativeEnum.MinusOne,
|
Value = NegativeEnum.MinusOne,
|
||||||
Values = { NegativeEnum.NEGATIVE_ENUM_ZERO, NegativeEnum.MinusOne, NegativeEnum.FiveBelow },
|
Values = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow },
|
||||||
PackedValues = { NegativeEnum.NEGATIVE_ENUM_ZERO, NegativeEnum.MinusOne, NegativeEnum.FiveBelow }
|
PackedValues = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow }
|
||||||
};
|
};
|
||||||
|
|
||||||
Assert.AreEqual(58, msg.CalculateSize());
|
Assert.AreEqual(58, msg.CalculateSize());
|
||||||
|
@ -164,9 +164,9 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
}
|
}
|
||||||
#region Enums
|
#region Enums
|
||||||
public enum MapEnum {
|
public enum MapEnum {
|
||||||
MAP_ENUM_FOO = 0,
|
[pbr::OriginalName("MAP_ENUM_FOO")] Foo = 0,
|
||||||
MAP_ENUM_BAR = 1,
|
[pbr::OriginalName("MAP_ENUM_BAR")] Bar = 1,
|
||||||
MAP_ENUM_BAZ = 2,
|
[pbr::OriginalName("MAP_ENUM_BAZ")] Baz = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -1358,7 +1358,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
public static partial class Types {
|
public static partial class Types {
|
||||||
public enum Type {
|
public enum Type {
|
||||||
TYPE_FOO = 0,
|
[pbr::OriginalName("TYPE_FOO")] Foo = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -42,10 +42,10 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
}
|
}
|
||||||
#region Enums
|
#region Enums
|
||||||
public enum ImportEnum {
|
public enum ImportEnum {
|
||||||
IMPORT_ENUM_UNSPECIFIED = 0,
|
[pbr::OriginalName("IMPORT_ENUM_UNSPECIFIED")] Unspecified = 0,
|
||||||
IMPORT_FOO = 7,
|
[pbr::OriginalName("IMPORT_FOO")] ImportFoo = 7,
|
||||||
IMPORT_BAR = 8,
|
[pbr::OriginalName("IMPORT_BAR")] ImportBar = 8,
|
||||||
IMPORT_BAZ = 9,
|
[pbr::OriginalName("IMPORT_BAZ")] ImportBaz = 9,
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -66,14 +66,14 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
}
|
}
|
||||||
#region Enums
|
#region Enums
|
||||||
public enum NegativeEnum {
|
public enum NegativeEnum {
|
||||||
NEGATIVE_ENUM_ZERO = 0,
|
[pbr::OriginalName("NEGATIVE_ENUM_ZERO")] Zero = 0,
|
||||||
FiveBelow = -5,
|
[pbr::OriginalName("FiveBelow")] FiveBelow = -5,
|
||||||
MinusOne = -1,
|
[pbr::OriginalName("MinusOne")] MinusOne = -1,
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DeprecatedEnum {
|
public enum DeprecatedEnum {
|
||||||
DEPRECATED_ZERO = 0,
|
[pbr::OriginalName("DEPRECATED_ZERO")] DeprecatedZero = 0,
|
||||||
one = 1,
|
[pbr::OriginalName("one")] One = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -356,7 +356,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
|
|
||||||
/// <summary>Field number for the "value" field.</summary>
|
/// <summary>Field number for the "value" field.</summary>
|
||||||
public const int ValueFieldNumber = 1;
|
public const int ValueFieldNumber = 1;
|
||||||
private global::UnitTest.Issues.TestProtos.NegativeEnum value_ = global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO;
|
private global::UnitTest.Issues.TestProtos.NegativeEnum value_ = 0;
|
||||||
public global::UnitTest.Issues.TestProtos.NegativeEnum Value {
|
public global::UnitTest.Issues.TestProtos.NegativeEnum Value {
|
||||||
get { return value_; }
|
get { return value_; }
|
||||||
set {
|
set {
|
||||||
@ -401,7 +401,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
|
|
||||||
public override int GetHashCode() {
|
public override int GetHashCode() {
|
||||||
int hash = 1;
|
int hash = 1;
|
||||||
if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) hash ^= Value.GetHashCode();
|
if (Value != 0) hash ^= Value.GetHashCode();
|
||||||
hash ^= values_.GetHashCode();
|
hash ^= values_.GetHashCode();
|
||||||
hash ^= packedValues_.GetHashCode();
|
hash ^= packedValues_.GetHashCode();
|
||||||
return hash;
|
return hash;
|
||||||
@ -412,7 +412,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void WriteTo(pb::CodedOutputStream output) {
|
public void WriteTo(pb::CodedOutputStream output) {
|
||||||
if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) {
|
if (Value != 0) {
|
||||||
output.WriteRawTag(8);
|
output.WriteRawTag(8);
|
||||||
output.WriteEnum((int) Value);
|
output.WriteEnum((int) Value);
|
||||||
}
|
}
|
||||||
@ -422,7 +422,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
|
|
||||||
public int CalculateSize() {
|
public int CalculateSize() {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) {
|
if (Value != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Value);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Value);
|
||||||
}
|
}
|
||||||
size += values_.CalculateSize(_repeated_values_codec);
|
size += values_.CalculateSize(_repeated_values_codec);
|
||||||
@ -434,7 +434,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
if (other == null) {
|
if (other == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (other.Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) {
|
if (other.Value != 0) {
|
||||||
Value = other.Value;
|
Value = other.Value;
|
||||||
}
|
}
|
||||||
values_.Add(other.values_);
|
values_.Add(other.values_);
|
||||||
@ -620,7 +620,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
|
|
||||||
/// <summary>Field number for the "EnumValue" field.</summary>
|
/// <summary>Field number for the "EnumValue" field.</summary>
|
||||||
public const int EnumValueFieldNumber = 5;
|
public const int EnumValueFieldNumber = 5;
|
||||||
private global::UnitTest.Issues.TestProtos.DeprecatedEnum enumValue_ = global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO;
|
private global::UnitTest.Issues.TestProtos.DeprecatedEnum enumValue_ = 0;
|
||||||
[global::System.ObsoleteAttribute()]
|
[global::System.ObsoleteAttribute()]
|
||||||
public global::UnitTest.Issues.TestProtos.DeprecatedEnum EnumValue {
|
public global::UnitTest.Issues.TestProtos.DeprecatedEnum EnumValue {
|
||||||
get { return enumValue_; }
|
get { return enumValue_; }
|
||||||
@ -665,7 +665,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
hash ^= primitiveArray_.GetHashCode();
|
hash ^= primitiveArray_.GetHashCode();
|
||||||
if (messageValue_ != null) hash ^= MessageValue.GetHashCode();
|
if (messageValue_ != null) hash ^= MessageValue.GetHashCode();
|
||||||
hash ^= messageArray_.GetHashCode();
|
hash ^= messageArray_.GetHashCode();
|
||||||
if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO) hash ^= EnumValue.GetHashCode();
|
if (EnumValue != 0) hash ^= EnumValue.GetHashCode();
|
||||||
hash ^= enumArray_.GetHashCode();
|
hash ^= enumArray_.GetHashCode();
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
@ -685,7 +685,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
output.WriteMessage(MessageValue);
|
output.WriteMessage(MessageValue);
|
||||||
}
|
}
|
||||||
messageArray_.WriteTo(output, _repeated_messageArray_codec);
|
messageArray_.WriteTo(output, _repeated_messageArray_codec);
|
||||||
if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO) {
|
if (EnumValue != 0) {
|
||||||
output.WriteRawTag(40);
|
output.WriteRawTag(40);
|
||||||
output.WriteEnum((int) EnumValue);
|
output.WriteEnum((int) EnumValue);
|
||||||
}
|
}
|
||||||
@ -702,7 +702,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
size += 1 + pb::CodedOutputStream.ComputeMessageSize(MessageValue);
|
size += 1 + pb::CodedOutputStream.ComputeMessageSize(MessageValue);
|
||||||
}
|
}
|
||||||
size += messageArray_.CalculateSize(_repeated_messageArray_codec);
|
size += messageArray_.CalculateSize(_repeated_messageArray_codec);
|
||||||
if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO) {
|
if (EnumValue != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumValue);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumValue);
|
||||||
}
|
}
|
||||||
size += enumArray_.CalculateSize(_repeated_enumArray_codec);
|
size += enumArray_.CalculateSize(_repeated_enumArray_codec);
|
||||||
@ -724,7 +724,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
MessageValue.MergeFrom(other.MessageValue);
|
MessageValue.MergeFrom(other.MessageValue);
|
||||||
}
|
}
|
||||||
messageArray_.Add(other.messageArray_);
|
messageArray_.Add(other.messageArray_);
|
||||||
if (other.EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO) {
|
if (other.EnumValue != 0) {
|
||||||
EnumValue = other.EnumValue;
|
EnumValue = other.EnumValue;
|
||||||
}
|
}
|
||||||
enumArray_.Add(other.enumArray_);
|
enumArray_.Add(other.enumArray_);
|
||||||
@ -1435,7 +1435,7 @@ namespace UnitTest.Issues.TestProtos {
|
|||||||
public const int NameFieldNumber = 1;
|
public const int NameFieldNumber = 1;
|
||||||
private string name_ = "";
|
private string name_ = "";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// json_name field options are not properly handled during deserialization
|
/// Message for testing the effects for of the json_name option
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name {
|
public string Name {
|
||||||
get { return name_; }
|
get { return name_; }
|
||||||
|
@ -193,39 +193,39 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
}
|
}
|
||||||
#region Enums
|
#region Enums
|
||||||
public enum ForeignEnum {
|
public enum ForeignEnum {
|
||||||
FOREIGN_UNSPECIFIED = 0,
|
[pbr::OriginalName("FOREIGN_UNSPECIFIED")] ForeignUnspecified = 0,
|
||||||
FOREIGN_FOO = 4,
|
[pbr::OriginalName("FOREIGN_FOO")] ForeignFoo = 4,
|
||||||
FOREIGN_BAR = 5,
|
[pbr::OriginalName("FOREIGN_BAR")] ForeignBar = 5,
|
||||||
FOREIGN_BAZ = 6,
|
[pbr::OriginalName("FOREIGN_BAZ")] ForeignBaz = 6,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Test an enum that has multiple values with the same number.
|
/// Test an enum that has multiple values with the same number.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum TestEnumWithDupValue {
|
public enum TestEnumWithDupValue {
|
||||||
TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED = 0,
|
[pbr::OriginalName("TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED")] Unspecified = 0,
|
||||||
FOO1 = 1,
|
[pbr::OriginalName("FOO1")] Foo1 = 1,
|
||||||
BAR1 = 2,
|
[pbr::OriginalName("BAR1")] Bar1 = 2,
|
||||||
BAZ = 3,
|
[pbr::OriginalName("BAZ")] Baz = 3,
|
||||||
FOO2 = 1,
|
[pbr::OriginalName("FOO2")] Foo2 = 1,
|
||||||
BAR2 = 2,
|
[pbr::OriginalName("BAR2")] Bar2 = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Test an enum with large, unordered values.
|
/// Test an enum with large, unordered values.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum TestSparseEnum {
|
public enum TestSparseEnum {
|
||||||
TEST_SPARSE_ENUM_UNSPECIFIED = 0,
|
[pbr::OriginalName("TEST_SPARSE_ENUM_UNSPECIFIED")] Unspecified = 0,
|
||||||
SPARSE_A = 123,
|
[pbr::OriginalName("SPARSE_A")] SparseA = 123,
|
||||||
SPARSE_B = 62374,
|
[pbr::OriginalName("SPARSE_B")] SparseB = 62374,
|
||||||
SPARSE_C = 12589234,
|
[pbr::OriginalName("SPARSE_C")] SparseC = 12589234,
|
||||||
SPARSE_D = -15,
|
[pbr::OriginalName("SPARSE_D")] SparseD = -15,
|
||||||
SPARSE_E = -53452,
|
[pbr::OriginalName("SPARSE_E")] SparseE = -53452,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// In proto3, value 0 must be the first one specified
|
/// In proto3, value 0 must be the first one specified
|
||||||
/// SPARSE_F = 0;
|
/// SPARSE_F = 0;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SPARSE_G = 2,
|
[pbr::OriginalName("SPARSE_G")] SparseG = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -505,7 +505,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
|
|
||||||
/// <summary>Field number for the "single_nested_enum" field.</summary>
|
/// <summary>Field number for the "single_nested_enum" field.</summary>
|
||||||
public const int SingleNestedEnumFieldNumber = 21;
|
public const int SingleNestedEnumFieldNumber = 21;
|
||||||
private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum singleNestedEnum_ = global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED;
|
private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum singleNestedEnum_ = 0;
|
||||||
public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum SingleNestedEnum {
|
public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum SingleNestedEnum {
|
||||||
get { return singleNestedEnum_; }
|
get { return singleNestedEnum_; }
|
||||||
set {
|
set {
|
||||||
@ -515,7 +515,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
|
|
||||||
/// <summary>Field number for the "single_foreign_enum" field.</summary>
|
/// <summary>Field number for the "single_foreign_enum" field.</summary>
|
||||||
public const int SingleForeignEnumFieldNumber = 22;
|
public const int SingleForeignEnumFieldNumber = 22;
|
||||||
private global::Google.Protobuf.TestProtos.ForeignEnum singleForeignEnum_ = global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED;
|
private global::Google.Protobuf.TestProtos.ForeignEnum singleForeignEnum_ = 0;
|
||||||
public global::Google.Protobuf.TestProtos.ForeignEnum SingleForeignEnum {
|
public global::Google.Protobuf.TestProtos.ForeignEnum SingleForeignEnum {
|
||||||
get { return singleForeignEnum_; }
|
get { return singleForeignEnum_; }
|
||||||
set {
|
set {
|
||||||
@ -525,7 +525,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
|
|
||||||
/// <summary>Field number for the "single_import_enum" field.</summary>
|
/// <summary>Field number for the "single_import_enum" field.</summary>
|
||||||
public const int SingleImportEnumFieldNumber = 23;
|
public const int SingleImportEnumFieldNumber = 23;
|
||||||
private global::Google.Protobuf.TestProtos.ImportEnum singleImportEnum_ = global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED;
|
private global::Google.Protobuf.TestProtos.ImportEnum singleImportEnum_ = 0;
|
||||||
public global::Google.Protobuf.TestProtos.ImportEnum SingleImportEnum {
|
public global::Google.Protobuf.TestProtos.ImportEnum SingleImportEnum {
|
||||||
get { return singleImportEnum_; }
|
get { return singleImportEnum_; }
|
||||||
set {
|
set {
|
||||||
@ -892,9 +892,9 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
if (singleNestedMessage_ != null) hash ^= SingleNestedMessage.GetHashCode();
|
if (singleNestedMessage_ != null) hash ^= SingleNestedMessage.GetHashCode();
|
||||||
if (singleForeignMessage_ != null) hash ^= SingleForeignMessage.GetHashCode();
|
if (singleForeignMessage_ != null) hash ^= SingleForeignMessage.GetHashCode();
|
||||||
if (singleImportMessage_ != null) hash ^= SingleImportMessage.GetHashCode();
|
if (singleImportMessage_ != null) hash ^= SingleImportMessage.GetHashCode();
|
||||||
if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED) hash ^= SingleNestedEnum.GetHashCode();
|
if (SingleNestedEnum != 0) hash ^= SingleNestedEnum.GetHashCode();
|
||||||
if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) hash ^= SingleForeignEnum.GetHashCode();
|
if (SingleForeignEnum != 0) hash ^= SingleForeignEnum.GetHashCode();
|
||||||
if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED) hash ^= SingleImportEnum.GetHashCode();
|
if (SingleImportEnum != 0) hash ^= SingleImportEnum.GetHashCode();
|
||||||
if (singlePublicImportMessage_ != null) hash ^= SinglePublicImportMessage.GetHashCode();
|
if (singlePublicImportMessage_ != null) hash ^= SinglePublicImportMessage.GetHashCode();
|
||||||
hash ^= repeatedInt32_.GetHashCode();
|
hash ^= repeatedInt32_.GetHashCode();
|
||||||
hash ^= repeatedInt64_.GetHashCode();
|
hash ^= repeatedInt64_.GetHashCode();
|
||||||
@ -1003,15 +1003,15 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
output.WriteRawTag(162, 1);
|
output.WriteRawTag(162, 1);
|
||||||
output.WriteMessage(SingleImportMessage);
|
output.WriteMessage(SingleImportMessage);
|
||||||
}
|
}
|
||||||
if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED) {
|
if (SingleNestedEnum != 0) {
|
||||||
output.WriteRawTag(168, 1);
|
output.WriteRawTag(168, 1);
|
||||||
output.WriteEnum((int) SingleNestedEnum);
|
output.WriteEnum((int) SingleNestedEnum);
|
||||||
}
|
}
|
||||||
if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
|
if (SingleForeignEnum != 0) {
|
||||||
output.WriteRawTag(176, 1);
|
output.WriteRawTag(176, 1);
|
||||||
output.WriteEnum((int) SingleForeignEnum);
|
output.WriteEnum((int) SingleForeignEnum);
|
||||||
}
|
}
|
||||||
if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED) {
|
if (SingleImportEnum != 0) {
|
||||||
output.WriteRawTag(184, 1);
|
output.WriteRawTag(184, 1);
|
||||||
output.WriteEnum((int) SingleImportEnum);
|
output.WriteEnum((int) SingleImportEnum);
|
||||||
}
|
}
|
||||||
@ -1115,13 +1115,13 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
if (singleImportMessage_ != null) {
|
if (singleImportMessage_ != null) {
|
||||||
size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleImportMessage);
|
size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleImportMessage);
|
||||||
}
|
}
|
||||||
if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED) {
|
if (SingleNestedEnum != 0) {
|
||||||
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleNestedEnum);
|
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleNestedEnum);
|
||||||
}
|
}
|
||||||
if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
|
if (SingleForeignEnum != 0) {
|
||||||
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleForeignEnum);
|
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleForeignEnum);
|
||||||
}
|
}
|
||||||
if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED) {
|
if (SingleImportEnum != 0) {
|
||||||
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleImportEnum);
|
size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleImportEnum);
|
||||||
}
|
}
|
||||||
if (singlePublicImportMessage_ != null) {
|
if (singlePublicImportMessage_ != null) {
|
||||||
@ -1231,13 +1231,13 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
}
|
}
|
||||||
SingleImportMessage.MergeFrom(other.SingleImportMessage);
|
SingleImportMessage.MergeFrom(other.SingleImportMessage);
|
||||||
}
|
}
|
||||||
if (other.SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED) {
|
if (other.SingleNestedEnum != 0) {
|
||||||
SingleNestedEnum = other.SingleNestedEnum;
|
SingleNestedEnum = other.SingleNestedEnum;
|
||||||
}
|
}
|
||||||
if (other.SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
|
if (other.SingleForeignEnum != 0) {
|
||||||
SingleForeignEnum = other.SingleForeignEnum;
|
SingleForeignEnum = other.SingleForeignEnum;
|
||||||
}
|
}
|
||||||
if (other.SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED) {
|
if (other.SingleImportEnum != 0) {
|
||||||
SingleImportEnum = other.SingleImportEnum;
|
SingleImportEnum = other.SingleImportEnum;
|
||||||
}
|
}
|
||||||
if (other.singlePublicImportMessage_ != null) {
|
if (other.singlePublicImportMessage_ != null) {
|
||||||
@ -1526,14 +1526,14 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
public static partial class Types {
|
public static partial class Types {
|
||||||
public enum NestedEnum {
|
public enum NestedEnum {
|
||||||
NESTED_ENUM_UNSPECIFIED = 0,
|
[pbr::OriginalName("NESTED_ENUM_UNSPECIFIED")] Unspecified = 0,
|
||||||
FOO = 1,
|
[pbr::OriginalName("FOO")] Foo = 1,
|
||||||
BAR = 2,
|
[pbr::OriginalName("BAR")] Bar = 2,
|
||||||
BAZ = 3,
|
[pbr::OriginalName("BAZ")] Baz = 3,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Intentionally negative.
|
/// Intentionally negative.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
NEG = -1,
|
[pbr::OriginalName("NEG")] Neg = -1,
|
||||||
}
|
}
|
||||||
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
@ -2793,7 +2793,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
|
|
||||||
/// <summary>Field number for the "EnumField" field.</summary>
|
/// <summary>Field number for the "EnumField" field.</summary>
|
||||||
public const int EnumFieldFieldNumber = 3;
|
public const int EnumFieldFieldNumber = 3;
|
||||||
private global::Google.Protobuf.TestProtos.ForeignEnum enumField_ = global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED;
|
private global::Google.Protobuf.TestProtos.ForeignEnum enumField_ = 0;
|
||||||
public global::Google.Protobuf.TestProtos.ForeignEnum EnumField {
|
public global::Google.Protobuf.TestProtos.ForeignEnum EnumField {
|
||||||
get { return enumField_; }
|
get { return enumField_; }
|
||||||
set {
|
set {
|
||||||
@ -2873,7 +2873,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
int hash = 1;
|
int hash = 1;
|
||||||
if (PrimitiveField != 0) hash ^= PrimitiveField.GetHashCode();
|
if (PrimitiveField != 0) hash ^= PrimitiveField.GetHashCode();
|
||||||
if (StringField.Length != 0) hash ^= StringField.GetHashCode();
|
if (StringField.Length != 0) hash ^= StringField.GetHashCode();
|
||||||
if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) hash ^= EnumField.GetHashCode();
|
if (EnumField != 0) hash ^= EnumField.GetHashCode();
|
||||||
if (messageField_ != null) hash ^= MessageField.GetHashCode();
|
if (messageField_ != null) hash ^= MessageField.GetHashCode();
|
||||||
hash ^= repeatedPrimitiveField_.GetHashCode();
|
hash ^= repeatedPrimitiveField_.GetHashCode();
|
||||||
hash ^= repeatedStringField_.GetHashCode();
|
hash ^= repeatedStringField_.GetHashCode();
|
||||||
@ -2895,7 +2895,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
output.WriteRawTag(18);
|
output.WriteRawTag(18);
|
||||||
output.WriteString(StringField);
|
output.WriteString(StringField);
|
||||||
}
|
}
|
||||||
if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
|
if (EnumField != 0) {
|
||||||
output.WriteRawTag(24);
|
output.WriteRawTag(24);
|
||||||
output.WriteEnum((int) EnumField);
|
output.WriteEnum((int) EnumField);
|
||||||
}
|
}
|
||||||
@ -2917,7 +2917,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
if (StringField.Length != 0) {
|
if (StringField.Length != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeStringSize(StringField);
|
size += 1 + pb::CodedOutputStream.ComputeStringSize(StringField);
|
||||||
}
|
}
|
||||||
if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
|
if (EnumField != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumField);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumField);
|
||||||
}
|
}
|
||||||
if (messageField_ != null) {
|
if (messageField_ != null) {
|
||||||
@ -2940,7 +2940,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
if (other.StringField.Length != 0) {
|
if (other.StringField.Length != 0) {
|
||||||
StringField = other.StringField;
|
StringField = other.StringField;
|
||||||
}
|
}
|
||||||
if (other.EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
|
if (other.EnumField != 0) {
|
||||||
EnumField = other.EnumField;
|
EnumField = other.EnumField;
|
||||||
}
|
}
|
||||||
if (other.messageField_ != null) {
|
if (other.messageField_ != null) {
|
||||||
@ -3370,7 +3370,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
|
|
||||||
/// <summary>Field number for the "sparse_enum" field.</summary>
|
/// <summary>Field number for the "sparse_enum" field.</summary>
|
||||||
public const int SparseEnumFieldNumber = 1;
|
public const int SparseEnumFieldNumber = 1;
|
||||||
private global::Google.Protobuf.TestProtos.TestSparseEnum sparseEnum_ = global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED;
|
private global::Google.Protobuf.TestProtos.TestSparseEnum sparseEnum_ = 0;
|
||||||
public global::Google.Protobuf.TestProtos.TestSparseEnum SparseEnum {
|
public global::Google.Protobuf.TestProtos.TestSparseEnum SparseEnum {
|
||||||
get { return sparseEnum_; }
|
get { return sparseEnum_; }
|
||||||
set {
|
set {
|
||||||
@ -3395,7 +3395,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
|
|
||||||
public override int GetHashCode() {
|
public override int GetHashCode() {
|
||||||
int hash = 1;
|
int hash = 1;
|
||||||
if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) hash ^= SparseEnum.GetHashCode();
|
if (SparseEnum != 0) hash ^= SparseEnum.GetHashCode();
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3404,7 +3404,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void WriteTo(pb::CodedOutputStream output) {
|
public void WriteTo(pb::CodedOutputStream output) {
|
||||||
if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) {
|
if (SparseEnum != 0) {
|
||||||
output.WriteRawTag(8);
|
output.WriteRawTag(8);
|
||||||
output.WriteEnum((int) SparseEnum);
|
output.WriteEnum((int) SparseEnum);
|
||||||
}
|
}
|
||||||
@ -3412,7 +3412,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
|
|
||||||
public int CalculateSize() {
|
public int CalculateSize() {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) {
|
if (SparseEnum != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SparseEnum);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SparseEnum);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
@ -3422,7 +3422,7 @@ namespace Google.Protobuf.TestProtos {
|
|||||||
if (other == null) {
|
if (other == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (other.SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) {
|
if (other.SparseEnum != 0) {
|
||||||
SparseEnum = other.SparseEnum;
|
SparseEnum = other.SparseEnum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,7 @@
|
|||||||
<Compile Include="Reflection\MethodDescriptor.cs" />
|
<Compile Include="Reflection\MethodDescriptor.cs" />
|
||||||
<Compile Include="Reflection\OneofAccessor.cs" />
|
<Compile Include="Reflection\OneofAccessor.cs" />
|
||||||
<Compile Include="Reflection\OneofDescriptor.cs" />
|
<Compile Include="Reflection\OneofDescriptor.cs" />
|
||||||
|
<Compile Include="Reflection\OriginalNameAttribute.cs" />
|
||||||
<Compile Include="Reflection\PackageDescriptor.cs" />
|
<Compile Include="Reflection\PackageDescriptor.cs" />
|
||||||
<Compile Include="Reflection\PartialClasses.cs" />
|
<Compile Include="Reflection\PartialClasses.cs" />
|
||||||
<Compile Include="Reflection\ReflectionUtil.cs" />
|
<Compile Include="Reflection\ReflectionUtil.cs" />
|
||||||
|
@ -33,10 +33,12 @@
|
|||||||
<dependency id="System.Linq.Expressions" version="4.0.0" />
|
<dependency id="System.Linq.Expressions" version="4.0.0" />
|
||||||
<dependency id="System.ObjectModel" version="4.0.0" />
|
<dependency id="System.ObjectModel" version="4.0.0" />
|
||||||
<dependency id="System.Reflection" version="4.0.0" />
|
<dependency id="System.Reflection" version="4.0.0" />
|
||||||
|
<dependency id="System.Reflection.Extensions" version="4.0.0" />
|
||||||
<dependency id="System.Runtime" version="4.0.0" />
|
<dependency id="System.Runtime" version="4.0.0" />
|
||||||
<dependency id="System.Runtime.Extensions" version="4.0.0" />
|
<dependency id="System.Runtime.Extensions" version="4.0.0" />
|
||||||
<dependency id="System.Text.Encoding" version="4.0.0" />
|
<dependency id="System.Text.Encoding" version="4.0.0" />
|
||||||
<dependency id="System.Text.RegularExpressions" version="4.0.0" />
|
<dependency id="System.Text.RegularExpressions" version="4.0.0" />
|
||||||
|
<dependency id="System.Threading" version="4.0.0" />
|
||||||
</group>
|
</group>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -39,6 +39,7 @@ using Google.Protobuf.WellKnownTypes;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace Google.Protobuf
|
namespace Google.Protobuf
|
||||||
{
|
{
|
||||||
@ -420,9 +421,10 @@ namespace Google.Protobuf
|
|||||||
}
|
}
|
||||||
else if (value is System.Enum)
|
else if (value is System.Enum)
|
||||||
{
|
{
|
||||||
if (System.Enum.IsDefined(value.GetType(), value))
|
string name = OriginalEnumValueHelper.GetOriginalName(value);
|
||||||
|
if (name != null)
|
||||||
{
|
{
|
||||||
WriteString(writer, value.ToString());
|
WriteString(writer, name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -877,5 +879,44 @@ namespace Google.Protobuf
|
|||||||
TypeRegistry = ProtoPreconditions.CheckNotNull(typeRegistry, nameof(typeRegistry));
|
TypeRegistry = ProtoPreconditions.CheckNotNull(typeRegistry, nameof(typeRegistry));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Effectively a cache of mapping from enum values to the original name as specified in the proto file,
|
||||||
|
// fetched by reflection.
|
||||||
|
// The need for this is unfortunate, as is its unbounded size, but realistically it shouldn't cause issues.
|
||||||
|
private static class OriginalEnumValueHelper
|
||||||
|
{
|
||||||
|
// TODO: In the future we might want to use ConcurrentDictionary, at the point where all
|
||||||
|
// the platforms we target have it.
|
||||||
|
private static readonly Dictionary<System.Type, Dictionary<object, string>> dictionaries
|
||||||
|
= new Dictionary<System.Type, Dictionary<object, string>>();
|
||||||
|
|
||||||
|
internal static string GetOriginalName(object value)
|
||||||
|
{
|
||||||
|
var enumType = value.GetType();
|
||||||
|
Dictionary<object, string> nameMapping;
|
||||||
|
lock (dictionaries)
|
||||||
|
{
|
||||||
|
if (!dictionaries.TryGetValue(enumType, out nameMapping))
|
||||||
|
{
|
||||||
|
nameMapping = GetNameMapping(enumType);
|
||||||
|
dictionaries[enumType] = nameMapping;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string originalName;
|
||||||
|
// If this returns false, originalName will be null, which is what we want.
|
||||||
|
nameMapping.TryGetValue(value, out originalName);
|
||||||
|
return originalName;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Dictionary<object, string> GetNameMapping(System.Type enumType) =>
|
||||||
|
enumType.GetTypeInfo().DeclaredFields
|
||||||
|
.Where(f => f.IsStatic)
|
||||||
|
.ToDictionary(f => f.GetValue(null),
|
||||||
|
f => f.GetCustomAttributes<OriginalNameAttribute>()
|
||||||
|
.FirstOrDefault()
|
||||||
|
// If the attribute hasn't been applied, fall back to the name of the field.
|
||||||
|
?.Name ?? f.Name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1291,7 +1291,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
|
|
||||||
/// <summary>Field number for the "label" field.</summary>
|
/// <summary>Field number for the "label" field.</summary>
|
||||||
public const int LabelFieldNumber = 4;
|
public const int LabelFieldNumber = 4;
|
||||||
private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label label_ = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL;
|
private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label label_ = 0;
|
||||||
public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label Label {
|
public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label Label {
|
||||||
get { return label_; }
|
get { return label_; }
|
||||||
set {
|
set {
|
||||||
@ -1301,7 +1301,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
|
|
||||||
/// <summary>Field number for the "type" field.</summary>
|
/// <summary>Field number for the "type" field.</summary>
|
||||||
public const int TypeFieldNumber = 5;
|
public const int TypeFieldNumber = 5;
|
||||||
private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type type_ = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE;
|
private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type type_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If type_name is set, this need not be set. If both this and type_name
|
/// If type_name is set, this need not be set. If both this and type_name
|
||||||
/// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
|
/// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
|
||||||
@ -1429,8 +1429,8 @@ namespace Google.Protobuf.Reflection {
|
|||||||
int hash = 1;
|
int hash = 1;
|
||||||
if (Name.Length != 0) hash ^= Name.GetHashCode();
|
if (Name.Length != 0) hash ^= Name.GetHashCode();
|
||||||
if (Number != 0) hash ^= Number.GetHashCode();
|
if (Number != 0) hash ^= Number.GetHashCode();
|
||||||
if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) hash ^= Label.GetHashCode();
|
if (Label != 0) hash ^= Label.GetHashCode();
|
||||||
if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) hash ^= Type.GetHashCode();
|
if (Type != 0) hash ^= Type.GetHashCode();
|
||||||
if (TypeName.Length != 0) hash ^= TypeName.GetHashCode();
|
if (TypeName.Length != 0) hash ^= TypeName.GetHashCode();
|
||||||
if (Extendee.Length != 0) hash ^= Extendee.GetHashCode();
|
if (Extendee.Length != 0) hash ^= Extendee.GetHashCode();
|
||||||
if (DefaultValue.Length != 0) hash ^= DefaultValue.GetHashCode();
|
if (DefaultValue.Length != 0) hash ^= DefaultValue.GetHashCode();
|
||||||
@ -1457,11 +1457,11 @@ namespace Google.Protobuf.Reflection {
|
|||||||
output.WriteRawTag(24);
|
output.WriteRawTag(24);
|
||||||
output.WriteInt32(Number);
|
output.WriteInt32(Number);
|
||||||
}
|
}
|
||||||
if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
|
if (Label != 0) {
|
||||||
output.WriteRawTag(32);
|
output.WriteRawTag(32);
|
||||||
output.WriteEnum((int) Label);
|
output.WriteEnum((int) Label);
|
||||||
}
|
}
|
||||||
if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
|
if (Type != 0) {
|
||||||
output.WriteRawTag(40);
|
output.WriteRawTag(40);
|
||||||
output.WriteEnum((int) Type);
|
output.WriteEnum((int) Type);
|
||||||
}
|
}
|
||||||
@ -1495,10 +1495,10 @@ namespace Google.Protobuf.Reflection {
|
|||||||
if (Number != 0) {
|
if (Number != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
|
size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
|
||||||
}
|
}
|
||||||
if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
|
if (Label != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Label);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Label);
|
||||||
}
|
}
|
||||||
if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
|
if (Type != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
|
||||||
}
|
}
|
||||||
if (TypeName.Length != 0) {
|
if (TypeName.Length != 0) {
|
||||||
@ -1532,10 +1532,10 @@ namespace Google.Protobuf.Reflection {
|
|||||||
if (other.Number != 0) {
|
if (other.Number != 0) {
|
||||||
Number = other.Number;
|
Number = other.Number;
|
||||||
}
|
}
|
||||||
if (other.Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
|
if (other.Label != 0) {
|
||||||
Label = other.Label;
|
Label = other.Label;
|
||||||
}
|
}
|
||||||
if (other.Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
|
if (other.Type != 0) {
|
||||||
Type = other.Type;
|
Type = other.Type;
|
||||||
}
|
}
|
||||||
if (other.TypeName.Length != 0) {
|
if (other.TypeName.Length != 0) {
|
||||||
@ -1624,59 +1624,59 @@ namespace Google.Protobuf.Reflection {
|
|||||||
/// 0 is reserved for errors.
|
/// 0 is reserved for errors.
|
||||||
/// Order is weird for historical reasons.
|
/// Order is weird for historical reasons.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_DOUBLE = 1,
|
[pbr::OriginalName("TYPE_DOUBLE")] Double = 1,
|
||||||
TYPE_FLOAT = 2,
|
[pbr::OriginalName("TYPE_FLOAT")] Float = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
|
/// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
|
||||||
/// negative values are likely.
|
/// negative values are likely.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_INT64 = 3,
|
[pbr::OriginalName("TYPE_INT64")] Int64 = 3,
|
||||||
TYPE_UINT64 = 4,
|
[pbr::OriginalName("TYPE_UINT64")] Uint64 = 4,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
|
/// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
|
||||||
/// negative values are likely.
|
/// negative values are likely.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_INT32 = 5,
|
[pbr::OriginalName("TYPE_INT32")] Int32 = 5,
|
||||||
TYPE_FIXED64 = 6,
|
[pbr::OriginalName("TYPE_FIXED64")] Fixed64 = 6,
|
||||||
TYPE_FIXED32 = 7,
|
[pbr::OriginalName("TYPE_FIXED32")] Fixed32 = 7,
|
||||||
TYPE_BOOL = 8,
|
[pbr::OriginalName("TYPE_BOOL")] Bool = 8,
|
||||||
TYPE_STRING = 9,
|
[pbr::OriginalName("TYPE_STRING")] String = 9,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tag-delimited aggregate.
|
/// Tag-delimited aggregate.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_GROUP = 10,
|
[pbr::OriginalName("TYPE_GROUP")] Group = 10,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Length-delimited aggregate.
|
/// Length-delimited aggregate.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_MESSAGE = 11,
|
[pbr::OriginalName("TYPE_MESSAGE")] Message = 11,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// New in version 2.
|
/// New in version 2.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_BYTES = 12,
|
[pbr::OriginalName("TYPE_BYTES")] Bytes = 12,
|
||||||
TYPE_UINT32 = 13,
|
[pbr::OriginalName("TYPE_UINT32")] Uint32 = 13,
|
||||||
TYPE_ENUM = 14,
|
[pbr::OriginalName("TYPE_ENUM")] Enum = 14,
|
||||||
TYPE_SFIXED32 = 15,
|
[pbr::OriginalName("TYPE_SFIXED32")] Sfixed32 = 15,
|
||||||
TYPE_SFIXED64 = 16,
|
[pbr::OriginalName("TYPE_SFIXED64")] Sfixed64 = 16,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Uses ZigZag encoding.
|
/// Uses ZigZag encoding.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_SINT32 = 17,
|
[pbr::OriginalName("TYPE_SINT32")] Sint32 = 17,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Uses ZigZag encoding.
|
/// Uses ZigZag encoding.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_SINT64 = 18,
|
[pbr::OriginalName("TYPE_SINT64")] Sint64 = 18,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal enum Label {
|
internal enum Label {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 0 is reserved for errors
|
/// 0 is reserved for errors
|
||||||
/// </summary>
|
/// </summary>
|
||||||
LABEL_OPTIONAL = 1,
|
[pbr::OriginalName("LABEL_OPTIONAL")] Optional = 1,
|
||||||
LABEL_REQUIRED = 2,
|
[pbr::OriginalName("LABEL_REQUIRED")] Required = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// TODO(sanjay): Should we add LABEL_MAP?
|
/// TODO(sanjay): Should we add LABEL_MAP?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
LABEL_REPEATED = 3,
|
[pbr::OriginalName("LABEL_REPEATED")] Repeated = 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2666,7 +2666,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
|
|
||||||
/// <summary>Field number for the "optimize_for" field.</summary>
|
/// <summary>Field number for the "optimize_for" field.</summary>
|
||||||
public const int OptimizeForFieldNumber = 9;
|
public const int OptimizeForFieldNumber = 9;
|
||||||
private global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode optimizeFor_ = global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED;
|
private global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode optimizeFor_ = 0;
|
||||||
public global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeFor {
|
public global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeFor {
|
||||||
get { return optimizeFor_; }
|
get { return optimizeFor_; }
|
||||||
set {
|
set {
|
||||||
@ -2854,7 +2854,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
if (JavaMultipleFiles != false) hash ^= JavaMultipleFiles.GetHashCode();
|
if (JavaMultipleFiles != false) hash ^= JavaMultipleFiles.GetHashCode();
|
||||||
if (JavaGenerateEqualsAndHash != false) hash ^= JavaGenerateEqualsAndHash.GetHashCode();
|
if (JavaGenerateEqualsAndHash != false) hash ^= JavaGenerateEqualsAndHash.GetHashCode();
|
||||||
if (JavaStringCheckUtf8 != false) hash ^= JavaStringCheckUtf8.GetHashCode();
|
if (JavaStringCheckUtf8 != false) hash ^= JavaStringCheckUtf8.GetHashCode();
|
||||||
if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) hash ^= OptimizeFor.GetHashCode();
|
if (OptimizeFor != 0) hash ^= OptimizeFor.GetHashCode();
|
||||||
if (GoPackage.Length != 0) hash ^= GoPackage.GetHashCode();
|
if (GoPackage.Length != 0) hash ^= GoPackage.GetHashCode();
|
||||||
if (CcGenericServices != false) hash ^= CcGenericServices.GetHashCode();
|
if (CcGenericServices != false) hash ^= CcGenericServices.GetHashCode();
|
||||||
if (JavaGenericServices != false) hash ^= JavaGenericServices.GetHashCode();
|
if (JavaGenericServices != false) hash ^= JavaGenericServices.GetHashCode();
|
||||||
@ -2881,7 +2881,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
output.WriteRawTag(66);
|
output.WriteRawTag(66);
|
||||||
output.WriteString(JavaOuterClassname);
|
output.WriteString(JavaOuterClassname);
|
||||||
}
|
}
|
||||||
if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
|
if (OptimizeFor != 0) {
|
||||||
output.WriteRawTag(72);
|
output.WriteRawTag(72);
|
||||||
output.WriteEnum((int) OptimizeFor);
|
output.WriteEnum((int) OptimizeFor);
|
||||||
}
|
}
|
||||||
@ -2953,7 +2953,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
if (JavaStringCheckUtf8 != false) {
|
if (JavaStringCheckUtf8 != false) {
|
||||||
size += 2 + 1;
|
size += 2 + 1;
|
||||||
}
|
}
|
||||||
if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
|
if (OptimizeFor != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OptimizeFor);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OptimizeFor);
|
||||||
}
|
}
|
||||||
if (GoPackage.Length != 0) {
|
if (GoPackage.Length != 0) {
|
||||||
@ -3006,7 +3006,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
if (other.JavaStringCheckUtf8 != false) {
|
if (other.JavaStringCheckUtf8 != false) {
|
||||||
JavaStringCheckUtf8 = other.JavaStringCheckUtf8;
|
JavaStringCheckUtf8 = other.JavaStringCheckUtf8;
|
||||||
}
|
}
|
||||||
if (other.OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
|
if (other.OptimizeFor != 0) {
|
||||||
OptimizeFor = other.OptimizeFor;
|
OptimizeFor = other.OptimizeFor;
|
||||||
}
|
}
|
||||||
if (other.GoPackage.Length != 0) {
|
if (other.GoPackage.Length != 0) {
|
||||||
@ -3125,15 +3125,15 @@ namespace Google.Protobuf.Reflection {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Generate complete code for parsing, serialization,
|
/// Generate complete code for parsing, serialization,
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SPEED = 1,
|
[pbr::OriginalName("SPEED")] Speed = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// etc.
|
/// etc.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CODE_SIZE = 2,
|
[pbr::OriginalName("CODE_SIZE")] CodeSize = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Generate code using MessageLite and the lite runtime.
|
/// Generate code using MessageLite and the lite runtime.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
LITE_RUNTIME = 3,
|
[pbr::OriginalName("LITE_RUNTIME")] LiteRuntime = 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -3436,7 +3436,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
|
|
||||||
/// <summary>Field number for the "ctype" field.</summary>
|
/// <summary>Field number for the "ctype" field.</summary>
|
||||||
public const int CtypeFieldNumber = 1;
|
public const int CtypeFieldNumber = 1;
|
||||||
private global::Google.Protobuf.Reflection.FieldOptions.Types.CType ctype_ = global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING;
|
private global::Google.Protobuf.Reflection.FieldOptions.Types.CType ctype_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The ctype option instructs the C++ code generator to use a different
|
/// The ctype option instructs the C++ code generator to use a different
|
||||||
/// representation of the field than it normally would. See the specific
|
/// representation of the field than it normally would. See the specific
|
||||||
@ -3469,7 +3469,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
|
|
||||||
/// <summary>Field number for the "jstype" field.</summary>
|
/// <summary>Field number for the "jstype" field.</summary>
|
||||||
public const int JstypeFieldNumber = 6;
|
public const int JstypeFieldNumber = 6;
|
||||||
private global::Google.Protobuf.Reflection.FieldOptions.Types.JSType jstype_ = global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL;
|
private global::Google.Protobuf.Reflection.FieldOptions.Types.JSType jstype_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The jstype option determines the JavaScript type used for values of the
|
/// The jstype option determines the JavaScript type used for values of the
|
||||||
/// field. The option is permitted only for 64 bit integral and fixed types
|
/// field. The option is permitted only for 64 bit integral and fixed types
|
||||||
@ -3591,9 +3591,9 @@ namespace Google.Protobuf.Reflection {
|
|||||||
|
|
||||||
public override int GetHashCode() {
|
public override int GetHashCode() {
|
||||||
int hash = 1;
|
int hash = 1;
|
||||||
if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) hash ^= Ctype.GetHashCode();
|
if (Ctype != 0) hash ^= Ctype.GetHashCode();
|
||||||
if (Packed != false) hash ^= Packed.GetHashCode();
|
if (Packed != false) hash ^= Packed.GetHashCode();
|
||||||
if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) hash ^= Jstype.GetHashCode();
|
if (Jstype != 0) hash ^= Jstype.GetHashCode();
|
||||||
if (Lazy != false) hash ^= Lazy.GetHashCode();
|
if (Lazy != false) hash ^= Lazy.GetHashCode();
|
||||||
if (Deprecated != false) hash ^= Deprecated.GetHashCode();
|
if (Deprecated != false) hash ^= Deprecated.GetHashCode();
|
||||||
if (Weak != false) hash ^= Weak.GetHashCode();
|
if (Weak != false) hash ^= Weak.GetHashCode();
|
||||||
@ -3606,7 +3606,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void WriteTo(pb::CodedOutputStream output) {
|
public void WriteTo(pb::CodedOutputStream output) {
|
||||||
if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
|
if (Ctype != 0) {
|
||||||
output.WriteRawTag(8);
|
output.WriteRawTag(8);
|
||||||
output.WriteEnum((int) Ctype);
|
output.WriteEnum((int) Ctype);
|
||||||
}
|
}
|
||||||
@ -3622,7 +3622,7 @@ namespace Google.Protobuf.Reflection {
|
|||||||
output.WriteRawTag(40);
|
output.WriteRawTag(40);
|
||||||
output.WriteBool(Lazy);
|
output.WriteBool(Lazy);
|
||||||
}
|
}
|
||||||
if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
|
if (Jstype != 0) {
|
||||||
output.WriteRawTag(48);
|
output.WriteRawTag(48);
|
||||||
output.WriteEnum((int) Jstype);
|
output.WriteEnum((int) Jstype);
|
||||||
}
|
}
|
||||||
@ -3635,13 +3635,13 @@ namespace Google.Protobuf.Reflection {
|
|||||||
|
|
||||||
public int CalculateSize() {
|
public int CalculateSize() {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
|
if (Ctype != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Ctype);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Ctype);
|
||||||
}
|
}
|
||||||
if (Packed != false) {
|
if (Packed != false) {
|
||||||
size += 1 + 1;
|
size += 1 + 1;
|
||||||
}
|
}
|
||||||
if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
|
if (Jstype != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Jstype);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Jstype);
|
||||||
}
|
}
|
||||||
if (Lazy != false) {
|
if (Lazy != false) {
|
||||||
@ -3661,13 +3661,13 @@ namespace Google.Protobuf.Reflection {
|
|||||||
if (other == null) {
|
if (other == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (other.Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
|
if (other.Ctype != 0) {
|
||||||
Ctype = other.Ctype;
|
Ctype = other.Ctype;
|
||||||
}
|
}
|
||||||
if (other.Packed != false) {
|
if (other.Packed != false) {
|
||||||
Packed = other.Packed;
|
Packed = other.Packed;
|
||||||
}
|
}
|
||||||
if (other.Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
|
if (other.Jstype != 0) {
|
||||||
Jstype = other.Jstype;
|
Jstype = other.Jstype;
|
||||||
}
|
}
|
||||||
if (other.Lazy != false) {
|
if (other.Lazy != false) {
|
||||||
@ -3729,24 +3729,24 @@ namespace Google.Protobuf.Reflection {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Default mode.
|
/// Default mode.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
STRING = 0,
|
[pbr::OriginalName("STRING")] String = 0,
|
||||||
CORD = 1,
|
[pbr::OriginalName("CORD")] Cord = 1,
|
||||||
STRING_PIECE = 2,
|
[pbr::OriginalName("STRING_PIECE")] StringPiece = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal enum JSType {
|
internal enum JSType {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Use the default type.
|
/// Use the default type.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
JS_NORMAL = 0,
|
[pbr::OriginalName("JS_NORMAL")] JsNormal = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Use JavaScript strings.
|
/// Use JavaScript strings.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
JS_STRING = 1,
|
[pbr::OriginalName("JS_STRING")] JsString = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Use JavaScript numbers.
|
/// Use JavaScript numbers.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
JS_NUMBER = 2,
|
[pbr::OriginalName("JS_NUMBER")] JsNumber = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -133,41 +133,41 @@ namespace Google.Protobuf.Reflection
|
|||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_DOUBLE:
|
case FieldDescriptorProto.Types.Type.Double:
|
||||||
return FieldType.Double;
|
return FieldType.Double;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_FLOAT:
|
case FieldDescriptorProto.Types.Type.Float:
|
||||||
return FieldType.Float;
|
return FieldType.Float;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_INT64:
|
case FieldDescriptorProto.Types.Type.Int64:
|
||||||
return FieldType.Int64;
|
return FieldType.Int64;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_UINT64:
|
case FieldDescriptorProto.Types.Type.Uint64:
|
||||||
return FieldType.UInt64;
|
return FieldType.UInt64;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_INT32:
|
case FieldDescriptorProto.Types.Type.Int32:
|
||||||
return FieldType.Int32;
|
return FieldType.Int32;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_FIXED64:
|
case FieldDescriptorProto.Types.Type.Fixed64:
|
||||||
return FieldType.Fixed64;
|
return FieldType.Fixed64;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_FIXED32:
|
case FieldDescriptorProto.Types.Type.Fixed32:
|
||||||
return FieldType.Fixed32;
|
return FieldType.Fixed32;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_BOOL:
|
case FieldDescriptorProto.Types.Type.Bool:
|
||||||
return FieldType.Bool;
|
return FieldType.Bool;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_STRING:
|
case FieldDescriptorProto.Types.Type.String:
|
||||||
return FieldType.String;
|
return FieldType.String;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_GROUP:
|
case FieldDescriptorProto.Types.Type.Group:
|
||||||
return FieldType.Group;
|
return FieldType.Group;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_MESSAGE:
|
case FieldDescriptorProto.Types.Type.Message:
|
||||||
return FieldType.Message;
|
return FieldType.Message;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_BYTES:
|
case FieldDescriptorProto.Types.Type.Bytes:
|
||||||
return FieldType.Bytes;
|
return FieldType.Bytes;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_UINT32:
|
case FieldDescriptorProto.Types.Type.Uint32:
|
||||||
return FieldType.UInt32;
|
return FieldType.UInt32;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_ENUM:
|
case FieldDescriptorProto.Types.Type.Enum:
|
||||||
return FieldType.Enum;
|
return FieldType.Enum;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_SFIXED32:
|
case FieldDescriptorProto.Types.Type.Sfixed32:
|
||||||
return FieldType.SFixed32;
|
return FieldType.SFixed32;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_SFIXED64:
|
case FieldDescriptorProto.Types.Type.Sfixed64:
|
||||||
return FieldType.SFixed64;
|
return FieldType.SFixed64;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_SINT32:
|
case FieldDescriptorProto.Types.Type.Sint32:
|
||||||
return FieldType.SInt32;
|
return FieldType.SInt32;
|
||||||
case FieldDescriptorProto.Types.Type.TYPE_SINT64:
|
case FieldDescriptorProto.Types.Type.Sint64:
|
||||||
return FieldType.SInt64;
|
return FieldType.SInt64;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentException("Invalid type specified");
|
throw new ArgumentException("Invalid type specified");
|
||||||
@ -177,7 +177,7 @@ namespace Google.Protobuf.Reflection
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns <c>true</c> if this field is a repeated field; <c>false</c> otherwise.
|
/// Returns <c>true</c> if this field is a repeated field; <c>false</c> otherwise.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsRepeated => Proto.Label == FieldDescriptorProto.Types.Label.LABEL_REPEATED;
|
public bool IsRepeated => Proto.Label == FieldDescriptorProto.Types.Label.Repeated;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns <c>true</c> if this field is a map field; <c>false</c> otherwise.
|
/// Returns <c>true</c> if this field is a map field; <c>false</c> otherwise.
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
#region Copyright notice and license
|
||||||
|
// Protocol Buffers - Google's data interchange format
|
||||||
|
// Copyright 2008 Google Inc. All rights reserved.
|
||||||
|
// https://developers.google.com/protocol-buffers/
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are
|
||||||
|
// met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following disclaimer
|
||||||
|
// in the documentation and/or other materials provided with the
|
||||||
|
// distribution.
|
||||||
|
// * Neither the name of Google Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from
|
||||||
|
// this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Google.Protobuf.Reflection
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Specifies the original name (in the .proto file) of a named element,
|
||||||
|
/// such as an enum value.
|
||||||
|
/// </summary>
|
||||||
|
[AttributeUsage(AttributeTargets.Field)]
|
||||||
|
public class OriginalNameAttribute : Attribute
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The name of the element in the .proto file.
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructs a new attribute instance for the given name.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="name">The name of the element in the .proto file.</param>
|
||||||
|
public OriginalNameAttribute(string name)
|
||||||
|
{
|
||||||
|
Name = ProtoPreconditions.CheckNotNull(name, nameof(name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -185,7 +185,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
|
|
||||||
/// <summary>Field number for the "syntax" field.</summary>
|
/// <summary>Field number for the "syntax" field.</summary>
|
||||||
public const int SyntaxFieldNumber = 7;
|
public const int SyntaxFieldNumber = 7;
|
||||||
private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2;
|
private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The source syntax of the service.
|
/// The source syntax of the service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -225,7 +225,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
if (Version.Length != 0) hash ^= Version.GetHashCode();
|
if (Version.Length != 0) hash ^= Version.GetHashCode();
|
||||||
if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
|
if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
|
||||||
hash ^= mixins_.GetHashCode();
|
hash ^= mixins_.GetHashCode();
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) hash ^= Syntax.GetHashCode();
|
if (Syntax != 0) hash ^= Syntax.GetHashCode();
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +249,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
output.WriteMessage(SourceContext);
|
output.WriteMessage(SourceContext);
|
||||||
}
|
}
|
||||||
mixins_.WriteTo(output, _repeated_mixins_codec);
|
mixins_.WriteTo(output, _repeated_mixins_codec);
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (Syntax != 0) {
|
||||||
output.WriteRawTag(56);
|
output.WriteRawTag(56);
|
||||||
output.WriteEnum((int) Syntax);
|
output.WriteEnum((int) Syntax);
|
||||||
}
|
}
|
||||||
@ -269,7 +269,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
|
size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
|
||||||
}
|
}
|
||||||
size += mixins_.CalculateSize(_repeated_mixins_codec);
|
size += mixins_.CalculateSize(_repeated_mixins_codec);
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (Syntax != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
@ -294,7 +294,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
SourceContext.MergeFrom(other.SourceContext);
|
SourceContext.MergeFrom(other.SourceContext);
|
||||||
}
|
}
|
||||||
mixins_.Add(other.mixins_);
|
mixins_.Add(other.mixins_);
|
||||||
if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (other.Syntax != 0) {
|
||||||
Syntax = other.Syntax;
|
Syntax = other.Syntax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -458,7 +458,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
|
|
||||||
/// <summary>Field number for the "syntax" field.</summary>
|
/// <summary>Field number for the "syntax" field.</summary>
|
||||||
public const int SyntaxFieldNumber = 7;
|
public const int SyntaxFieldNumber = 7;
|
||||||
private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2;
|
private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The source syntax of this method.
|
/// The source syntax of this method.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -498,7 +498,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
if (ResponseTypeUrl.Length != 0) hash ^= ResponseTypeUrl.GetHashCode();
|
if (ResponseTypeUrl.Length != 0) hash ^= ResponseTypeUrl.GetHashCode();
|
||||||
if (ResponseStreaming != false) hash ^= ResponseStreaming.GetHashCode();
|
if (ResponseStreaming != false) hash ^= ResponseStreaming.GetHashCode();
|
||||||
hash ^= options_.GetHashCode();
|
hash ^= options_.GetHashCode();
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) hash ^= Syntax.GetHashCode();
|
if (Syntax != 0) hash ^= Syntax.GetHashCode();
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -528,7 +528,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
output.WriteBool(ResponseStreaming);
|
output.WriteBool(ResponseStreaming);
|
||||||
}
|
}
|
||||||
options_.WriteTo(output, _repeated_options_codec);
|
options_.WriteTo(output, _repeated_options_codec);
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (Syntax != 0) {
|
||||||
output.WriteRawTag(56);
|
output.WriteRawTag(56);
|
||||||
output.WriteEnum((int) Syntax);
|
output.WriteEnum((int) Syntax);
|
||||||
}
|
}
|
||||||
@ -552,7 +552,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
size += 1 + 1;
|
size += 1 + 1;
|
||||||
}
|
}
|
||||||
size += options_.CalculateSize(_repeated_options_codec);
|
size += options_.CalculateSize(_repeated_options_codec);
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (Syntax != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
@ -578,7 +578,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
ResponseStreaming = other.ResponseStreaming;
|
ResponseStreaming = other.ResponseStreaming;
|
||||||
}
|
}
|
||||||
options_.Add(other.options_);
|
options_.Add(other.options_);
|
||||||
if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (other.Syntax != 0) {
|
||||||
Syntax = other.Syntax;
|
Syntax = other.Syntax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Null value.
|
/// Null value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
NULL_VALUE = 0,
|
[pbr::OriginalName("NULL_VALUE")] NullValue = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -234,7 +234,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
/// Represents a null value.
|
/// Represents a null value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public global::Google.Protobuf.WellKnownTypes.NullValue NullValue {
|
public global::Google.Protobuf.WellKnownTypes.NullValue NullValue {
|
||||||
get { return kindCase_ == KindOneofCase.NullValue ? (global::Google.Protobuf.WellKnownTypes.NullValue) kind_ : global::Google.Protobuf.WellKnownTypes.NullValue.NULL_VALUE; }
|
get { return kindCase_ == KindOneofCase.NullValue ? (global::Google.Protobuf.WellKnownTypes.NullValue) kind_ : 0; }
|
||||||
set {
|
set {
|
||||||
kind_ = value;
|
kind_ = value;
|
||||||
kindCase_ = KindOneofCase.NullValue;
|
kindCase_ = KindOneofCase.NullValue;
|
||||||
|
@ -79,11 +79,11 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Syntax `proto2`.
|
/// Syntax `proto2`.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SYNTAX_PROTO2 = 0,
|
[pbr::OriginalName("SYNTAX_PROTO2")] Proto2 = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Syntax `proto3`.
|
/// Syntax `proto3`.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SYNTAX_PROTO3 = 1,
|
[pbr::OriginalName("SYNTAX_PROTO3")] Proto3 = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -188,7 +188,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
|
|
||||||
/// <summary>Field number for the "syntax" field.</summary>
|
/// <summary>Field number for the "syntax" field.</summary>
|
||||||
public const int SyntaxFieldNumber = 6;
|
public const int SyntaxFieldNumber = 6;
|
||||||
private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2;
|
private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The source syntax.
|
/// The source syntax.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -226,7 +226,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
hash ^= oneofs_.GetHashCode();
|
hash ^= oneofs_.GetHashCode();
|
||||||
hash ^= options_.GetHashCode();
|
hash ^= options_.GetHashCode();
|
||||||
if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
|
if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) hash ^= Syntax.GetHashCode();
|
if (Syntax != 0) hash ^= Syntax.GetHashCode();
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
output.WriteRawTag(42);
|
output.WriteRawTag(42);
|
||||||
output.WriteMessage(SourceContext);
|
output.WriteMessage(SourceContext);
|
||||||
}
|
}
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (Syntax != 0) {
|
||||||
output.WriteRawTag(48);
|
output.WriteRawTag(48);
|
||||||
output.WriteEnum((int) Syntax);
|
output.WriteEnum((int) Syntax);
|
||||||
}
|
}
|
||||||
@ -263,7 +263,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
if (sourceContext_ != null) {
|
if (sourceContext_ != null) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
|
size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
|
||||||
}
|
}
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (Syntax != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
@ -285,7 +285,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
}
|
}
|
||||||
SourceContext.MergeFrom(other.SourceContext);
|
SourceContext.MergeFrom(other.SourceContext);
|
||||||
}
|
}
|
||||||
if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (other.Syntax != 0) {
|
||||||
Syntax = other.Syntax;
|
Syntax = other.Syntax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -371,7 +371,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
|
|
||||||
/// <summary>Field number for the "kind" field.</summary>
|
/// <summary>Field number for the "kind" field.</summary>
|
||||||
public const int KindFieldNumber = 1;
|
public const int KindFieldNumber = 1;
|
||||||
private global::Google.Protobuf.WellKnownTypes.Field.Types.Kind kind_ = global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN;
|
private global::Google.Protobuf.WellKnownTypes.Field.Types.Kind kind_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The field type.
|
/// The field type.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -384,7 +384,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
|
|
||||||
/// <summary>Field number for the "cardinality" field.</summary>
|
/// <summary>Field number for the "cardinality" field.</summary>
|
||||||
public const int CardinalityFieldNumber = 2;
|
public const int CardinalityFieldNumber = 2;
|
||||||
private global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality cardinality_ = global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN;
|
private global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality cardinality_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The field cardinality.
|
/// The field cardinality.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -526,8 +526,8 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
|
|
||||||
public override int GetHashCode() {
|
public override int GetHashCode() {
|
||||||
int hash = 1;
|
int hash = 1;
|
||||||
if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) hash ^= Kind.GetHashCode();
|
if (Kind != 0) hash ^= Kind.GetHashCode();
|
||||||
if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) hash ^= Cardinality.GetHashCode();
|
if (Cardinality != 0) hash ^= Cardinality.GetHashCode();
|
||||||
if (Number != 0) hash ^= Number.GetHashCode();
|
if (Number != 0) hash ^= Number.GetHashCode();
|
||||||
if (Name.Length != 0) hash ^= Name.GetHashCode();
|
if (Name.Length != 0) hash ^= Name.GetHashCode();
|
||||||
if (TypeUrl.Length != 0) hash ^= TypeUrl.GetHashCode();
|
if (TypeUrl.Length != 0) hash ^= TypeUrl.GetHashCode();
|
||||||
@ -544,11 +544,11 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void WriteTo(pb::CodedOutputStream output) {
|
public void WriteTo(pb::CodedOutputStream output) {
|
||||||
if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
|
if (Kind != 0) {
|
||||||
output.WriteRawTag(8);
|
output.WriteRawTag(8);
|
||||||
output.WriteEnum((int) Kind);
|
output.WriteEnum((int) Kind);
|
||||||
}
|
}
|
||||||
if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
|
if (Cardinality != 0) {
|
||||||
output.WriteRawTag(16);
|
output.WriteRawTag(16);
|
||||||
output.WriteEnum((int) Cardinality);
|
output.WriteEnum((int) Cardinality);
|
||||||
}
|
}
|
||||||
@ -585,10 +585,10 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
|
|
||||||
public int CalculateSize() {
|
public int CalculateSize() {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
|
if (Kind != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
|
||||||
}
|
}
|
||||||
if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
|
if (Cardinality != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Cardinality);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Cardinality);
|
||||||
}
|
}
|
||||||
if (Number != 0) {
|
if (Number != 0) {
|
||||||
@ -620,10 +620,10 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
if (other == null) {
|
if (other == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (other.Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
|
if (other.Kind != 0) {
|
||||||
Kind = other.Kind;
|
Kind = other.Kind;
|
||||||
}
|
}
|
||||||
if (other.Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
|
if (other.Cardinality != 0) {
|
||||||
Cardinality = other.Cardinality;
|
Cardinality = other.Cardinality;
|
||||||
}
|
}
|
||||||
if (other.Number != 0) {
|
if (other.Number != 0) {
|
||||||
@ -712,79 +712,79 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type unknown.
|
/// Field type unknown.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_UNKNOWN = 0,
|
[pbr::OriginalName("TYPE_UNKNOWN")] TypeUnknown = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type double.
|
/// Field type double.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_DOUBLE = 1,
|
[pbr::OriginalName("TYPE_DOUBLE")] TypeDouble = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type float.
|
/// Field type float.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_FLOAT = 2,
|
[pbr::OriginalName("TYPE_FLOAT")] TypeFloat = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type int64.
|
/// Field type int64.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_INT64 = 3,
|
[pbr::OriginalName("TYPE_INT64")] TypeInt64 = 3,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type uint64.
|
/// Field type uint64.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_UINT64 = 4,
|
[pbr::OriginalName("TYPE_UINT64")] TypeUint64 = 4,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type int32.
|
/// Field type int32.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_INT32 = 5,
|
[pbr::OriginalName("TYPE_INT32")] TypeInt32 = 5,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type fixed64.
|
/// Field type fixed64.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_FIXED64 = 6,
|
[pbr::OriginalName("TYPE_FIXED64")] TypeFixed64 = 6,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type fixed32.
|
/// Field type fixed32.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_FIXED32 = 7,
|
[pbr::OriginalName("TYPE_FIXED32")] TypeFixed32 = 7,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type bool.
|
/// Field type bool.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_BOOL = 8,
|
[pbr::OriginalName("TYPE_BOOL")] TypeBool = 8,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type string.
|
/// Field type string.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_STRING = 9,
|
[pbr::OriginalName("TYPE_STRING")] TypeString = 9,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type group. Proto2 syntax only, and deprecated.
|
/// Field type group. Proto2 syntax only, and deprecated.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_GROUP = 10,
|
[pbr::OriginalName("TYPE_GROUP")] TypeGroup = 10,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type message.
|
/// Field type message.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_MESSAGE = 11,
|
[pbr::OriginalName("TYPE_MESSAGE")] TypeMessage = 11,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type bytes.
|
/// Field type bytes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_BYTES = 12,
|
[pbr::OriginalName("TYPE_BYTES")] TypeBytes = 12,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type uint32.
|
/// Field type uint32.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_UINT32 = 13,
|
[pbr::OriginalName("TYPE_UINT32")] TypeUint32 = 13,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type enum.
|
/// Field type enum.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_ENUM = 14,
|
[pbr::OriginalName("TYPE_ENUM")] TypeEnum = 14,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type sfixed32.
|
/// Field type sfixed32.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_SFIXED32 = 15,
|
[pbr::OriginalName("TYPE_SFIXED32")] TypeSfixed32 = 15,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type sfixed64.
|
/// Field type sfixed64.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_SFIXED64 = 16,
|
[pbr::OriginalName("TYPE_SFIXED64")] TypeSfixed64 = 16,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type sint32.
|
/// Field type sint32.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_SINT32 = 17,
|
[pbr::OriginalName("TYPE_SINT32")] TypeSint32 = 17,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Field type sint64.
|
/// Field type sint64.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
TYPE_SINT64 = 18,
|
[pbr::OriginalName("TYPE_SINT64")] TypeSint64 = 18,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -794,19 +794,19 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// For fields with unknown cardinality.
|
/// For fields with unknown cardinality.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CARDINALITY_UNKNOWN = 0,
|
[pbr::OriginalName("CARDINALITY_UNKNOWN")] Unknown = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For optional fields.
|
/// For optional fields.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CARDINALITY_OPTIONAL = 1,
|
[pbr::OriginalName("CARDINALITY_OPTIONAL")] Optional = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For required fields. Proto2 syntax only.
|
/// For required fields. Proto2 syntax only.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CARDINALITY_REQUIRED = 2,
|
[pbr::OriginalName("CARDINALITY_REQUIRED")] Required = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For repeated fields.
|
/// For repeated fields.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CARDINALITY_REPEATED = 3,
|
[pbr::OriginalName("CARDINALITY_REPEATED")] Repeated = 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -900,7 +900,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
|
|
||||||
/// <summary>Field number for the "syntax" field.</summary>
|
/// <summary>Field number for the "syntax" field.</summary>
|
||||||
public const int SyntaxFieldNumber = 5;
|
public const int SyntaxFieldNumber = 5;
|
||||||
private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2;
|
private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The source syntax.
|
/// The source syntax.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -936,7 +936,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
hash ^= enumvalue_.GetHashCode();
|
hash ^= enumvalue_.GetHashCode();
|
||||||
hash ^= options_.GetHashCode();
|
hash ^= options_.GetHashCode();
|
||||||
if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
|
if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) hash ^= Syntax.GetHashCode();
|
if (Syntax != 0) hash ^= Syntax.GetHashCode();
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -955,7 +955,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
output.WriteRawTag(34);
|
output.WriteRawTag(34);
|
||||||
output.WriteMessage(SourceContext);
|
output.WriteMessage(SourceContext);
|
||||||
}
|
}
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (Syntax != 0) {
|
||||||
output.WriteRawTag(40);
|
output.WriteRawTag(40);
|
||||||
output.WriteEnum((int) Syntax);
|
output.WriteEnum((int) Syntax);
|
||||||
}
|
}
|
||||||
@ -971,7 +971,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
if (sourceContext_ != null) {
|
if (sourceContext_ != null) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
|
size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
|
||||||
}
|
}
|
||||||
if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (Syntax != 0) {
|
||||||
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
|
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
@ -992,7 +992,7 @@ namespace Google.Protobuf.WellKnownTypes {
|
|||||||
}
|
}
|
||||||
SourceContext.MergeFrom(other.SourceContext);
|
SourceContext.MergeFrom(other.SourceContext);
|
||||||
}
|
}
|
||||||
if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
|
if (other.Syntax != 0) {
|
||||||
Syntax = other.Syntax;
|
Syntax = other.Syntax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include <google/protobuf/compiler/csharp/csharp_doc_comment.h>
|
#include <google/protobuf/compiler/csharp/csharp_doc_comment.h>
|
||||||
#include <google/protobuf/compiler/csharp/csharp_enum.h>
|
#include <google/protobuf/compiler/csharp/csharp_enum.h>
|
||||||
#include <google/protobuf/compiler/csharp/csharp_helpers.h>
|
#include <google/protobuf/compiler/csharp/csharp_helpers.h>
|
||||||
|
#include <google/protobuf/compiler/csharp/csharp_options.h>
|
||||||
|
|
||||||
using google::protobuf::internal::scoped_ptr;
|
using google::protobuf::internal::scoped_ptr;
|
||||||
|
|
||||||
@ -64,11 +65,24 @@ void EnumGenerator::Generate(io::Printer* printer) {
|
|||||||
"access_level", class_access_level(),
|
"access_level", class_access_level(),
|
||||||
"name", descriptor_->name());
|
"name", descriptor_->name());
|
||||||
printer->Indent();
|
printer->Indent();
|
||||||
|
std::set<string> used_names;
|
||||||
for (int i = 0; i < descriptor_->value_count(); i++) {
|
for (int i = 0; i < descriptor_->value_count(); i++) {
|
||||||
WriteEnumValueDocComment(printer, descriptor_->value(i));
|
WriteEnumValueDocComment(printer, descriptor_->value(i));
|
||||||
printer->Print("$name$ = $number$,\n",
|
string original_name = descriptor_->value(i)->name();
|
||||||
"name", descriptor_->value(i)->name(),
|
string name = options()->legacy_enum_values
|
||||||
"number", SimpleItoa(descriptor_->value(i)->number()));
|
? descriptor_->value(i)->name()
|
||||||
|
: GetEnumValueName(descriptor_->name(), descriptor_->value(i)->name());
|
||||||
|
// Make sure we don't get any duplicate names due to prefix removal.
|
||||||
|
while (!used_names.insert(name).second) {
|
||||||
|
// It's possible we'll end up giving this warning multiple times, but that's better than not at all.
|
||||||
|
GOOGLE_LOG(WARNING) << "Duplicate enum value " << name << " (originally " << original_name
|
||||||
|
<< ") in " << descriptor_->name() << "; adding underscore to distinguish";
|
||||||
|
name += "_";
|
||||||
|
}
|
||||||
|
printer->Print("[pbr::OriginalName(\"$original_name$\")] $name$ = $number$,\n",
|
||||||
|
"original_name", original_name,
|
||||||
|
"name", name,
|
||||||
|
"number", SimpleItoa(descriptor_->value(i)->number()));
|
||||||
}
|
}
|
||||||
printer->Outdent();
|
printer->Outdent();
|
||||||
printer->Print("}\n");
|
printer->Print("}\n");
|
||||||
|
@ -306,7 +306,9 @@ std::string FieldGeneratorBase::default_value() {
|
|||||||
std::string FieldGeneratorBase::default_value(const FieldDescriptor* descriptor) {
|
std::string FieldGeneratorBase::default_value(const FieldDescriptor* descriptor) {
|
||||||
switch (descriptor->type()) {
|
switch (descriptor->type()) {
|
||||||
case FieldDescriptor::TYPE_ENUM:
|
case FieldDescriptor::TYPE_ENUM:
|
||||||
return type_name() + "." + descriptor->default_value_enum()->name();
|
// All proto3 enums have a default value of 0, and there's an implicit conversion from the constant 0 to
|
||||||
|
// any C# enum. This means we don't need to work out what we actually mapped the enum value name to.
|
||||||
|
return "0";
|
||||||
case FieldDescriptor::TYPE_MESSAGE:
|
case FieldDescriptor::TYPE_MESSAGE:
|
||||||
case FieldDescriptor::TYPE_GROUP:
|
case FieldDescriptor::TYPE_GROUP:
|
||||||
if (IsWrapperType(descriptor)) {
|
if (IsWrapperType(descriptor)) {
|
||||||
|
@ -83,6 +83,9 @@ bool Generator::Generate(
|
|||||||
cli_options.base_namespace_specified = true;
|
cli_options.base_namespace_specified = true;
|
||||||
} else if (options[i].first == "internal_access") {
|
} else if (options[i].first == "internal_access") {
|
||||||
cli_options.internal_access = true;
|
cli_options.internal_access = true;
|
||||||
|
} else if (options[i].first == "legacy_enum_values") {
|
||||||
|
// TODO: Remove this before final release
|
||||||
|
cli_options.legacy_enum_values = true;
|
||||||
} else {
|
} else {
|
||||||
*error = "Unknown generator option: " + options[i].first;
|
*error = "Unknown generator option: " + options[i].first;
|
||||||
return false;
|
return false;
|
||||||
|
@ -30,8 +30,8 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include <google/protobuf/compiler/ruby/ruby_generator.h>
|
|
||||||
#include <google/protobuf/compiler/command_line_interface.h>
|
#include <google/protobuf/compiler/command_line_interface.h>
|
||||||
|
#include <google/protobuf/compiler/csharp/csharp_helpers.h>
|
||||||
#include <google/protobuf/io/zero_copy_stream.h>
|
#include <google/protobuf/io/zero_copy_stream.h>
|
||||||
#include <google/protobuf/io/printer.h>
|
#include <google/protobuf/io/printer.h>
|
||||||
|
|
||||||
@ -45,7 +45,23 @@ namespace compiler {
|
|||||||
namespace csharp {
|
namespace csharp {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
// TODO(jtattermusch): add some tests.
|
TEST(CSharpEnumValue, PascalCasedPrefixStripping) {
|
||||||
|
EXPECT_EQ("Bar", GetEnumValueName("Foo", "BAR"));
|
||||||
|
EXPECT_EQ("BarBaz", GetEnumValueName("Foo", "BAR_BAZ"));
|
||||||
|
EXPECT_EQ("Bar", GetEnumValueName("Foo", "FOO_BAR"));
|
||||||
|
EXPECT_EQ("Bar", GetEnumValueName("Foo", "FOO__BAR"));
|
||||||
|
EXPECT_EQ("BarBaz", GetEnumValueName("Foo", "FOO_BAR_BAZ"));
|
||||||
|
EXPECT_EQ("BarBaz", GetEnumValueName("Foo", "Foo_BarBaz"));
|
||||||
|
EXPECT_EQ("Bar", GetEnumValueName("FO_O", "FOO_BAR"));
|
||||||
|
EXPECT_EQ("Bar", GetEnumValueName("FOO", "F_O_O_BAR"));
|
||||||
|
EXPECT_EQ("Bar", GetEnumValueName("Foo", "BAR"));
|
||||||
|
EXPECT_EQ("BarBaz", GetEnumValueName("Foo", "BAR_BAZ"));
|
||||||
|
EXPECT_EQ("Foo", GetEnumValueName("Foo", "FOO"));
|
||||||
|
EXPECT_EQ("Foo", GetEnumValueName("Foo", "FOO___"));
|
||||||
|
// Identifiers can't start with digits
|
||||||
|
EXPECT_EQ("_2Bar", GetEnumValueName("Foo", "FOO_2_BAR"));
|
||||||
|
EXPECT_EQ("_2", GetEnumValueName("Foo", "FOO___2"));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace csharp
|
} // namespace csharp
|
||||||
|
@ -178,6 +178,104 @@ std::string UnderscoresToPascalCase(const std::string& input) {
|
|||||||
return UnderscoresToCamelCase(input, true);
|
return UnderscoresToCamelCase(input, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert a string which is expected to be SHOUTY_CASE (but may not be *precisely* shouty)
|
||||||
|
// into a PascalCase string. Precise rules implemented:
|
||||||
|
|
||||||
|
// Previous input character Current character Case
|
||||||
|
// Any Non-alphanumeric Skipped
|
||||||
|
// None - first char of input Alphanumeric Upper
|
||||||
|
// Non-letter (e.g. _ or 1) Alphanumeric Upper
|
||||||
|
// Numeric Alphanumeric Upper
|
||||||
|
// Lower letter Alphanumeric Same as current
|
||||||
|
// Upper letter Alphanumeric Lower
|
||||||
|
std::string ShoutyToPascalCase(const std::string& input) {
|
||||||
|
string result;
|
||||||
|
// Simple way of implementing "always start with upper"
|
||||||
|
char previous = '_';
|
||||||
|
for (int i = 0; i < input.size(); i++) {
|
||||||
|
char current = input[i];
|
||||||
|
if (!ascii_isalnum(current)) {
|
||||||
|
previous = current;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!ascii_isalnum(previous)) {
|
||||||
|
result += ascii_toupper(current);
|
||||||
|
} else if (ascii_isdigit(previous)) {
|
||||||
|
result += ascii_toupper(current);
|
||||||
|
} else if (ascii_islower(previous)) {
|
||||||
|
result += current;
|
||||||
|
} else {
|
||||||
|
result += ascii_tolower(current);
|
||||||
|
}
|
||||||
|
previous = current;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt to remove a prefix from a value, ignoring casing and skipping underscores.
|
||||||
|
// (foo, foo_bar) => bar - underscore after prefix is skipped
|
||||||
|
// (FOO, foo_bar) => bar - casing is ignored
|
||||||
|
// (foo_bar, foobarbaz) => baz - underscore in prefix is ignored
|
||||||
|
// (foobar, foo_barbaz) => baz - underscore in value is ignored
|
||||||
|
// (foo, bar) => bar - prefix isn't matched; return original value
|
||||||
|
std::string TryRemovePrefix(const std::string& prefix, const std::string& value) {
|
||||||
|
// First normalize to a lower-case no-underscores prefix to match against
|
||||||
|
std::string prefix_to_match = "";
|
||||||
|
for (size_t i = 0; i < prefix.size(); i++) {
|
||||||
|
if (prefix[i] != '_') {
|
||||||
|
prefix_to_match += ascii_tolower(prefix[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This keeps track of how much of value we've consumed
|
||||||
|
size_t prefix_index, value_index;
|
||||||
|
for (prefix_index = 0, value_index = 0;
|
||||||
|
prefix_index < prefix_to_match.size() && value_index < value.size();
|
||||||
|
value_index++) {
|
||||||
|
// Skip over underscores in the value
|
||||||
|
if (value[value_index] == '_') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (ascii_tolower(value[value_index]) != prefix_to_match[prefix_index++]) {
|
||||||
|
// Failed to match the prefix - bail out early.
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we didn't finish looking through the prefix, we can't strip it.
|
||||||
|
if (prefix_index < prefix_to_match.size()) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step over any underscores after the prefix
|
||||||
|
while (value_index < value.size() && value[value_index] == '_') {
|
||||||
|
value_index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there's nothing left (e.g. it was a prefix with only underscores afterwards), don't strip.
|
||||||
|
if (value_index == value.size()) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value.substr(value_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format the enum value name in a pleasant way for C#:
|
||||||
|
// - Strip the enum name as a prefix if possible
|
||||||
|
// - Convert to PascalCase.
|
||||||
|
// For example, an enum called Color with a value of COLOR_BLUE should
|
||||||
|
// result in an enum value in C# called just Blue
|
||||||
|
std::string GetEnumValueName(const std::string& enum_name, const std::string& enum_value_name) {
|
||||||
|
std::string stripped = TryRemovePrefix(enum_name, enum_value_name);
|
||||||
|
std::string result = ShoutyToPascalCase(stripped);
|
||||||
|
// Just in case we have an enum name of FOO and a value of FOO_2... make sure the returned
|
||||||
|
// string is a valid identifier.
|
||||||
|
if (ascii_isdigit(result[0])) {
|
||||||
|
result = "_" + result;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
std::string ToCSharpName(const std::string& name, const FileDescriptor* file) {
|
std::string ToCSharpName(const std::string& name, const FileDescriptor* file) {
|
||||||
std::string result = GetFileNamespace(file);
|
std::string result = GetFileNamespace(file);
|
||||||
if (result != "") {
|
if (result != "") {
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#define GOOGLE_PROTOBUF_COMPILER_CSHARP_HELPERS_H__
|
#define GOOGLE_PROTOBUF_COMPILER_CSHARP_HELPERS_H__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <google/protobuf/stubs/port.h>
|
||||||
#include <google/protobuf/descriptor.pb.h>
|
#include <google/protobuf/descriptor.pb.h>
|
||||||
#include <google/protobuf/descriptor.h>
|
#include <google/protobuf/descriptor.h>
|
||||||
#include <google/protobuf/compiler/code_generator.h>
|
#include <google/protobuf/compiler/code_generator.h>
|
||||||
@ -93,6 +94,10 @@ inline std::string UnderscoresToCamelCase(const std::string& input, bool cap_nex
|
|||||||
|
|
||||||
std::string UnderscoresToPascalCase(const std::string& input);
|
std::string UnderscoresToPascalCase(const std::string& input);
|
||||||
|
|
||||||
|
// Note that we wouldn't normally want to export this (we're not expecting
|
||||||
|
// it to be used outside libprotoc itself) but this exposes it for testing.
|
||||||
|
std::string LIBPROTOBUF_EXPORT GetEnumValueName(const std::string& enum_name, const std::string& enum_value_name);
|
||||||
|
|
||||||
// TODO(jtattermusch): perhaps we could move this to strutil
|
// TODO(jtattermusch): perhaps we could move this to strutil
|
||||||
std::string StringToBase64(const std::string& input);
|
std::string StringToBase64(const std::string& input);
|
||||||
|
|
||||||
|
@ -45,7 +45,8 @@ struct Options {
|
|||||||
file_extension(".cs"),
|
file_extension(".cs"),
|
||||||
base_namespace(""),
|
base_namespace(""),
|
||||||
base_namespace_specified(false),
|
base_namespace_specified(false),
|
||||||
internal_access(false) {
|
internal_access(false),
|
||||||
|
legacy_enum_values(false) {
|
||||||
}
|
}
|
||||||
// Extension of the generated file. Defaults to ".cs"
|
// Extension of the generated file. Defaults to ".cs"
|
||||||
string file_extension;
|
string file_extension;
|
||||||
@ -68,6 +69,12 @@ struct Options {
|
|||||||
// Whether the generated classes should have accessibility level of "internal".
|
// Whether the generated classes should have accessibility level of "internal".
|
||||||
// Defaults to false that generates "public" classes.
|
// Defaults to false that generates "public" classes.
|
||||||
bool internal_access;
|
bool internal_access;
|
||||||
|
// By default, C# codegen now uses PascalCased enum values names, after
|
||||||
|
// removing the enum type name as a prefix (if it *is* a prefix of the value).
|
||||||
|
// Setting this option reverts to the previous behavior of just copying the
|
||||||
|
// value name specified in the .proto file, allowing gradual migration.
|
||||||
|
// This option will be removed before final release.
|
||||||
|
bool legacy_enum_values;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace csharp
|
} // namespace csharp
|
||||||
|
Loading…
Reference in New Issue
Block a user