31 #ifndef GOOGLE_PROTOBUF_MAP_FIELD_H__ 32 #define GOOGLE_PROTOBUF_MAP_FIELD_H__ 53 class ContendedMapCleanTest;
54 class GeneratedMessageReflection;
55 class MapFieldAccessor;
64 repeated_field_(
NULL),
65 entry_descriptor_(
NULL),
66 assign_descriptor_callback_(
NULL),
67 state_(STATE_MODIFIED_MAP) {}
70 repeated_field_(
NULL),
71 entry_descriptor_(
NULL),
72 assign_descriptor_callback_(
NULL),
73 state_(STATE_MODIFIED_MAP) {
89 virtual bool ContainsMapKey(
const MapKey& map_key)
const = 0;
90 virtual bool InsertOrLookupMapValue(
92 virtual bool DeleteMapValue(
const MapKey& map_key) = 0;
95 virtual void MapBegin(
MapIterator* map_iter)
const = 0;
96 virtual void MapEnd(
MapIterator* map_iter)
const = 0;
98 virtual int size()
const = 0;
102 int SpaceUsedExcludingSelf()
const;
106 virtual int SpaceUsedExcludingSelfNoLock()
const;
110 void SyncRepeatedFieldWithMap()
const;
111 virtual void SyncRepeatedFieldWithMapNoLock()
const;
115 void SyncMapWithRepeatedField()
const;
122 void SetRepeatedDirty();
125 void* MutableRepeatedPtrField()
const;
128 void InitMetadataOnce()
const;
131 STATE_MODIFIED_MAP = 0,
133 STATE_MODIFIED_REPEATED = 1,
146 void (*assign_descriptor_callback_)();
155 friend class ContendedMapCleanTest;
158 friend class ::google::protobuf::DynamicMessage;
164 friend class ::google::protobuf::MapIterator;
166 virtual void InitializeIterator(
MapIterator* map_iter)
const = 0;
170 virtual void DeleteIterator(
MapIterator* map_iter)
const = 0;
174 virtual void CopyIterator(
MapIterator* this_iterator,
179 virtual void IncreaseIterator(
MapIterator* map_iter)
const = 0;
184 template<
typename Key,
typename T>
202 void InitializeIterator(
MapIterator* map_iter)
const;
206 void IncreaseIterator(
MapIterator* map_iter)
const;
208 virtual void SetMapIteratorValue(
MapIterator* map_iter)
const = 0;
214 template <
typename Key,
typename T,
217 int default_enum_value = 0>
219 public MapFieldLite<Key, T, kKeyFieldType, kValueFieldType,
220 default_enum_value> {
230 default_enum_value> EntryLiteType;
234 default_enum_value> MapFieldLiteType;
240 static const bool kIsValueEnum = ValueTypeHandler::kIsEnum;
254 bool ContainsMapKey(
const MapKey& map_key)
const;
256 bool DeleteMapValue(
const MapKey& map_key);
265 void MergeFrom(
const MapFieldLiteType& other);
266 void Swap(MapFieldLiteType* other);
270 void SetAssignDescriptorCallback(
void (*
callback)());
273 typedef void InternalArenaConstructable_;
274 typedef void DestructorSkippable_;
277 void InitDefaultEntryOnce()
const;
280 void SetDefaultEntryOnce(
const EntryType* default_entry)
const;
287 void SyncRepeatedFieldWithMapNoLock()
const;
288 void SyncMapWithRepeatedFieldNoLock()
const;
289 int SpaceUsedExcludingSelfNoLock()
const;
291 void SetMapIteratorValue(
MapIterator* map_iter)
const;
293 mutable const EntryType* default_entry_;
295 friend class ::google::protobuf::Arena;
305 bool ContainsMapKey(
const MapKey& map_key)
const;
307 bool DeleteMapValue(
const MapKey& map_key);
319 void SyncRepeatedFieldWithMapNoLock()
const;
320 void SyncMapWithRepeatedFieldNoLock()
const;
321 int SpaceUsedExcludingSelfNoLock()
const;
322 void SetMapIteratorValue(
MapIterator* map_iter)
const;
331 map_ = reflection->MapData(message, field);
334 map_->InitializeIterator(
this);
338 map_->InitializeIterator(
this);
339 map_->CopyIterator(
this, other);
342 map_->DeleteIterator(
this);
351 map_->IncreaseIterator(
this);
358 map_->IncreaseIterator(
this);
373 template <
typename Key,
typename T>
376 template <
typename Key,
typename T,
379 int default_enum_value>
397 #endif // GOOGLE_PROTOBUF_MAP_FIELD_H__ Mutex mutex_
Definition: map_field.h:148
friend bool operator==(const MapIterator &a, const MapIterator &b)
Definition: map_field.h:344
TypeDefinedMapFieldBase(Arena *arena)
Definition: map_field.h:188
#define size
Definition: float-mm.c:27
Definition: message.h:179
Definition: reflection_internal.h:205
const FieldDescriptor * field
Definition: parser_unittest.cc:2279
Definition: map_field.h:60
Definition: message.h:401
virtual bool EqualIterator(const MapIterator &a, const MapIterator &b) const =0
~TypeDefinedMapFieldBase()
Definition: map_field.h:189
MapIterator & operator++()
Definition: map_field.h:350
AVCFAssetRef CFArrayRef AVCFAssetLoadValuesCompletionCallback callback
Definition: AVFoundationCFSoftLinking.h:99
const Descriptor * descriptor
Definition: descriptor.cc:271
~MapIterator()
Definition: map_field.h:341
MapFieldBase()
Definition: map_field.h:62
Definition: command_line_interface.h:56
Definition: descriptor.h:172
volatile Atomic32 state_
Definition: map_field.h:150
virtual const Reflection * GetReflection() const
Definition: message.h:331
State
Definition: map_field.h:130
MapIterator(const MapIterator &other)
Definition: map_field.h:336
Definition: descriptor.h:439
void
Definition: AVFoundationCFSoftLinking.h:81
Definition: generated_message_reflection.h:100
TypeDefinedMapFieldBase()
Definition: map_field.h:187
Definition: map_field.h:298
Definition: map_type_handler.h:45
GOOGLE_ATTRIBUTE_NOINLINE void OwnDestructor(T *object)
Definition: arena.h:479
MapFieldBase(Arena *arena)
Definition: map_field.h:68
Definition: __init__.py:1
Definition: map_type_handler.h:138
GLboolean GLboolean GLboolean GLboolean a
Definition: gl2ext.h:306
MapIterator operator++(int)
Definition: map_field.h:354
Definition: document.h:393
#define EntryType
Definition: map_field_lite.h:220
Definition: repeated_field.h:369
const MapValueRef & GetValueRef()
Definition: map_field.h:364
const FieldDescriptor * FindFieldByName(const string &name) const
Definition: descriptor.cc:1357
#define NULL
Definition: common_types.h:41
Key
Definition: keyboard.h:10
RepeatedPtrField< Message > * repeated_field_
Definition: map_field.h:139
#define LIBPROTOBUF_EXPORT
Definition: port.h:97
MapValueRef * MutableValueRef()
Definition: map_field.h:367
GLboolean GLboolean GLboolean b
Definition: gl2ext.h:306
Arena * arena_
Definition: map_field.h:138
Definition: gflags_completions.h:115
MapIterator(Message *message, const FieldDescriptor *field)
Definition: map_field.h:329
friend bool operator!=(const MapIterator &a, const MapIterator &b)
Definition: map_field.h:347
int32 Atomic32
Definition: atomicops.h:75
Definition: map_entry.h:112
const MapKey & GetKey()
Definition: map_field.h:361
GLuint GLsizei const GLchar * message
Definition: gl2ext.h:137
Definition: map_field.h:327
const Descriptor * message_type() const
GLuint GLsizei GLsizei GLfloat * val
Definition: gl2ext.h:3301
const Descriptor ** entry_descriptor_
Definition: map_field.h:145
MergeFrom
Definition: python_message.py:1259
#define T(a)
Definition: row_common.cc:1964
virtual void SyncMapWithRepeatedFieldNoLock() const
Definition: map_field.h:116
Definition: map_entry_lite.h:63