blob: b8a80fcd4a942f795fd3475dc80c43e905f566e9 [file] [log] [blame]
// Copyright 2019 The Pigweed Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
syntax = "proto3";
// This is a test .proto file for pw_protobuf's codegen implementation.
package pw.protobuf.test;
// Top-level enum definition.
enum Bool {
TRUE = 0;
FALSE = 1;
FILE_NOT_FOUND = 2;
}
// A message!
message Pigweed {
// Nested messages and enums.
message Pigweed {
enum Binary {
ZERO = 0;
ONE = 1;
}
Bool status = 1;
}
message Protobuf {
enum Binary {
ONE = 0;
ZERO = 1;
}
// We must go deeper.
message Compiler {
enum Status {
OK = 0;
ERROR = 1;
FUBAR = 2;
}
string file_name = 1;
Status status = 2;
Binary protobuf_bin = 3;
Pigweed.Binary pigweed_bin = 4;
}
Binary binary_value = 1;
}
// Regular types.
uint32 magic_number = 1;
sint32 ziggy = 2;
fixed64 cycles = 3;
float ratio = 4;
string error_message = 5;
DeviceInfo device_info = 6;
// Nested messages and enums as fields.
Pigweed pigweed = 7;
Protobuf.Binary bin = 8;
Proto proto = 9;
repeated Proto.ID id = 10;
}
// Another message.
message Proto {
enum Binary {
OFF = 0;
ON = 1;
}
message ID {
uint32 id = 1;
}
// Circular dependency with Pigweed.
Pigweed pigweed = 1;
// Same name, different namespace.
Binary bin = 2;
Pigweed.Pigweed.Binary pigweed_pigweed_bin = 3;
Pigweed.Protobuf.Binary pigweed_protobuf_bin = 4;
Pigweed.Protobuf.Compiler meta = 5;
}
// Yet another message.
message DeviceInfo {
enum DeviceStatus {
OK = 0;
ASSERT = 1;
FAULT = 2;
PANIC = 3;
}
string device_name = 1;
fixed32 device_id = 2;
DeviceStatus status = 3;
repeated KeyValuePair attributes = 4;
}
// Ensure recursive submessages work.
message Crate {
string name = 1;
repeated Crate smaller_crates = 2;
}
// This might be useful.
message KeyValuePair {
string key = 1;
string value = 2;
}