You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
5.2 KiB
180 lines
5.2 KiB
// Go support for Protocol Buffers - Google's data interchange format
|
|
//
|
|
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// https://github.com/golang/protobuf
|
|
//
|
|
// 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.
|
|
|
|
syntax = "proto2";
|
|
|
|
import "google/protobuf/any.proto";
|
|
import "google/protobuf/duration.proto";
|
|
import "google/protobuf/struct.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
import "google/protobuf/wrappers.proto";
|
|
|
|
package jsonpb;
|
|
|
|
// Test message for holding primitive types.
|
|
message Simple {
|
|
optional bool o_bool = 1;
|
|
optional int32 o_int32 = 2;
|
|
optional int32 o_int32_str = 3;
|
|
optional int64 o_int64 = 4;
|
|
optional int64 o_int64_str = 5;
|
|
optional uint32 o_uint32 = 6;
|
|
optional uint32 o_uint32_str = 7;
|
|
optional uint64 o_uint64 = 8;
|
|
optional uint64 o_uint64_str = 9;
|
|
optional sint32 o_sint32 = 10;
|
|
optional sint32 o_sint32_str = 11;
|
|
optional sint64 o_sint64 = 12;
|
|
optional sint64 o_sint64_str = 13;
|
|
optional float o_float = 14;
|
|
optional float o_float_str = 15;
|
|
optional double o_double = 16;
|
|
optional double o_double_str = 17;
|
|
optional string o_string = 18;
|
|
optional bytes o_bytes = 19;
|
|
}
|
|
|
|
// Test message for holding special non-finites primitives.
|
|
message NonFinites {
|
|
optional float f_nan = 1;
|
|
optional float f_pinf = 2;
|
|
optional float f_ninf = 3;
|
|
optional double d_nan = 4;
|
|
optional double d_pinf = 5;
|
|
optional double d_ninf = 6;
|
|
}
|
|
|
|
// Test message for holding repeated primitives.
|
|
message Repeats {
|
|
repeated bool r_bool = 1;
|
|
repeated int32 r_int32 = 2;
|
|
repeated int64 r_int64 = 3;
|
|
repeated uint32 r_uint32 = 4;
|
|
repeated uint64 r_uint64 = 5;
|
|
repeated sint32 r_sint32 = 6;
|
|
repeated sint64 r_sint64 = 7;
|
|
repeated float r_float = 8;
|
|
repeated double r_double = 9;
|
|
repeated string r_string = 10;
|
|
repeated bytes r_bytes = 11;
|
|
}
|
|
|
|
// Test message for holding enums and nested messages.
|
|
message Widget {
|
|
enum Color {
|
|
RED = 0;
|
|
GREEN = 1;
|
|
BLUE = 2;
|
|
};
|
|
optional Color color = 1;
|
|
repeated Color r_color = 2;
|
|
|
|
optional Simple simple = 10;
|
|
repeated Simple r_simple = 11;
|
|
|
|
optional Repeats repeats = 20;
|
|
repeated Repeats r_repeats = 21;
|
|
}
|
|
|
|
message Maps {
|
|
map<int64, string> m_int64_str = 1;
|
|
map<bool, Simple> m_bool_simple = 2;
|
|
}
|
|
|
|
message MsgWithOneof {
|
|
oneof union {
|
|
string title = 1;
|
|
int64 salary = 2;
|
|
string Country = 3;
|
|
string home_address = 4;
|
|
MsgWithRequired msg_with_required = 5;
|
|
}
|
|
}
|
|
|
|
message Real {
|
|
optional double value = 1;
|
|
extensions 100 to max;
|
|
}
|
|
|
|
extend Real {
|
|
optional string name = 124;
|
|
}
|
|
|
|
message Complex {
|
|
extend Real {
|
|
optional Complex real_extension = 123;
|
|
}
|
|
optional double imaginary = 1;
|
|
extensions 100 to max;
|
|
}
|
|
|
|
message KnownTypes {
|
|
optional google.protobuf.Any an = 14;
|
|
optional google.protobuf.Duration dur = 1;
|
|
optional google.protobuf.Struct st = 12;
|
|
optional google.protobuf.Timestamp ts = 2;
|
|
optional google.protobuf.ListValue lv = 15;
|
|
optional google.protobuf.Value val = 16;
|
|
|
|
optional google.protobuf.DoubleValue dbl = 3;
|
|
optional google.protobuf.FloatValue flt = 4;
|
|
optional google.protobuf.Int64Value i64 = 5;
|
|
optional google.protobuf.UInt64Value u64 = 6;
|
|
optional google.protobuf.Int32Value i32 = 7;
|
|
optional google.protobuf.UInt32Value u32 = 8;
|
|
optional google.protobuf.BoolValue bool = 9;
|
|
optional google.protobuf.StringValue str = 10;
|
|
optional google.protobuf.BytesValue bytes = 11;
|
|
}
|
|
|
|
// Test messages for marshaling/unmarshaling required fields.
|
|
message MsgWithRequired {
|
|
required string str = 1;
|
|
}
|
|
|
|
message MsgWithIndirectRequired {
|
|
optional MsgWithRequired subm = 1;
|
|
map<string, MsgWithRequired> map_field = 2;
|
|
repeated MsgWithRequired slice_field = 3;
|
|
}
|
|
|
|
message MsgWithRequiredBytes {
|
|
required bytes byts = 1;
|
|
}
|
|
|
|
message MsgWithRequiredWKT {
|
|
required google.protobuf.StringValue str = 1;
|
|
}
|
|
|
|
extend Real {
|
|
optional MsgWithRequired extm = 125;
|
|
}
|