// 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;

table ImportedMessage {
  a:int (id: 0);
}

/// 2nd table doc comment with
/// many lines.
table ProtoMessage {
  c:int = 16 (id: 12);
  d:long (id: 1);
  p:uint (id: 21);
  e:ulong (id: 2);
  /// doc comment for f.
  f:int = -1 (id: 3);
  g:long (id: 4);
  h:uint (id: 5);
  q:ulong (id: 6);
  i:int (id: 7);
  j:long (id: 8);
  /// doc comment for k.
  k:bool (id: 9);
  /// doc comment for l on 2
  /// lines
  l:string (required,id: 10);
  m:[ubyte] (id: 11);
  n:proto.test.ProtoMessage_.OtherMessage (id: 22);
  o:[string] (id: 13);
  z:proto.test.ImportedMessage (id: 14);
  /// doc comment for r.
  r:proto.test.ProtoMessage_.Anonymous0 (id: 0);
  outer_enum:proto.test.ProtoEnum (id: 15);
  u:float = +inf (id: 16);
  v:float = +inf (id: 17);
  w:float = -inf (id: 18);
  grades:[proto.test.ProtoMessage_.GradesEntry] (id: 19);
  other_message_map:[proto.test.ProtoMessage_.OtherMessageMapEntry] (id: 20);
}

namespace proto.test.ProtoMessage_;

table OtherMessage {
  a:double (id: 0);
  /// doc comment for b.
  b:float = 3.14149 (id: 1);
  foo_bar_baz:proto.test.ProtoMessage_.OtherMessage_.ProtoEnum (id: 2);
}

table Anonymous0 {
  /// doc comment for s.
  s:proto.test.ImportedMessage (id: 0);
  /// doc comment for t on 2
  /// lines.
  t:proto.test.ProtoMessage_.OtherMessage (id: 1);
}

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

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

