31 #ifndef GOOGLE_PROTOBUF_MAP_ENTRY_LITE_H__ 32 #define GOOGLE_PROTOBUF_MAP_ENTRY_LITE_H__ 41 template <
typename Key,
typename Value,
44 int default_enum_value>
46 template <
typename Key,
typename Value,
49 int default_enum_value>
59 template <
typename Key,
typename Value,
62 int default_enum_value>
71 typedef typename KeyTypeHandler::TypeOnMemory KeyOnMemory;
72 typedef typename ValueTypeHandler::TypeOnMemory ValueOnMemory;
76 typedef typename KeyTypeHandler::MapEntryAccessorType KeyMapEntryAccessorType;
77 typedef typename ValueTypeHandler::MapEntryAccessorType
78 ValueMapEntryAccessorType;
81 static const int kKeyFieldNumber = 1;
82 static const int kValueFieldNumber = 2;
86 kKeyFieldNumber, KeyTypeHandler::kWireType);
88 kValueFieldNumber, ValueTypeHandler::kWireType);
89 static const int kTagSize = 1;
93 if (
this != default_instance_) {
94 if (GetArenaNoVirtual() !=
NULL)
return;
95 KeyTypeHandler::DeleteNoArena(key_);
96 ValueTypeHandler::DeleteNoArena(value_);
102 virtual inline const KeyMapEntryAccessorType&
key()
const {
103 return KeyTypeHandler::GetExternalReference(key_);
105 virtual inline const ValueMapEntryAccessorType&
value()
const {
107 return ValueTypeHandler::DefaultIfNotInitialized(value_,
108 default_instance_->value_);
112 return KeyTypeHandler::EnsureMutable(&key_, GetArenaNoVirtual());
116 return ValueTypeHandler::EnsureMutable(&value_, GetArenaNoVirtual());
126 MergeFrom(*::google::protobuf::down_cast<const MapEntryLite*>(&other));
184 output = KeyTypeHandler::WriteToArray(kKeyFieldNumber,
key(), output);
185 output = ValueTypeHandler::WriteToArray(kValueFieldNumber,
value(), output);
192 ? kTagSize + KeyTypeHandler::GetCachedSize(
key())
195 ? kTagSize + ValueTypeHandler::GetCachedSize(
205 entry->default_instance_ = default_instance_;
210 MapEntryLite* entry = Arena::CreateMessage<MapEntryLite>(arena);
211 entry->default_instance_ = default_instance_;
217 size += KeyTypeHandler::SpaceUsedInMapEntry(key_);
218 size += ValueTypeHandler::SpaceUsedInMapEntry(value_);
223 if (from._has_bits_[0]) {
225 KeyTypeHandler::EnsureMutable(&key_, GetArenaNoVirtual());
230 ValueTypeHandler::EnsureMutable(&value_, GetArenaNoVirtual());
239 ValueTypeHandler::ClearMaybeByDefaultEnum(
240 &value_, GetArenaNoVirtual(), default_enum_value);
246 KeyTypeHandler::AssignDefaultValue(&key_);
247 ValueTypeHandler::AssignDefaultValue(&value_);
251 return GetArenaNoVirtual();
261 Key, Value, kKeyFieldType, kValueFieldType, default_enum_value> >(
270 default_enum_value> >(
276 bool has_key()
const {
return (_has_bits_[0] & 0x00000001u) != 0; }
279 bool has_value()
const {
return (_has_bits_[0] & 0x00000002u) != 0; }
295 class MapEntryWrapper
296 :
public MapEntryLite<K, V, k_wire_type, v_wire_type, default_enum> {
298 typedef typename Base::KeyMapEntryAccessorType KeyMapEntryAccessorType;
299 typedef typename Base::ValueMapEntryAccessorType ValueMapEntryAccessorType;
307 Base::set_has_value();
309 inline const KeyMapEntryAccessorType&
key()
const {
return key_; }
310 inline const ValueMapEntryAccessorType&
value()
const {
return value_; }
316 friend class ::google::protobuf::Arena;
317 typedef void InternalArenaConstructable_;
318 typedef void DestructorSkippable_;
329 class MapEnumEntryWrapper
330 :
public MapEntryLite<K, V, k_wire_type, v_wire_type, default_enum> {
332 typedef typename Base::KeyMapEntryAccessorType KeyMapEntryAccessorType;
333 typedef typename Base::ValueMapEntryAccessorType ValueMapEntryAccessorType;
341 Base::set_has_value();
343 inline const KeyMapEntryAccessorType&
key()
const {
return key_; }
344 inline const ValueMapEntryAccessorType&
value()
const {
return value_; }
347 const KeyMapEntryAccessorType& key_;
348 const ValueMapEntryAccessorType value_;
351 typedef void DestructorSkippable_;
356 ValueTypeHandler::InitializeMaybeByDefaultEnum(
357 &value_, default_enum_value,
NULL);
362 : default_instance_(
NULL), arena_(arena) {
364 ValueTypeHandler::InitializeMaybeByDefaultEnum(
365 &value_, default_enum_value, arena);
369 inline Arena* GetArenaNoVirtual()
const {
373 void set_default_instance(
MapEntryLite* default_instance) {
374 default_instance_ = default_instance;
380 ValueOnMemory value_;
384 friend class ::google::protobuf::Arena;
385 typedef void InternalArenaConstructable_;
386 typedef void DestructorSkippable_;
401 #endif // GOOGLE_PROTOBUF_MAP_ENTRY_LITE_H__ bool MergePartialFromCodedStream(::google::protobuf::io::CodedInputStream *input)
Definition: map_entry_lite.h:129
MessageLite * New(Arena *arena) const
Definition: map_entry_lite.h:209
static MapEntryLite * EnumWrap(const Key &key, const Value value, Arena *arena)
Definition: map_entry_lite.h:258
void SerializeWithCachedSizes(::google::protobuf::io::CodedOutputStream *output) const
Definition: map_entry_lite.h:178
#define size
Definition: float-mm.c:27
EGLStreamKHR EGLint EGLint EGLint size
Definition: eglext.h:984
MessageLite * New() const
Definition: map_entry_lite.h:203
void set_has_value()
Definition: map_entry_lite.h:278
void clear_has_key()
Definition: map_entry_lite.h:277
#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName)
Definition: macros.h:40
OPENSSL_EXPORT pem_password_cb void * u
Definition: pem.h:398
KeyMapEntryAccessorType * mutable_key()
Definition: map_entry_lite.h:110
uint8_t uint8
Definition: port.h:133
bool has_key() const
Definition: map_entry_lite.h:276
Arena * GetArena() const
Definition: map_entry_lite.h:250
static MapEntryLite * Wrap(const Key &key, const Value &value, Arena *arena)
Definition: map_entry_lite.h:267
void Clear()
Definition: map_entry_lite.h:237
string GetTypeName() const
Definition: map_entry_lite.h:123
void InitAsDefaultInstance()
Definition: map_entry_lite.h:245
bool has_value() const
Definition: map_entry_lite.h:279
int GetCachedSize() const
Definition: map_entry_lite.h:189
DOMString tag
Definition: Notification.idl:66
int Write(int fd, const void *buf, unsigned int count)
Definition: gtest-port.h:1393
Clear
Definition: python_message.py:1326
#define K
Definition: gcc-loops.cpp:16
void clear_has_value()
Definition: map_entry_lite.h:280
const FieldDescriptor const OneofDescriptor value
Definition: descriptor.h:1717
void CheckTypeAndMergeFrom(const MessageLite &other)
Definition: map_entry_lite.h:125
def Merge(text, message, allow_unknown_extension=False, allow_field_number=False)
Definition: text_format.py:349
IsInitialized
Definition: python_message.py:1169
EGLAttrib * value
Definition: eglext.h:120
int Read(int fd, void *buf, unsigned int count)
Definition: gtest-port.h:1390
::google::protobuf::uint8 * SerializeWithCachedSizesToArray(::google::protobuf::uint8 *output) const
Definition: map_entry_lite.h:183
Definition: message_lite.h:78
uint32_t uint32
Definition: port.h:135
Definition: __init__.py:1
Definition: map_type_handler.h:138
bool IsInitialized() const
Definition: map_entry_lite.h:201
static GOOGLE_ATTRIBUTE_ALWAYS_INLINE T * CreateMessage(::google::protobuf::Arena *arena)
Definition: arena.h:250
virtual const ValueMapEntryAccessorType & value() const
Definition: map_entry_lite.h:105
~MapEntryLite()
Definition: map_entry_lite.h:92
GenericValue< UTF8<> > Value
GenericValue with UTF8 encoding.
Definition: document.h:1613
Definition: document.h:393
int SpaceUsed() const
Definition: map_entry_lite.h:215
ValueMapEntryAccessorType * mutable_value()
Definition: map_entry_lite.h:114
#define GOOGLE_CHECK(EXPRESSION)
Definition: logging.h:151
typename detail::has_key_impl< L, K >::type has_key
Definition: Brigand.h:2219
virtual const KeyMapEntryAccessorType & key() const
Definition: map_entry_lite.h:102
#define NULL
Definition: common_types.h:41
Key
Definition: keyboard.h:10
void set_has_key()
Definition: map_entry_lite.h:275
void MergeFrom(const MapEntryLite &from)
Definition: map_entry_lite.h:222
Definition: gflags_completions.h:115
int ByteSize() const
Definition: map_entry_lite.h:171
ANGLE_EXPORT EGLBoolean EGLAPIENTRY Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
Definition: entry_points_egl.cpp:48
string input
Definition: tokenizer_unittest.cc:198
ByteSize
Definition: python_message.py:1040
Definition: map_entry.h:112
Definition: coded_stream.h:665
CFArrayRef CFTypeRef key
Definition: AVFoundationCFSoftLinking.h:129
#define GOOGLE_FALLTHROUGH_INTENDED
Definition: port.h:239
MergeFrom
Definition: python_message.py:1259
Definition: map_entry_lite.h:63