// Generated from test.proto

namespace proto.test;

/// Enum doc comment.
enum ProtoEnum : int {
  NUL = 0,
  FOO = 1,
  /// Enum 2nd value doc comment misaligned.
  BAR = 5,
}

namespace proto.test.ProtoMessage_.OtherMessage_;

enum ProtoEnum : int {
  NUL = 0,
  FOO = 1,
  BAR = 2,
  BAZ = 3,
}

namespace proto.test.ProtoMessage_;

union RUnion {
  /// doc comment for s.
  proto.test.ImportedMessage,
  /// doc comment for t on 2
  /// lines.
  proto.test.ProtoMessage_.OtherMessage,
}

namespace proto.test;

table ImportedMessage {
  a:int;
}

/// 2nd table doc comment with
/// many lines.
table ProtoMessage {
  c:int = 16;
  d:long;
  p:uint;
  e:ulong;
  /// doc comment for f.
  f:int = -1;
  g:long;
  h:uint;
  q:ulong;
  i:int;
  j:long;
  /// doc comment for k.
  k:bool;
  /// doc comment for l on 2
  /// lines
  l:string (required);
  m:[ubyte];
  n:proto.test.ProtoMessage_.OtherMessage;
  o:[string];
  z:proto.test.ImportedMessage;
  /// doc comment for r.
  r:proto.test.ProtoMessage_.RUnion;
  outer_enum:proto.test.ProtoEnum;
  u:float = +inf;
  v:float = +inf;
  w:float = -inf;
  grades:[proto.test.ProtoMessage_.GradesEntry];
  other_message_map:[proto.test.ProtoMessage_.OtherMessageMapEntry];
}

namespace proto.test.ProtoMessage_;

table OtherMessage {
  a:double;
  /// doc comment for b.
  b:float = 3.14149;
  foo_bar_baz:proto.test.ProtoMessage_.OtherMessage_.ProtoEnum;
}

table GradesEntry {
  key:string (key);
  value:float;
}

table OtherMessageMapEntry {
  key:string (key);
  value:proto.test.ProtoMessage_.OtherMessage;
}

