Protobuf 重复消息选项
Protobuf repeated message option
我正在尝试通过扩展 google.protobuf.MessageOptions 将一些文档元信息附加到 protobuf 消息中。我的元信息选项之一可能出现不止一次。看起来我可以声明重复选项,但如何在消息中使用它?
这是我尝试实现的示例:
extend google.protobuf.MessageOptions {
optional string description = 51234;
repeated string usages = 51235;
}
message MyMsg {
option (description) = "MyMsg description";
option (usages) = ???
optional bool myFlag = 1;
optional string myStr = 2;
}
我应该输入什么来代替 ???如果我想要记录两种不同的用法?
如果我没记错的话,你可以多次指定一个重复的选项:
message MyMsg {
option (description) = "MyMsg description";
option (usages) = "usage1";
option (usages) = "usage2";
optional bool myFlag = 1;
optional string myStr = 2;
}
编辑:没有记录访问重复字段的方式,花了一些时间查看 headers 所以我决定将它添加到这个答案中:
auto opts = MyMsg::descriptor()->options();
std::cout << opts.GetExtension(description) << std::endl;
for (int i = 0; i < opts.ExtensionSize(usages); ++i)
std::cout << opts.GetExtension(usages, i) << std::endl;
我正在尝试通过扩展 google.protobuf.MessageOptions 将一些文档元信息附加到 protobuf 消息中。我的元信息选项之一可能出现不止一次。看起来我可以声明重复选项,但如何在消息中使用它?
这是我尝试实现的示例:
extend google.protobuf.MessageOptions {
optional string description = 51234;
repeated string usages = 51235;
}
message MyMsg {
option (description) = "MyMsg description";
option (usages) = ???
optional bool myFlag = 1;
optional string myStr = 2;
}
我应该输入什么来代替 ???如果我想要记录两种不同的用法?
如果我没记错的话,你可以多次指定一个重复的选项:
message MyMsg {
option (description) = "MyMsg description";
option (usages) = "usage1";
option (usages) = "usage2";
optional bool myFlag = 1;
optional string myStr = 2;
}
编辑:没有记录访问重复字段的方式,花了一些时间查看 headers 所以我决定将它添加到这个答案中:
auto opts = MyMsg::descriptor()->options();
std::cout << opts.GetExtension(description) << std::endl;
for (int i = 0; i < opts.ExtensionSize(usages); ++i)
std::cout << opts.GetExtension(usages, i) << std::endl;