wireshark/test/protobuf_lang_files/complex_proto_files/complex_syntax.proto

83 lines
2.3 KiB
Protocol Buffer

// Test more complex syntax of *.proto files.
syntax = "proto3";
package wireshark.protobuf.test.complex.syntax;
import "google/protobuf/descriptor.proto";
// equal to "testing.multiline.strings"
option java_package = "testing."
'multiline.'
"strings";
// user defined options for messages
extend google.protobuf.MessageOptions {
bool disabled = 1071;
bool ignored = 1072;
TestMultiLinesOption mlinemsg = 1073;
}
// user defined options for oneof types
extend google.protobuf.OneofOptions {
bool required = 1071;
}
// user defined options for fields
extend google.protobuf.FieldOptions {
FieldRules rules = 1071;
}
// test extend google.protobuf.FieldOptions twice
extend google.protobuf.FieldOptions {
string multilines = 1072;
}
message FieldRules {
oneof type {
BoolRules bool = 13;
StringRules string = 14;
}
repeated uint32 repeated_uint = 15;
}
message StringRules {
uint64 min_bytes = 2;
BoolRules morebool = 3;
string astr = 4;
}
message BoolRules {
bool const = 1;
repeated bool repeated_bool = 2;
repeated int32 repeated_int = 3;
}
message TestMultiLinesOption {
string mlines = 1;
}
message ComplexDefinedMessage {
option (mlinemsg).mlines = "first line"
"second line";
// test complex field options
string fieldWithComplexOption1 = 1 [(wireshark.protobuf.test.complex.syntax.rules).string = {min_bytes: 1}];
string fieldWithComplexOption2 = 2 [(rules).string = {min_bytes: 2 astr: "abc" }];
string fieldWithComplexOption3 = 3 [(rules).string.morebool = {const: true, repeated_bool: [false, true], repeated_int: [1, 2]}];
string fieldWithComplexOption4 = 4 [(rules).string = {min_bytes: 1; morebool { const: true }}];
string fieldWithComplexOption5 = 5 [(rules).repeated_uint = 1, (rules).repeated_uint = 2];
// test oneof custom option
oneof oneofWithOption {
option (wireshark.protobuf.test.complex.syntax.required) = true;
int32 field1 = 11;
string field2 = 12;
}
// test multilines strings
uint32 fieldWithMultilineStringOption = 20 [(wireshark.protobuf.test.complex.syntax.multilines) = "first line"
'Second line' ];
}
// add this message for testing whether this file was successfully parsed
message TestFileParsed {
optional int32 last_field_for_wireshark_test = 1;
}