#include <google/protobuf/extension_set.h>
#include <tuple>
#include <unordered_set>
#include <utility>
#include <google/protobuf/stubs/common.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/extension_set_inl.h>
#include <google/protobuf/message_lite.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/parse_context.h>
#include <google/protobuf/port.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/stubs/map_util.h>
#include <google/protobuf/stubs/hash.h>
#include <google/protobuf/port_def.inc>
namespace google {
namespace protobuf {
namespace internal {
namespace {
inline WireFormatLite::FieldType real_type(FieldType type) { … }
inline WireFormatLite::CppType cpp_type(FieldType type) { … }
struct ExtensionEq { … };
struct ExtensionHasher { … };
ExtensionRegistry;
static const ExtensionRegistry* global_registry = …;
void Register(const ExtensionInfo& info) { … }
const ExtensionInfo* FindRegisteredExtension(const MessageLite* extendee,
int number) { … }
}
bool GeneratedExtensionFinder::Find(int number, ExtensionInfo* output) { … }
void ExtensionSet::RegisterExtension(const MessageLite* extendee, int number,
FieldType type, bool is_repeated,
bool is_packed,
LazyEagerVerifyFnType verify_func) { … }
static bool CallNoArgValidityFunc(const void* arg, int number) { … }
void ExtensionSet::RegisterEnumExtension(const MessageLite* extendee,
int number, FieldType type,
bool is_repeated, bool is_packed,
EnumValidityFunc* is_valid) { … }
void ExtensionSet::RegisterMessageExtension(const MessageLite* extendee,
int number, FieldType type,
bool is_repeated, bool is_packed,
const MessageLite* prototype,
LazyEagerVerifyFnType verify_func) { … }
ExtensionSet::ExtensionSet(Arena* arena)
: … { … }
ExtensionSet::~ExtensionSet() { … }
void ExtensionSet::DeleteFlatMap(const ExtensionSet::KeyValue* flat,
uint16_t flat_capacity) { … }
bool ExtensionSet::Has(int number) const { … }
bool ExtensionSet::HasLazy(int number) const { … }
int ExtensionSet::NumExtensions() const { … }
int ExtensionSet::ExtensionSize(int number) const { … }
FieldType ExtensionSet::ExtensionType(int number) const { … }
void ExtensionSet::ClearExtension(int number) { … }
namespace {
enum { … };
}
#define GOOGLE_DCHECK_TYPE …
#define PRIMITIVE_ACCESSORS …
PRIMITIVE_ACCESSORS(INT32, int32_t, Int32)
PRIMITIVE_ACCESSORS(INT64, int64_t, Int64)
PRIMITIVE_ACCESSORS(UINT32, uint32_t, UInt32)
PRIMITIVE_ACCESSORS(UINT64, uint64_t, UInt64)
PRIMITIVE_ACCESSORS(FLOAT, float, Float)
PRIMITIVE_ACCESSORS(DOUBLE, double, Double)
PRIMITIVE_ACCESSORS(BOOL, bool, Bool)
#undef PRIMITIVE_ACCESSORS
const void* ExtensionSet::GetRawRepeatedField(int number,
const void* default_value) const { … }
void* ExtensionSet::MutableRawRepeatedField(int number, FieldType field_type,
bool packed,
const FieldDescriptor* desc) { … }
void* ExtensionSet::MutableRawRepeatedField(int number) { … }
int ExtensionSet::GetEnum(int number, int default_value) const { … }
const int& ExtensionSet::GetRefEnum(int number,
const int& default_value) const { … }
void ExtensionSet::SetEnum(int number, FieldType type, int value,
const FieldDescriptor* descriptor) { … }
int ExtensionSet::GetRepeatedEnum(int number, int index) const { … }
const int& ExtensionSet::GetRefRepeatedEnum(int number, int index) const { … }
void ExtensionSet::SetRepeatedEnum(int number, int index, int value) { … }
void ExtensionSet::AddEnum(int number, FieldType type, bool packed, int value,
const FieldDescriptor* descriptor) { … }
const std::string& ExtensionSet::GetString(
int number, const std::string& default_value) const { … }
std::string* ExtensionSet::MutableString(int number, FieldType type,
const FieldDescriptor* descriptor) { … }
const std::string& ExtensionSet::GetRepeatedString(int number,
int index) const { … }
std::string* ExtensionSet::MutableRepeatedString(int number, int index) { … }
std::string* ExtensionSet::AddString(int number, FieldType type,
const FieldDescriptor* descriptor) { … }
const MessageLite& ExtensionSet::GetMessage(
int number, const MessageLite& default_value) const { … }
MessageLite* ExtensionSet::MutableMessage(int number, FieldType type,
const MessageLite& prototype,
const FieldDescriptor* descriptor) { … }
void ExtensionSet::SetAllocatedMessage(int number, FieldType type,
const FieldDescriptor* descriptor,
MessageLite* message) { … }
void ExtensionSet::UnsafeArenaSetAllocatedMessage(
int number, FieldType type, const FieldDescriptor* descriptor,
MessageLite* message) { … }
MessageLite* ExtensionSet::ReleaseMessage(int number,
const MessageLite& prototype) { … }
MessageLite* ExtensionSet::UnsafeArenaReleaseMessage(
int number, const MessageLite& prototype) { … }
const MessageLite& ExtensionSet::GetRepeatedMessage(int number,
int index) const { … }
MessageLite* ExtensionSet::MutableRepeatedMessage(int number, int index) { … }
MessageLite* ExtensionSet::AddMessage(int number, FieldType type,
const MessageLite& prototype,
const FieldDescriptor* descriptor) { … }
#undef GOOGLE_DCHECK_TYPE
void ExtensionSet::RemoveLast(int number) { … }
MessageLite* ExtensionSet::ReleaseLast(int number) { … }
MessageLite* ExtensionSet::UnsafeArenaReleaseLast(int number) { … }
void ExtensionSet::SwapElements(int number, int index1, int index2) { … }
void ExtensionSet::Clear() { … }
namespace {
template <typename ItX, typename ItY>
size_t SizeOfUnion(ItX it_dest, ItX end_dest, ItY it_source, ItY end_source) { … }
}
void ExtensionSet::MergeFrom(const MessageLite* extendee,
const ExtensionSet& other) { … }
void ExtensionSet::InternalExtensionMergeFrom(const MessageLite* extendee,
int number,
const Extension& other_extension,
Arena* other_arena) { … }
void ExtensionSet::Swap(const MessageLite* extendee, ExtensionSet* other) { … }
void ExtensionSet::InternalSwap(ExtensionSet* other) { … }
void ExtensionSet::SwapExtension(const MessageLite* extendee,
ExtensionSet* other, int number) { … }
void ExtensionSet::UnsafeShallowSwapExtension(ExtensionSet* other, int number) { … }
bool ExtensionSet::IsInitialized() const { … }
const char* ExtensionSet::ParseField(uint64_t tag, const char* ptr,
const MessageLite* extendee,
internal::InternalMetadata* metadata,
internal::ParseContext* ctx) { … }
const char* ExtensionSet::ParseMessageSetItem(
const char* ptr, const MessageLite* extendee,
internal::InternalMetadata* metadata, internal::ParseContext* ctx) { … }
uint8_t* ExtensionSet::_InternalSerializeImpl(
const MessageLite* extendee, int start_field_number, int end_field_number,
uint8_t* target, io::EpsCopyOutputStream* stream) const { … }
uint8_t* ExtensionSet::InternalSerializeMessageSetWithCachedSizesToArray(
const MessageLite* extendee, uint8_t* target,
io::EpsCopyOutputStream* stream) const { … }
size_t ExtensionSet::ByteSize() const { … }
bool ExtensionSet::MaybeNewExtension(int number,
const FieldDescriptor* descriptor,
Extension** result) { … }
void ExtensionSet::Extension::Clear() { … }
size_t ExtensionSet::Extension::ByteSize(int number) const { … }
int ExtensionSet::Extension::GetSize() const { … }
void ExtensionSet::Extension::Free() { … }
bool ExtensionSet::Extension::IsInitialized() const { … }
void ExtensionSet::LazyMessageExtension::UnusedKeyMethod() { … }
const ExtensionSet::Extension* ExtensionSet::FindOrNull(int key) const { … }
const ExtensionSet::Extension* ExtensionSet::FindOrNullInLargeMap(
int key) const { … }
ExtensionSet::Extension* ExtensionSet::FindOrNull(int key) { … }
ExtensionSet::Extension* ExtensionSet::FindOrNullInLargeMap(int key) { … }
std::pair<ExtensionSet::Extension*, bool> ExtensionSet::Insert(int key) { … }
void ExtensionSet::GrowCapacity(size_t minimum_new_capacity) { … }
#if (__cplusplus < 201703) && \
(!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr uint16_t ExtensionSet::kMaximumFlatCapacity;
#endif
void ExtensionSet::Erase(int key) { … }
const RepeatedPrimitiveDefaults* RepeatedPrimitiveDefaults::default_instance() { … }
const RepeatedStringTypeTraits::RepeatedFieldType*
RepeatedStringTypeTraits::GetDefaultRepeatedField() { … }
uint8_t* ExtensionSet::Extension::InternalSerializeFieldWithCachedSizesToArray(
const MessageLite* extendee, const ExtensionSet* extension_set, int number,
uint8_t* target, io::EpsCopyOutputStream* stream) const { … }
const MessageLite* ExtensionSet::GetPrototypeForLazyMessage(
const MessageLite* extendee, int number) const { … }
uint8_t*
ExtensionSet::Extension::InternalSerializeMessageSetItemWithCachedSizesToArray(
const MessageLite* extendee, const ExtensionSet* extension_set, int number,
uint8_t* target, io::EpsCopyOutputStream* stream) const { … }
size_t ExtensionSet::Extension::MessageSetItemByteSize(int number) const { … }
size_t ExtensionSet::MessageSetByteSize() const { … }
LazyEagerVerifyFnType FindExtensionLazyEagerVerifyFn(
const MessageLite* extendee, int number) { … }
}
}
}
#include <google/protobuf/port_undef.inc>