// 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; } // This might be useful. message KeyValuePair { string key = 1; string value = 2; }