/*
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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
  
      http://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 = "proto2";
package org.apache.servicecomb.foundation.protobuf.internal.model;

message Root {
  optional int32 int32 = 1;
  optional int64 int64 = 2;
  optional uint32 uint32 = 3;
  optional uint64 uint64 = 4;
  optional sint32 sint32 = 5;
  optional sint64 sint64 = 6;
  optional fixed32 fixed32 = 7;
  optional fixed64 fixed64 = 8;
  optional sfixed32 sfixed32 = 9;
  optional sfixed64 sfixed64 = 10;
  optional float floatValue = 11;
  optional double doubleValue = 12;
  optional bool bool = 13;

  optional int32 objInt32 = 20;
  optional int64 objInt64 = 21;
  optional uint32 objUint32 = 22;
  optional uint64 objUint64 = 23;
  optional sint32 objSint32 = 24;
  optional sint64 objSint64 = 25;
  optional fixed32 objFixed32 = 26;
  optional fixed64 objFixed64 = 27;
  optional sfixed32 objSfixed32 = 28;
  optional sfixed64 objSfixed64 = 29;
  optional float objFloatValue = 30;
  optional double objDoubleValue = 31;
  optional bool objBool = 32;

  optional string string = 40;
  optional bytes bytes = 41;
  optional Color color = 42;
  optional User user = 43;

  repeated int32 int32sPacked = 70;
  repeated int64 int64sPacked = 71;
  repeated uint32 uint32sPacked = 72;
  repeated uint64 uint64sPacked = 73;
  repeated sint32 sint32sPacked = 74;
  repeated sint64 sint64sPacked = 75;
  repeated fixed32 fixed32sPacked = 76;
  repeated fixed64 fixed64sPacked = 77;
  repeated sfixed32 sfixed32sPacked = 78;
  repeated sfixed64 sfixed64sPacked = 79;
  repeated float floatsPacked = 80;
  repeated double doublesPacked = 81;
  repeated bool boolsPacked = 82;
  repeated Color colorsPacked = 83;

  repeated int32 int32sNotPacked = 90 [packed = false];
  repeated int64 int64sNotPacked = 91 [packed = false];
  repeated uint32 uint32sNotPacked = 92 [packed = false];
  repeated uint64 uint64sNotPacked = 93 [packed = false];
  repeated sint32 sint32sNotPacked = 94 [packed = false];
  repeated sint64 sint64sNotPacked = 95 [packed = false];
  repeated fixed32 fixed32sNotPacked = 96 [packed = false];
  repeated fixed64 fixed64sNotPacked = 97 [packed = false];
  repeated sfixed32 sfixed32sNotPacked = 98 [packed = false];
  repeated sfixed64 sfixed64sNotPacked = 99 [packed = false];
  repeated float floatsNotPacked = 100 [packed = false];
  repeated double doublesNotPacked = 101 [packed = false];
  repeated bool boolsNotPacked = 102 [packed = false];
  repeated Color colorsNotPacked = 103 [packed = false];

  repeated string strings = 110;
  repeated bytes bytess = 111;
  repeated User users = 112;
}

enum Color {
  RED = 0;
  YELLOW = 1;
  BLUE = 2;
}

message User {
  optional string name = 1;
}