// Use protoc v3.0.0 to compile this file into map-test.bin:
//   protoc --descriptor_set_out=map-test.bin map-test.proto 

syntax = "proto2";

package foo;

enum Frobnitz {
  FROB = 1;
  NITZ = 2;
}

message Baz {
  message LooksLikeMapEntry {
    option map_entry = true;
    optional string key = 1;
    optional string value = 2;
  }
  repeated LooksLikeMapEntry looks_like_map = 1;

  message DoesNotLookLikeMapEntry {
    optional string key = 1;
    optional string value = 2;
  }
  repeated DoesNotLookLikeMapEntry does_not_look_like_map = 2;
}

message Bar {
  map<sint32, Baz> sint32_to_baz = 1;
  map<sint64, Baz> sint64_to_baz = 2;
  map<int32, Baz> int32_to_baz = 3;
  map<int64, Baz> int64_to_baz = 4;
  map<uint32, Baz> uint32_to_baz = 5;
  map<uint64, Baz> uint64_to_baz = 6;
  map<string, Baz> string_to_baz = 7;

  map<sint32, Frobnitz> sint32_to_frobnitz = 8;
  map<sint64, Frobnitz> sint64_to_frobnitz = 9;
  map<int32, Frobnitz> int32_to_frobnitz = 10;
  map<int64, Frobnitz> int64_to_frobnitz = 11;
  map<uint32, Frobnitz> uint32_to_frobnitz = 12;
  map<uint64, Frobnitz> uint64_to_frobnitz = 13;
  map<string, Frobnitz> string_to_frobnitz = 14;

  map<sint32, string> sint32_to_string = 15;
  map<sint64, string> sint64_to_string = 16;
  map<int32, string> int32_to_string = 17;
  map<int64, string> int64_to_string = 18;
  map<uint32, string> uint32_to_string = 19;
  map<uint64, string> uint64_to_string = 20;
  map<string, string> string_to_string = 21;

  map<sint32, float> sint32_to_float = 22;
  map<sint64, float> sint64_to_float = 23;
  map<int32, float> int32_to_float = 24;
  map<int64, float> int64_to_float = 25;
  map<uint32, float> uint32_to_float = 26;
  map<uint64, float> uint64_to_float = 27;
  map<string, float> string_to_float = 28;

  map<sint32, double> sint32_to_double = 29;
  map<sint64, double> sint64_to_double = 30;
  map<int32, double> int32_to_double = 31;
  map<int64, double> int64_to_double = 32;
  map<uint32, double> uint32_to_double = 33;
  map<uint64, double> uint64_to_double = 34;
  map<string, double> string_to_double = 35;
}
