// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

syntax = "proto2";

package int64_grid;

// A grid of variable-length rows,
// to test repeated fields.
message Grid {
  repeated Line lines = 1;
}

message Line {
  repeated int64 cells = 1;
}

// A grid where each line contains 10 fields,
// to test non-repeated fields.
message Grid10 {
  repeated Line10 lines = 1;
}

message Line10 {
  optional int64 cell1 = 1;
  optional int64 cell2 = 2;
  optional int64 cell3 = 3;
  optional int64 cell4 = 4;
  optional int64 cell5 = 5;
  optional int64 cell6 = 6;
  optional int64 cell7 = 7;
  optional int64 cell8 = 8;
  optional int64 cell9 = 9;
  optional int64 cell10 = 10;
}
