| OLD | NEW |
| 1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
| 2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 Google Inc. All rights reserved. |
| 3 // https://developers.google.com/protocol-buffers/ | 3 // https://developers.google.com/protocol-buffers/ |
| 4 // | 4 // |
| 5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
| 6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
| 7 // met: | 7 // met: |
| 8 // | 8 // |
| 9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
| 10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 #define USAGE_CHECK_ALL(METHOD, LABEL, CPPTYPE) \ | 166 #define USAGE_CHECK_ALL(METHOD, LABEL, CPPTYPE) \ |
| 167 USAGE_CHECK_MESSAGE_TYPE(METHOD); \ | 167 USAGE_CHECK_MESSAGE_TYPE(METHOD); \ |
| 168 USAGE_CHECK_##LABEL(METHOD); \ | 168 USAGE_CHECK_##LABEL(METHOD); \ |
| 169 USAGE_CHECK_TYPE(METHOD, CPPTYPE) | 169 USAGE_CHECK_TYPE(METHOD, CPPTYPE) |
| 170 | 170 |
| 171 } // namespace | 171 } // namespace |
| 172 | 172 |
| 173 // =================================================================== | 173 // =================================================================== |
| 174 | 174 |
| 175 GeneratedMessageReflection::GeneratedMessageReflection( | 175 GeneratedMessageReflection::GeneratedMessageReflection( |
| 176 const Descriptor* descriptor, | 176 const Descriptor* descriptor, const Message* default_instance, |
| 177 const Message* default_instance, | 177 const int offsets[], int has_bits_offset, int unknown_fields_offset, |
| 178 const int offsets[], | 178 int extensions_offset, const DescriptorPool* descriptor_pool, |
| 179 int has_bits_offset, | 179 MessageFactory* factory, int object_size, int arena_offset) |
| 180 int unknown_fields_offset, | 180 : descriptor_(descriptor), |
| 181 int extensions_offset, | 181 default_instance_(default_instance), |
| 182 const DescriptorPool* descriptor_pool, | 182 offsets_(offsets), |
| 183 MessageFactory* factory, | 183 has_bits_offset_(has_bits_offset), |
| 184 int object_size, | 184 unknown_fields_offset_(unknown_fields_offset), |
| 185 int arena_offset, | 185 extensions_offset_(extensions_offset), |
| 186 int is_default_instance_offset) | 186 arena_offset_(arena_offset), |
| 187 : descriptor_ (descriptor), | 187 object_size_(object_size), |
| 188 default_instance_ (default_instance), | 188 descriptor_pool_((descriptor_pool == NULL) |
| 189 offsets_ (offsets), | 189 ? DescriptorPool::generated_pool() |
| 190 has_bits_offset_ (has_bits_offset), | 190 : descriptor_pool), |
| 191 unknown_fields_offset_(unknown_fields_offset), | 191 message_factory_(factory) {} |
| 192 extensions_offset_(extensions_offset), | |
| 193 arena_offset_ (arena_offset), | |
| 194 is_default_instance_offset_(is_default_instance_offset), | |
| 195 object_size_ (object_size), | |
| 196 descriptor_pool_ ((descriptor_pool == NULL) ? | |
| 197 DescriptorPool::generated_pool() : | |
| 198 descriptor_pool), | |
| 199 message_factory_ (factory) { | |
| 200 } | |
| 201 | 192 |
| 202 GeneratedMessageReflection::GeneratedMessageReflection( | 193 GeneratedMessageReflection::GeneratedMessageReflection( |
| 203 const Descriptor* descriptor, | 194 const Descriptor* descriptor, const Message* default_instance, |
| 204 const Message* default_instance, | 195 const int offsets[], int has_bits_offset, int unknown_fields_offset, |
| 205 const int offsets[], | 196 int extensions_offset, const void* default_oneof_instance, |
| 206 int has_bits_offset, | 197 int oneof_case_offset, const DescriptorPool* descriptor_pool, |
| 207 int unknown_fields_offset, | 198 MessageFactory* factory, int object_size, int arena_offset) |
| 208 int extensions_offset, | 199 : descriptor_(descriptor), |
| 209 const void* default_oneof_instance, | 200 default_instance_(default_instance), |
| 210 int oneof_case_offset, | 201 default_oneof_instance_(default_oneof_instance), |
| 211 const DescriptorPool* descriptor_pool, | 202 offsets_(offsets), |
| 212 MessageFactory* factory, | 203 has_bits_offset_(has_bits_offset), |
| 213 int object_size, | 204 oneof_case_offset_(oneof_case_offset), |
| 214 int arena_offset, | 205 unknown_fields_offset_(unknown_fields_offset), |
| 215 int is_default_instance_offset) | 206 extensions_offset_(extensions_offset), |
| 216 : descriptor_ (descriptor), | 207 arena_offset_(arena_offset), |
| 217 default_instance_ (default_instance), | 208 object_size_(object_size), |
| 218 default_oneof_instance_ (default_oneof_instance), | 209 descriptor_pool_((descriptor_pool == NULL) |
| 219 offsets_ (offsets), | 210 ? DescriptorPool::generated_pool() |
| 220 has_bits_offset_ (has_bits_offset), | 211 : descriptor_pool), |
| 221 oneof_case_offset_(oneof_case_offset), | 212 message_factory_(factory) {} |
| 222 unknown_fields_offset_(unknown_fields_offset), | |
| 223 extensions_offset_(extensions_offset), | |
| 224 arena_offset_ (arena_offset), | |
| 225 is_default_instance_offset_(is_default_instance_offset), | |
| 226 object_size_ (object_size), | |
| 227 descriptor_pool_ ((descriptor_pool == NULL) ? | |
| 228 DescriptorPool::generated_pool() : | |
| 229 descriptor_pool), | |
| 230 message_factory_ (factory) { | |
| 231 } | |
| 232 | 213 |
| 233 GeneratedMessageReflection::~GeneratedMessageReflection() {} | 214 GeneratedMessageReflection::~GeneratedMessageReflection() {} |
| 234 | 215 |
| 235 namespace { | 216 namespace { |
| 236 UnknownFieldSet* empty_unknown_field_set_ = NULL; | 217 UnknownFieldSet* empty_unknown_field_set_ = NULL; |
| 237 GOOGLE_PROTOBUF_DECLARE_ONCE(empty_unknown_field_set_once_); | 218 GOOGLE_PROTOBUF_DECLARE_ONCE(empty_unknown_field_set_once_); |
| 238 | 219 |
| 239 void DeleteEmptyUnknownFieldSet() { | 220 void DeleteEmptyUnknownFieldSet() { |
| 240 delete empty_unknown_field_set_; | 221 delete empty_unknown_field_set_; |
| 241 empty_unknown_field_set_ = NULL; | 222 empty_unknown_field_set_ = NULL; |
| (...skipping 777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1019 } | 1000 } |
| 1020 | 1001 |
| 1021 namespace { | 1002 namespace { |
| 1022 // Comparison functor for sorting FieldDescriptors by field number. | 1003 // Comparison functor for sorting FieldDescriptors by field number. |
| 1023 struct FieldNumberSorter { | 1004 struct FieldNumberSorter { |
| 1024 bool operator()(const FieldDescriptor* left, | 1005 bool operator()(const FieldDescriptor* left, |
| 1025 const FieldDescriptor* right) const { | 1006 const FieldDescriptor* right) const { |
| 1026 return left->number() < right->number(); | 1007 return left->number() < right->number(); |
| 1027 } | 1008 } |
| 1028 }; | 1009 }; |
| 1010 |
| 1011 inline bool IsIndexInHasBitSet(const uint32* has_bit_set, uint32 index) { |
| 1012 return ((has_bit_set[index / 32] >> (index % 32)) & static_cast<uint32>(1)) |
| 1013 != 0; |
| 1014 } |
| 1029 } // namespace | 1015 } // namespace |
| 1030 | 1016 |
| 1031 void GeneratedMessageReflection::ListFields( | 1017 void GeneratedMessageReflection::ListFields( |
| 1032 const Message& message, | 1018 const Message& message, |
| 1033 vector<const FieldDescriptor*>* output) const { | 1019 vector<const FieldDescriptor*>* output) const { |
| 1034 output->clear(); | 1020 output->clear(); |
| 1035 | 1021 |
| 1036 // Optimization: The default instance never has any fields set. | 1022 // Optimization: The default instance never has any fields set. |
| 1037 if (&message == default_instance_) return; | 1023 if (&message == default_instance_) return; |
| 1038 | 1024 |
| 1025 // Optimization: Avoid calling GetHasBits() and HasOneofField() many times |
| 1026 // within the field loop. |
| 1027 const uint32* const has_bits = GetHasBits(message); |
| 1028 const uint32* const oneof_case_array = reinterpret_cast<const uint32*>( |
| 1029 reinterpret_cast<const uint8*>(&message) + oneof_case_offset_); |
| 1030 |
| 1039 output->reserve(descriptor_->field_count()); | 1031 output->reserve(descriptor_->field_count()); |
| 1040 for (int i = 0; i < descriptor_->field_count(); i++) { | 1032 for (int i = 0; i < descriptor_->field_count(); i++) { |
| 1041 const FieldDescriptor* field = descriptor_->field(i); | 1033 const FieldDescriptor* field = descriptor_->field(i); |
| 1042 if (field->is_repeated()) { | 1034 if (field->is_repeated()) { |
| 1043 if (FieldSize(message, field) > 0) { | 1035 if (FieldSize(message, field) > 0) { |
| 1044 output->push_back(field); | 1036 output->push_back(field); |
| 1045 } | 1037 } |
| 1046 } else { | 1038 } else { |
| 1047 if (field->containing_oneof()) { | 1039 const OneofDescriptor* containing_oneof = field->containing_oneof(); |
| 1048 if (HasOneofField(message, field)) { | 1040 if (containing_oneof) { |
| 1041 // Equivalent to: HasOneofField(message, field) |
| 1042 if (oneof_case_array[containing_oneof->index()] == field->number()) { |
| 1049 output->push_back(field); | 1043 output->push_back(field); |
| 1050 } | 1044 } |
| 1051 } else if (HasBit(message, field)) { | 1045 } else if (has_bits) { |
| 1046 // Equivalent to: HasBit(message, field) |
| 1047 if (IsIndexInHasBitSet(has_bits, i)) { |
| 1048 output->push_back(field); |
| 1049 } |
| 1050 } else if (HasBit(message, field)) { // Fall back on proto3-style HasBit. |
| 1052 output->push_back(field); | 1051 output->push_back(field); |
| 1053 } | 1052 } |
| 1054 } | 1053 } |
| 1055 } | 1054 } |
| 1056 | 1055 |
| 1057 if (extensions_offset_ != -1) { | 1056 if (extensions_offset_ != -1) { |
| 1058 GetExtensionSet(message).AppendToList(descriptor_, descriptor_pool_, | 1057 GetExtensionSet(message).AppendToList(descriptor_, descriptor_pool_, |
| 1059 output); | 1058 output); |
| 1060 } | 1059 } |
| 1061 | 1060 |
| (...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1572 Message* GeneratedMessageReflection::UnsafeArenaReleaseMessage( | 1571 Message* GeneratedMessageReflection::UnsafeArenaReleaseMessage( |
| 1573 Message* message, | 1572 Message* message, |
| 1574 const FieldDescriptor* field, | 1573 const FieldDescriptor* field, |
| 1575 MessageFactory* factory) const { | 1574 MessageFactory* factory) const { |
| 1576 USAGE_CHECK_ALL(ReleaseMessage, SINGULAR, MESSAGE); | 1575 USAGE_CHECK_ALL(ReleaseMessage, SINGULAR, MESSAGE); |
| 1577 | 1576 |
| 1578 if (factory == NULL) factory = message_factory_; | 1577 if (factory == NULL) factory = message_factory_; |
| 1579 | 1578 |
| 1580 if (field->is_extension()) { | 1579 if (field->is_extension()) { |
| 1581 return static_cast<Message*>( | 1580 return static_cast<Message*>( |
| 1582 MutableExtensionSet(message)->ReleaseMessage(field, factory)); | 1581 MutableExtensionSet(message)->UnsafeArenaReleaseMessage(field, |
| 1582 factory)); |
| 1583 } else { | 1583 } else { |
| 1584 ClearBit(message, field); | 1584 ClearBit(message, field); |
| 1585 if (field->containing_oneof()) { | 1585 if (field->containing_oneof()) { |
| 1586 if (HasOneofField(*message, field)) { | 1586 if (HasOneofField(*message, field)) { |
| 1587 *MutableOneofCase(message, field->containing_oneof()) = 0; | 1587 *MutableOneofCase(message, field->containing_oneof()) = 0; |
| 1588 } else { | 1588 } else { |
| 1589 return NULL; | 1589 return NULL; |
| 1590 } | 1590 } |
| 1591 } | 1591 } |
| 1592 Message** result = MutableRaw<Message*>(message, field); | 1592 Message** result = MutableRaw<Message*>(message, field); |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1993 inline InternalMetadataWithArena* | 1993 inline InternalMetadataWithArena* |
| 1994 GeneratedMessageReflection::MutableInternalMetadataWithArena( | 1994 GeneratedMessageReflection::MutableInternalMetadataWithArena( |
| 1995 Message* message) const { | 1995 Message* message) const { |
| 1996 void* ptr = reinterpret_cast<uint8*>(message) + arena_offset_; | 1996 void* ptr = reinterpret_cast<uint8*>(message) + arena_offset_; |
| 1997 return reinterpret_cast<InternalMetadataWithArena*>(ptr); | 1997 return reinterpret_cast<InternalMetadataWithArena*>(ptr); |
| 1998 } | 1998 } |
| 1999 | 1999 |
| 2000 inline bool | 2000 inline bool |
| 2001 GeneratedMessageReflection::GetIsDefaultInstance( | 2001 GeneratedMessageReflection::GetIsDefaultInstance( |
| 2002 const Message& message) const { | 2002 const Message& message) const { |
| 2003 if (is_default_instance_offset_ == kHasNoDefaultInstanceField) { | 2003 return &message == default_instance_; |
| 2004 return false; | |
| 2005 } | |
| 2006 const void* ptr = reinterpret_cast<const uint8*>(&message) + | |
| 2007 is_default_instance_offset_; | |
| 2008 return *reinterpret_cast<const bool*>(ptr); | |
| 2009 } | 2004 } |
| 2010 | 2005 |
| 2011 // Simple accessors for manipulating has_bits_. | 2006 // Simple accessors for manipulating has_bits_. |
| 2012 inline bool GeneratedMessageReflection::HasBit( | 2007 inline bool GeneratedMessageReflection::HasBit( |
| 2013 const Message& message, const FieldDescriptor* field) const { | 2008 const Message& message, const FieldDescriptor* field) const { |
| 2014 if (has_bits_offset_ == -1) { | 2009 if (has_bits_offset_ == -1) { |
| 2015 // proto3: no has-bits. All fields present except messages, which are | 2010 // proto3: no has-bits. All fields present except messages, which are |
| 2016 // present only if their message-field pointer is non-NULL. | 2011 // present only if their message-field pointer is non-NULL. |
| 2017 if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { | 2012 if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { |
| 2018 return !GetIsDefaultInstance(message) && | 2013 return !GetIsDefaultInstance(message) && |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2055 return GetRaw<double>(message, field) != 0.0; | 2050 return GetRaw<double>(message, field) != 0.0; |
| 2056 case FieldDescriptor::CPPTYPE_ENUM: | 2051 case FieldDescriptor::CPPTYPE_ENUM: |
| 2057 return GetRaw<int>(message, field) != 0; | 2052 return GetRaw<int>(message, field) != 0; |
| 2058 case FieldDescriptor::CPPTYPE_MESSAGE: | 2053 case FieldDescriptor::CPPTYPE_MESSAGE: |
| 2059 // handled above; avoid warning | 2054 // handled above; avoid warning |
| 2060 GOOGLE_LOG(FATAL) << "Reached impossible case in HasBit()."; | 2055 GOOGLE_LOG(FATAL) << "Reached impossible case in HasBit()."; |
| 2061 break; | 2056 break; |
| 2062 } | 2057 } |
| 2063 } | 2058 } |
| 2064 } | 2059 } |
| 2065 return GetHasBits(message)[field->index() / 32] & | 2060 return IsIndexInHasBitSet(GetHasBits(message), field->index()); |
| 2066 (1 << (field->index() % 32)); | |
| 2067 } | 2061 } |
| 2068 | 2062 |
| 2069 inline void GeneratedMessageReflection::SetBit( | 2063 inline void GeneratedMessageReflection::SetBit( |
| 2070 Message* message, const FieldDescriptor* field) const { | 2064 Message* message, const FieldDescriptor* field) const { |
| 2071 if (has_bits_offset_ == -1) { | 2065 if (has_bits_offset_ == -1) { |
| 2072 return; | 2066 return; |
| 2073 } | 2067 } |
| 2074 MutableHasBits(message)[field->index() / 32] |= (1 << (field->index() % 32)); | 2068 const uint32 index = static_cast<uint32>(field->index()); |
| 2069 MutableHasBits(message)[index / 32] |= |
| 2070 (static_cast<uint32>(1) << (index % 32)); |
| 2075 } | 2071 } |
| 2076 | 2072 |
| 2077 inline void GeneratedMessageReflection::ClearBit( | 2073 inline void GeneratedMessageReflection::ClearBit( |
| 2078 Message* message, const FieldDescriptor* field) const { | 2074 Message* message, const FieldDescriptor* field) const { |
| 2079 if (has_bits_offset_ == -1) { | 2075 if (has_bits_offset_ == -1) { |
| 2080 return; | 2076 return; |
| 2081 } | 2077 } |
| 2082 MutableHasBits(message)[field->index() / 32] &= ~(1 << (field->index() % 32)); | 2078 const uint32 index = static_cast<uint32>(field->index()); |
| 2079 MutableHasBits(message)[index / 32] &= |
| 2080 ~(static_cast<uint32>(1) << (index % 32)); |
| 2083 } | 2081 } |
| 2084 | 2082 |
| 2085 inline void GeneratedMessageReflection::SwapBit( | 2083 inline void GeneratedMessageReflection::SwapBit( |
| 2086 Message* message1, Message* message2, const FieldDescriptor* field) const { | 2084 Message* message1, Message* message2, const FieldDescriptor* field) const { |
| 2087 if (has_bits_offset_ == -1) { | 2085 if (has_bits_offset_ == -1) { |
| 2088 return; | 2086 return; |
| 2089 } | 2087 } |
| 2090 bool temp_has_bit = HasBit(*message1, field); | 2088 bool temp_has_bit = HasBit(*message1, field); |
| 2091 if (HasBit(*message2, field)) { | 2089 if (HasBit(*message2, field)) { |
| 2092 SetBit(message1, field); | 2090 SetBit(message1, field); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2118 inline void GeneratedMessageReflection::ClearOneofField( | 2116 inline void GeneratedMessageReflection::ClearOneofField( |
| 2119 Message* message, const FieldDescriptor* field) const { | 2117 Message* message, const FieldDescriptor* field) const { |
| 2120 if (HasOneofField(*message, field)) { | 2118 if (HasOneofField(*message, field)) { |
| 2121 ClearOneof(message, field->containing_oneof()); | 2119 ClearOneof(message, field->containing_oneof()); |
| 2122 } | 2120 } |
| 2123 } | 2121 } |
| 2124 | 2122 |
| 2125 inline void GeneratedMessageReflection::ClearOneof( | 2123 inline void GeneratedMessageReflection::ClearOneof( |
| 2126 Message* message, const OneofDescriptor* oneof_descriptor) const { | 2124 Message* message, const OneofDescriptor* oneof_descriptor) const { |
| 2127 // TODO(jieluo): Consider to cache the unused object instead of deleting | 2125 // TODO(jieluo): Consider to cache the unused object instead of deleting |
| 2128 // it. It will be much faster if an aplication switches a lot from | 2126 // it. It will be much faster if an application switches a lot from |
| 2129 // a few oneof fields. Time/space tradeoff | 2127 // a few oneof fields. Time/space tradeoff |
| 2130 uint32 oneof_case = GetOneofCase(*message, oneof_descriptor); | 2128 uint32 oneof_case = GetOneofCase(*message, oneof_descriptor); |
| 2131 if (oneof_case > 0) { | 2129 if (oneof_case > 0) { |
| 2132 const FieldDescriptor* field = descriptor_->FindFieldByNumber(oneof_case); | 2130 const FieldDescriptor* field = descriptor_->FindFieldByNumber(oneof_case); |
| 2133 if (GetArena(message) == NULL) { | 2131 if (GetArena(message) == NULL) { |
| 2134 switch (field->cpp_type()) { | 2132 switch (field->cpp_type()) { |
| 2135 case FieldDescriptor::CPPTYPE_STRING: { | 2133 case FieldDescriptor::CPPTYPE_STRING: { |
| 2136 switch (field->options().ctype()) { | 2134 switch (field->options().ctype()) { |
| 2137 default: // TODO(kenton): Support other string reps. | 2135 default: // TODO(kenton): Support other string reps. |
| 2138 case FieldOptions::STRING: { | 2136 case FieldOptions::STRING: { |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2267 const Message* default_instance, | 2265 const Message* default_instance, |
| 2268 const int offsets[], | 2266 const int offsets[], |
| 2269 int has_bits_offset, | 2267 int has_bits_offset, |
| 2270 int unknown_fields_offset, | 2268 int unknown_fields_offset, |
| 2271 int extensions_offset, | 2269 int extensions_offset, |
| 2272 const void* default_oneof_instance, | 2270 const void* default_oneof_instance, |
| 2273 int oneof_case_offset, | 2271 int oneof_case_offset, |
| 2274 int object_size, | 2272 int object_size, |
| 2275 int arena_offset, | 2273 int arena_offset, |
| 2276 int is_default_instance_offset) { | 2274 int is_default_instance_offset) { |
| 2277 return new GeneratedMessageReflection(descriptor, | 2275 return new GeneratedMessageReflection( |
| 2278 default_instance, | 2276 descriptor, default_instance, offsets, has_bits_offset, |
| 2279 offsets, | 2277 unknown_fields_offset, extensions_offset, default_oneof_instance, |
| 2280 has_bits_offset, | 2278 oneof_case_offset, DescriptorPool::generated_pool(), |
| 2281 unknown_fields_offset, | 2279 MessageFactory::generated_factory(), object_size, arena_offset); |
| 2282 extensions_offset, | |
| 2283 default_oneof_instance, | |
| 2284 oneof_case_offset, | |
| 2285 DescriptorPool::generated_pool(), | |
| 2286 MessageFactory::generated_factory(), | |
| 2287 object_size, | |
| 2288 arena_offset, | |
| 2289 is_default_instance_offset); | |
| 2290 } | 2280 } |
| 2291 | 2281 |
| 2292 GeneratedMessageReflection* | 2282 GeneratedMessageReflection* |
| 2293 GeneratedMessageReflection::NewGeneratedMessageReflection( | 2283 GeneratedMessageReflection::NewGeneratedMessageReflection( |
| 2294 const Descriptor* descriptor, | 2284 const Descriptor* descriptor, |
| 2295 const Message* default_instance, | 2285 const Message* default_instance, |
| 2296 const int offsets[], | 2286 const int offsets[], |
| 2297 int has_bits_offset, | 2287 int has_bits_offset, |
| 2298 int unknown_fields_offset, | 2288 int unknown_fields_offset, |
| 2299 int extensions_offset, | 2289 int extensions_offset, |
| 2300 int object_size, | 2290 int object_size, |
| 2301 int arena_offset, | 2291 int arena_offset, |
| 2302 int is_default_instance_offset) { | 2292 int is_default_instance_offset) { |
| 2303 return new GeneratedMessageReflection(descriptor, | 2293 return new GeneratedMessageReflection( |
| 2304 default_instance, | 2294 descriptor, default_instance, offsets, has_bits_offset, |
| 2305 offsets, | 2295 unknown_fields_offset, extensions_offset, |
| 2306 has_bits_offset, | 2296 DescriptorPool::generated_pool(), MessageFactory::generated_factory(), |
| 2307 unknown_fields_offset, | 2297 object_size, arena_offset); |
| 2308 extensions_offset, | |
| 2309 DescriptorPool::generated_pool(), | |
| 2310 MessageFactory::generated_factory(), | |
| 2311 object_size, | |
| 2312 arena_offset, | |
| 2313 is_default_instance_offset); | |
| 2314 } | 2298 } |
| 2315 | 2299 |
| 2316 } // namespace internal | 2300 } // namespace internal |
| 2317 } // namespace protobuf | 2301 } // namespace protobuf |
| 2318 } // namespace google | 2302 } // namespace google |
| OLD | NEW |