|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef GOOGLE_PROTOBUF_MAP_ENTRY_H__
|
|
|
#define GOOGLE_PROTOBUF_MAP_ENTRY_H__
|
|
|
|
|
|
#include <google/protobuf/generated_message_reflection.h>
|
|
|
#include <google/protobuf/map_entry_lite.h>
|
|
|
#include <google/protobuf/map_type_handler.h>
|
|
|
#include <google/protobuf/port.h>
|
|
|
#include <google/protobuf/reflection_ops.h>
|
|
|
#include <google/protobuf/unknown_field_set.h>
|
|
|
#include <google/protobuf/wire_format_lite.h>
|
|
|
|
|
|
#include <google/protobuf/port_def.inc>
|
|
|
|
|
|
#ifdef SWIG
|
|
|
#error "You cannot SWIG proto headers"
|
|
|
#endif
|
|
|
|
|
|
namespace google {
|
|
|
namespace protobuf {
|
|
|
class Arena;
|
|
|
namespace internal {
|
|
|
template <typename Derived, typename Key, typename Value,
|
|
|
WireFormatLite::FieldType kKeyFieldType,
|
|
|
WireFormatLite::FieldType kValueFieldType, int default_enum_value>
|
|
|
class MapField;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
namespace google {
|
|
|
namespace protobuf {
|
|
|
namespace internal {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename Derived, typename Key, typename Value,
|
|
|
WireFormatLite::FieldType kKeyFieldType,
|
|
|
WireFormatLite::FieldType kValueFieldType, int default_enum_value>
|
|
|
class MapEntry
|
|
|
: public MapEntryImpl<Derived, Message, Key, Value, kKeyFieldType,
|
|
|
kValueFieldType, default_enum_value> {
|
|
|
public:
|
|
|
MapEntry() : _internal_metadata_(NULL) {}
|
|
|
explicit MapEntry(Arena* arena)
|
|
|
: MapEntryImpl<Derived, Message, Key, Value, kKeyFieldType,
|
|
|
kValueFieldType, default_enum_value>(arena),
|
|
|
_internal_metadata_(arena) {}
|
|
|
~MapEntry() {
|
|
|
Message::_internal_metadata_.Delete<UnknownFieldSet>();
|
|
|
_internal_metadata_.Delete<UnknownFieldSet>();
|
|
|
}
|
|
|
typedef void InternalArenaConstructable_;
|
|
|
typedef void DestructorSkippable_;
|
|
|
|
|
|
typedef
|
|
|
typename MapEntryImpl<Derived, Message, Key, Value, kKeyFieldType,
|
|
|
kValueFieldType, default_enum_value>::KeyTypeHandler
|
|
|
KeyTypeHandler;
|
|
|
typedef typename MapEntryImpl<
|
|
|
Derived, Message, Key, Value, kKeyFieldType, kValueFieldType,
|
|
|
default_enum_value>::ValueTypeHandler ValueTypeHandler;
|
|
|
size_t SpaceUsedLong() const override {
|
|
|
size_t size = sizeof(Derived);
|
|
|
size += KeyTypeHandler::SpaceUsedInMapEntryLong(this->key_);
|
|
|
size += ValueTypeHandler::SpaceUsedInMapEntryLong(this->value_);
|
|
|
return size;
|
|
|
}
|
|
|
|
|
|
InternalMetadata _internal_metadata_;
|
|
|
|
|
|
private:
|
|
|
friend class ::PROTOBUF_NAMESPACE_ID::Arena;
|
|
|
template <typename C, typename K, typename V,
|
|
|
WireFormatLite::FieldType k_wire_type, WireFormatLite::FieldType,
|
|
|
int default_enum>
|
|
|
friend class internal::MapField;
|
|
|
|
|
|
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapEntry);
|
|
|
};
|
|
|
|
|
|
|
|
|
template <typename Derived, typename Key, typename Value,
|
|
|
WireFormatLite::FieldType kKeyFieldType,
|
|
|
WireFormatLite::FieldType kValueFieldType, int default_enum_value>
|
|
|
struct MapEntryHelper<MapEntry<Derived, Key, Value, kKeyFieldType,
|
|
|
kValueFieldType, default_enum_value> >
|
|
|
: MapEntryHelper<MapEntryLite<Derived, Key, Value, kKeyFieldType,
|
|
|
kValueFieldType, default_enum_value> > {
|
|
|
explicit MapEntryHelper(const MapPair<Key, Value>& map_pair)
|
|
|
: MapEntryHelper<MapEntryLite<Derived, Key, Value, kKeyFieldType,
|
|
|
kValueFieldType, default_enum_value> >(
|
|
|
map_pair) {}
|
|
|
};
|
|
|
|
|
|
template <typename Derived, typename K, typename V,
|
|
|
WireFormatLite::FieldType key, WireFormatLite::FieldType value,
|
|
|
int default_enum>
|
|
|
struct DeconstructMapEntry<MapEntry<Derived, K, V, key, value, default_enum> > {
|
|
|
typedef K Key;
|
|
|
typedef V Value;
|
|
|
static constexpr WireFormatLite::FieldType kKeyFieldType = key;
|
|
|
static constexpr WireFormatLite::FieldType kValueFieldType = value;
|
|
|
static constexpr int default_enum_value = default_enum;
|
|
|
};
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#include <google/protobuf/port_undef.inc>
|
|
|
|
|
|
#endif
|
|
|
|