Eliminates a warning on protoc 3.0.
// A very simple protocol definition, consisting of only
// one message.
+syntax = "proto2";
+
message SimpleMessage {
required int32 lucky_number = 1;
}
//
// See also the nanopb-specific options in fileproto.options.
+syntax = "proto2";
+
message ListFilesRequest {
optional string path = 1 [default = "/"];
}
// A very simple protocol definition, consisting of only
// one message.
+syntax = "proto2";
+
message SimpleMessage {
required int32 lucky_number = 1;
}
// A message containing doubles, as used by other applications.
+syntax = "proto2";
+
message DoubleMessage {
required double field1 = 1;
required double field2 = 2;
// but they are commonly implemented by filling out exactly one of
// several optional fields.
+syntax = "proto2";
+
message MsgType1
{
required int32 value = 1;
+syntax = "proto2";
+// package name placeholder
+
message SubMessage {
required string substuff1 = 1 [default = "1"];
required int32 substuff2 = 2 [default = 2];
+syntax = "proto2";
+
message SubMessage {
required string substuff1 = 1 [default = "1"];
required int32 substuff2 = 2 [default = 2];
+syntax = "proto2";
+
message SubMessage {
optional string stringvalue = 1;
repeated int32 int32value = 2;
+syntax = "proto2";
+
import "nanopb.proto";
message Person {
+syntax = "proto2";
+
import 'nanopb.proto';
message IntegerArray {
// These can only be handled in pointer/callback mode,
// see associated .options files.
+syntax = "proto2";
+
message TreeNode
{
optional int32 leaf = 1;
* a bit of a problem for the encoder/decoder (issue #164).
*/
+syntax = "proto2";
+
import 'nanopb.proto';
option (nanopb_fileopt).long_names = false;
+syntax = "proto2";
+
import 'alltypes.proto';
extend AllTypes {
+syntax = "proto2";
+
message SubMessage {
required string substuff1 = 1 [default = "1"];
required int32 substuff2 = 2 [default = 2];
+syntax = "proto2";
+
message SubMessage {
required string substuff1 = 1 [default = "1"];
required int32 substuff2 = 2 [default = 2];
Import("env", "malloc_env")
+def set_pkgname(src, dst, pkgname):
+ data = open(str(src)).read()
+ placeholder = '// package name placeholder'
+ assert placeholder in data
+ data = data.replace(placeholder, 'package %s;' % pkgname)
+ open(str(dst), 'w').write(data)
+
# We want both pointer and static versions of the AllTypes message
# Prefix them with package name.
env.Command("alltypes_static.proto", "#alltypes/alltypes.proto",
- lambda target, source, env:
- open(str(target[0]), 'w').write("package alltypes_static;\n"
- + open(str(source[0])).read()))
+ lambda target, source, env: set_pkgname(source[0], target[0], 'alltypes_static'))
env.Command("alltypes_pointer.proto", "#alltypes/alltypes.proto",
- lambda target, source, env:
- open(str(target[0]), 'w').write("package alltypes_pointer;\n"
- + open(str(source[0])).read()))
+ lambda target, source, env: set_pkgname(source[0], target[0], 'alltypes_pointer'))
p1 = env.NanopbProto(["alltypes_pointer", "alltypes_pointer.options"])
p2 = env.NanopbProto(["alltypes_static", "alltypes_static.options"])
* otherwise. E.g. uint32 + IS_8 => uint8_t
*/
+syntax = "proto2";
+
import 'nanopb.proto';
message IntSizes {
+syntax = "proto2";
+
enum MessageStatus {
FAIL = 0;
OK = 1;
+syntax = "proto2";
+
import 'nanopb.proto';
import 'messages1.proto';
/* Test for one missing field among many */
+syntax = "proto2";
+
message AllFields
{
required int32 field1 = 1;
+syntax = "proto2";
+
message SubMessage {
optional string stringvalue = 1;
repeated int32 int32value = 2;
// Test if including generated header file for this file + implicit include of
// multifile2.pb.h still compiles. Used with test_compiles.c.
+syntax = "proto2";
+
import "multifile1.proto";
message Callback2Message {
/* Test that a file without any messages works. */
+syntax = "proto2";
+
enum Test {
First = 1;
}
+syntax = "proto2";
+
import 'nanopb.proto';
message SubMessage
* options.expected lists the patterns that are searched for in the output.
*/
+syntax = "proto2";
+
import "nanopb.proto";
// File level options
Import("env")
-# Build a modified alltypes.proto
-def modify_proto(target, source, env):
- '''Add a "package test.package;" directive to the beginning of the .proto file.'''
- data = open(str(source[0]), 'r').read()
- open(str(target[0]), 'w').write("package test.package;\n\n" + data)
- return 0
+def set_pkgname(src, dst, pkgname):
+ data = open(str(src)).read()
+ placeholder = '// package name placeholder'
+ assert placeholder in data
+ data = data.replace(placeholder, 'package %s;' % pkgname)
+ open(str(dst), 'w').write(data)
-env.Command("alltypes.proto", "#alltypes/alltypes.proto", modify_proto)
+# Build a modified alltypes.proto
+env.Command("alltypes.proto", "#alltypes/alltypes.proto",
+ lambda target, source, env: set_pkgname(source[0], target[0], 'test.package'))
env.Command("alltypes.options", "#alltypes/alltypes.options", Copy("$TARGET", "$SOURCE"))
env.NanopbProto(["alltypes", "alltypes.options"])
+syntax = "proto2";
+
import 'nanopb.proto';
enum MyEnum {
+syntax = "proto2";
+
import 'enumdef.proto';
message MyMessage {
+syntax = "proto2";
+
message Message1
{
optional uint32 fieldA = 1;
+syntax = "proto2";
+
import 'nanopb.proto';
message SubMessage
+syntax = "proto2";
+
message DummyMessage {
required string foo = 1;
required string bar = 2;
+syntax = "proto2";
+
enum SignedEnum {
SE_MIN = -1;
SE_MAX = 255;