1// Protocol Buffers - Google's data interchange format 2// Copyright 2008 Google Inc. All rights reserved. 3// 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file or at 6// https://developers.google.com/open-source/licenses/bsd 7 8syntax = "proto2"; 9 10import "google/protobuf/unittest_import.proto"; 11 12option cc_enable_arenas = true; 13 14// We don't put this in a package within proto2 because we need to make sure 15// that the generated code doesn't depend on being in the proto2 namespace. 16// In map_test_util.h we do "using namespace unittest = protobuf_unittest". 17package protobuf_unittest; 18 19enum Proto2MapEnum { 20 PROTO2_MAP_ENUM_FOO = 0; 21 PROTO2_MAP_ENUM_BAR = 1; 22 PROTO2_MAP_ENUM_BAZ = 2; 23} 24 25enum Proto2MapEnumPlusExtra { 26 E_PROTO2_MAP_ENUM_FOO = 0; 27 E_PROTO2_MAP_ENUM_BAR = 1; 28 E_PROTO2_MAP_ENUM_BAZ = 2; 29 E_PROTO2_MAP_ENUM_EXTRA = 3; 30} 31 32message TestEnumMap { 33 map<int32, Proto2MapEnum> known_map_field = 101; 34 map<int32, Proto2MapEnum> unknown_map_field = 102; 35 36 // Other maps with all key types to test the unknown entry serialization 37 map<int64, Proto2MapEnum> unknown_map_field_int64 = 200; 38 map<uint64, Proto2MapEnum> unknown_map_field_uint64 = 201; 39 map<int32, Proto2MapEnum> unknown_map_field_int32 = 202; 40 map<uint32, Proto2MapEnum> unknown_map_field_uint32 = 203; 41 map<fixed32, Proto2MapEnum> unknown_map_field_fixed32 = 204; 42 map<fixed64, Proto2MapEnum> unknown_map_field_fixed64 = 205; 43 map<bool, Proto2MapEnum> unknown_map_field_bool = 206; 44 map<string, Proto2MapEnum> unknown_map_field_string = 207; 45 map<sint32, Proto2MapEnum> unknown_map_field_sint32 = 208; 46 map<sint64, Proto2MapEnum> unknown_map_field_sint64 = 209; 47 map<sfixed32, Proto2MapEnum> unknown_map_field_sfixed32 = 210; 48 map<sfixed64, Proto2MapEnum> unknown_map_field_sfixed64 = 211; 49} 50 51message TestEnumMapPlusExtra { 52 map<int32, Proto2MapEnumPlusExtra> known_map_field = 101; 53 map<int32, Proto2MapEnumPlusExtra> unknown_map_field = 102; 54 55 // Other maps with all key types to test the unknown entry serialization 56 map<int64, Proto2MapEnumPlusExtra> unknown_map_field_int64 = 200; 57 map<uint64, Proto2MapEnumPlusExtra> unknown_map_field_uint64 = 201; 58 map<int32, Proto2MapEnumPlusExtra> unknown_map_field_int32 = 202; 59 map<uint32, Proto2MapEnumPlusExtra> unknown_map_field_uint32 = 203; 60 map<fixed32, Proto2MapEnumPlusExtra> unknown_map_field_fixed32 = 204; 61 map<fixed64, Proto2MapEnumPlusExtra> unknown_map_field_fixed64 = 205; 62 map<bool, Proto2MapEnumPlusExtra> unknown_map_field_bool = 206; 63 map<string, Proto2MapEnumPlusExtra> unknown_map_field_string = 207; 64 map<sint32, Proto2MapEnumPlusExtra> unknown_map_field_sint32 = 208; 65 map<sint64, Proto2MapEnumPlusExtra> unknown_map_field_sint64 = 209; 66 map<sfixed32, Proto2MapEnumPlusExtra> unknown_map_field_sfixed32 = 210; 67 map<sfixed64, Proto2MapEnumPlusExtra> unknown_map_field_sfixed64 = 211; 68} 69 70message TestImportEnumMap { 71 map<int32, protobuf_unittest_import.ImportEnumForMap> import_enum_amp = 1; 72} 73 74message TestIntIntMap { 75 map<int32, int32> m = 1; 76} 77 78// Test all key types: string, plus the non-floating-point scalars. 79message TestMaps { 80 map<int32, TestIntIntMap> m_int32 = 1; 81 map<int64, TestIntIntMap> m_int64 = 2; 82 map<uint32, TestIntIntMap> m_uint32 = 3; 83 map<uint64, TestIntIntMap> m_uint64 = 4; 84 map<sint32, TestIntIntMap> m_sint32 = 5; 85 map<sint64, TestIntIntMap> m_sint64 = 6; 86 map<fixed32, TestIntIntMap> m_fixed32 = 7; 87 map<fixed64, TestIntIntMap> m_fixed64 = 8; 88 map<sfixed32, TestIntIntMap> m_sfixed32 = 9; 89 map<sfixed64, TestIntIntMap> m_sfixed64 = 10; 90 map<bool, TestIntIntMap> m_bool = 11; 91 map<string, TestIntIntMap> m_string = 12; 92} 93 94// Test maps in submessages. 95message TestSubmessageMaps { 96 optional TestMaps m = 1; 97} 98 99message TestProto2BytesMap { 100 map<int32, bytes> map_bytes = 1; 101 map<int32, string> map_string = 2; 102} 103