Go to the documentation of this file.
55 #include <google/protobuf/port_def.inc>
67 const MapValueRef&
value);
88 if (
number == 0)
return false;
93 if (!
input->ReadVarint64(&
value))
return false;
99 if (!
input->ReadLittleEndian64(&
value))
return false;
106 if (unknown_fields ==
NULL) {
117 if (!
input->IncrementRecursionDepth())
return false;
123 input->DecrementRecursionDepth();
125 if (!
input->LastTagWas(
137 if (!
input->ReadLittleEndian32(&
value))
return false;
169 bool (*is_valid)(
int),
175 while (
input->BytesUntilLimit() > 0) {
177 if (!WireFormatLite::ReadPrimitive<int, WireFormatLite::TYPE_ENUM>(
181 if (is_valid ==
NULL || is_valid(
value)) {
187 input->PopLimit(limit);
195 switch (
field.type()) {
214 output->WriteVarint32(
field.length_delimited().size());
215 output->WriteRawMaybeAliased(
field.length_delimited().data(),
216 field.length_delimited().size());
234 switch (
field.type()) {
325 switch (
field.type()) {
345 field.length_delimited().size());
373 int field_size =
field.GetLengthDelimitedSize();
411 field = message_reflection->FindKnownExtensionByNumber(field_number);
413 field =
input->GetExtensionPool()->FindExtensionByNumber(
453 }
else if (
field->is_repeated() ||
457 GOOGLE_LOG(
ERROR) <<
"Extensions of MessageSets must be optional messages.";
476 enum {
UNKNOWN, NORMAL_FORMAT, PACKED_FORMAT } value_format;
482 value_format = NORMAL_FORMAT;
483 }
else if (
field->is_packable() &&
486 value_format = PACKED_FORMAT;
496 }
else if (value_format == PACKED_FORMAT) {
501 switch (
field->type()) {
502 #define HANDLE_PACKED_TYPE(TYPE, CPPTYPE, CPPTYPE_METHOD) \
503 case FieldDescriptor::TYPE_##TYPE: { \
504 while (input->BytesUntilLimit() > 0) { \
506 if (!WireFormatLite::ReadPrimitive<CPPTYPE, \
507 WireFormatLite::TYPE_##TYPE>(input, \
510 message_reflection->Add##CPPTYPE_METHOD(message, field, value); \
531 #undef HANDLE_PACKED_TYPE
534 while (
input->BytesUntilLimit() > 0) {
536 if (!WireFormatLite::ReadPrimitive<int, WireFormatLite::TYPE_ENUM>(
539 if (
message->GetDescriptor()->file()->syntax() ==
545 if (enum_value !=
NULL) {
570 input->PopLimit(limit);
573 switch (
field->type()) {
574 #define HANDLE_TYPE(TYPE, CPPTYPE, CPPTYPE_METHOD) \
575 case FieldDescriptor::TYPE_##TYPE: { \
577 if (!WireFormatLite::ReadPrimitive<CPPTYPE, WireFormatLite::TYPE_##TYPE>( \
580 if (field->is_repeated()) { \
581 message_reflection->Add##CPPTYPE_METHOD(message, field, value); \
583 message_reflection->Set##CPPTYPE_METHOD(message, field, value); \
608 if (!WireFormatLite::ReadPrimitive<int, WireFormatLite::TYPE_ENUM>(
611 if (
field->is_repeated()) {
624 if (strict_utf8_check) {
627 field->full_name().c_str())) {
632 field->full_name().c_str());
634 if (
field->is_repeated()) {
645 if (
field->is_repeated()) {
655 if (
field->is_repeated()) {
671 if (
field->is_repeated()) {
690 struct MSReflective {
693 message_reflection->FindKnownExtensionByNumber(type_id);
715 int expected_endpoint =
output->ByteCount() +
size;
717 std::vector<const FieldDescriptor*>
fields;
728 for (
int i = 0;
i <
fields.size();
i++) {
732 if (
descriptor->options().message_set_wire_format()) {
741 <<
": Protocol message serialized to a size different from what was "
742 "originally expected. Perhaps it was modified by another thread "
743 "during serialization?";
749 switch (
field->type()) {
758 #define CASE_TYPE(FieldType, CamelFieldType, CamelCppType) \
759 case FieldDescriptor::TYPE_##FieldType: \
760 WireFormatLite::Write##CamelFieldType(1, value.Get##CamelCppType##Value(), \
782 switch (
field->type()) {
783 #define CASE_TYPE(FieldType, CamelFieldType, CamelCppType) \
784 case FieldDescriptor::TYPE_##FieldType: \
785 WireFormatLite::Write##CamelFieldType(2, value.Get##CamelCppType##Value(), \
815 std::vector<MapKey> sorted_key_list;
820 sorted_key_list.push_back(
it.GetKey());
823 std::sort(sorted_key_list.begin(), sorted_key_list.end(), comparator);
824 return sorted_key_list;
833 #define CASE_TYPE(CppType, CamelCppType) \
834 case FieldDescriptor::CPPTYPE_##CppType: { \
835 return a.Get##CamelCppType##Value() < b.Get##CamelCppType##Value(); \
846 GOOGLE_LOG(DFATAL) <<
"Invalid key for map field.";
874 if (
field->is_extension() &&
875 field->containing_type()->options().message_set_wire_format() &&
877 !
field->is_repeated()) {
896 if (
field->is_map()) {
900 if (
output->IsSerializationDeterministic()) {
901 std::vector<MapKey> sorted_key_list =
903 for (std::vector<MapKey>::iterator
it = sorted_key_list.begin();
904 it != sorted_key_list.end(); ++
it) {
926 if (
field->is_repeated()) {
928 }
else if (
field->containing_type()->options().map_entry()) {
936 std::vector<const Message*> map_entries;
937 if (
count > 1 &&
field->is_map() &&
output->IsSerializationDeterministic()) {
942 const bool is_packed =
field->is_packed();
943 if (is_packed &&
count > 0) {
947 output->WriteVarint32(data_size);
950 for (
int j = 0; j <
count; j++) {
951 switch (
field->type()) {
952 #define HANDLE_PRIMITIVE_TYPE(TYPE, CPPTYPE, TYPE_METHOD, CPPTYPE_METHOD) \
953 case FieldDescriptor::TYPE_##TYPE: { \
954 const CPPTYPE value = \
955 field->is_repeated() \
956 ? message_reflection->GetRepeated##CPPTYPE_METHOD(message, field, \
958 : message_reflection->Get##CPPTYPE_METHOD(message, field); \
960 WireFormatLite::Write##TYPE_METHOD##NoTag(value, output); \
962 WireFormatLite::Write##TYPE_METHOD(field->number(), value, output); \
983 #undef HANDLE_PRIMITIVE_TYPE
985 #define HANDLE_TYPE(TYPE, TYPE_METHOD, CPPTYPE_METHOD) \
986 case FieldDescriptor::TYPE_##TYPE: \
987 WireFormatLite::Write##TYPE_METHOD( \
989 field->is_repeated() \
990 ? (map_entries.empty() \
991 ? message_reflection->GetRepeated##CPPTYPE_METHOD(message, \
994 : message_reflection->Get##CPPTYPE_METHOD(message, field), \
1004 field->is_repeated()
1021 field->is_repeated()
1026 if (strict_utf8_check) {
1029 field->full_name().c_str());
1032 field->full_name().c_str());
1041 field->is_repeated()
1082 size_t our_size = 0;
1084 std::vector<const FieldDescriptor*>
fields;
1095 for (
int i = 0;
i <
fields.size();
i++) {
1099 if (
descriptor->options().message_set_wire_format()) {
1114 if (
field->is_extension() &&
1115 field->containing_type()->options().message_set_wire_format() &&
1117 !
field->is_repeated()) {
1122 if (
field->is_repeated()) {
1124 }
else if (
field->containing_type()->options().map_entry()) {
1132 size_t our_size = data_size;
1133 if (
field->is_packed()) {
1134 if (data_size > 0) {
1150 switch (
field->type()) {
1159 #define CASE_TYPE(FieldType, CamelFieldType, CamelCppType) \
1160 case FieldDescriptor::TYPE_##FieldType: \
1161 return WireFormatLite::CamelFieldType##Size( \
1162 value.Get##CamelCppType##Value());
1164 #define FIXED_CASE_TYPE(FieldType, CamelFieldType) \
1165 case FieldDescriptor::TYPE_##FieldType: \
1166 return WireFormatLite::k##CamelFieldType##Size;
1182 #undef FIXED_CASE_TYPE
1190 switch (
field->type()) {
1194 #define CASE_TYPE(FieldType, CamelFieldType, CamelCppType) \
1195 case FieldDescriptor::TYPE_##FieldType: \
1196 return WireFormatLite::CamelFieldType##Size( \
1197 value.Get##CamelCppType##Value());
1199 #define FIXED_CASE_TYPE(FieldType, CamelFieldType) \
1200 case FieldDescriptor::TYPE_##FieldType: \
1201 return WireFormatLite::k##CamelFieldType##Size;
1222 #undef FIXED_CASE_TYPE
1232 size_t data_size = 0;
1234 if (
field->is_map()) {
1254 if (
field->is_repeated()) {
1257 }
else if (
field->containing_type()->options().map_entry()) {
1264 switch (
field->type()) {
1265 #define HANDLE_TYPE(TYPE, TYPE_METHOD, CPPTYPE_METHOD) \
1266 case FieldDescriptor::TYPE_##TYPE: \
1267 if (field->is_repeated()) { \
1268 for (int j = 0; j < count; j++) { \
1269 data_size += WireFormatLite::TYPE_METHOD##Size( \
1270 message_reflection->GetRepeated##CPPTYPE_METHOD(message, field, \
1274 data_size += WireFormatLite::TYPE_METHOD##Size( \
1275 message_reflection->Get##CPPTYPE_METHOD(message, field)); \
1279 #define HANDLE_FIXED_TYPE(TYPE, TYPE_METHOD) \
1280 case FieldDescriptor::TYPE_##TYPE: \
1281 data_size += count * WireFormatLite::k##TYPE_METHOD##Size; \
1304 #undef HANDLE_FIXED_TYPE
1307 if (
field->is_repeated()) {
1308 for (
int j = 0; j <
count; j++) {
1323 for (
int j = 0; j <
count; j++) {
1326 field->is_repeated()
#define GOOGLE_CHECK_EQ(A, B)
unsigned long long int UInt64
const std::string & GetStringReference(const Message &message, const FieldDescriptor *field, std::string *scratch) const
const MapValueRef & GetValueRef()
const Descriptor::ReservedRange value
static size_t MapKeyDataOnlyByteSize(const FieldDescriptor *field, const MapKey &value)
virtual int GetCachedSize() const =0
GLenum GLuint GLenum GLsizei length
static size_t VarintSize64(uint64 value)
const std::string & GetRepeatedStringReference(const Message &message, const FieldDescriptor *field, int index, std::string *scratch) const
static std::vector< const Message * > Sort(const Message &message, int map_size, const Reflection *reflection, const FieldDescriptor *field)
size_t FromIntSize(int size)
GLsizei const GLchar *const * string
const EnumValueDescriptor * GetRepeatedEnum(const Message &message, const FieldDescriptor *field, int index) const
void SetString(Message *message, const FieldDescriptor *field, const std::string &value) const
bool SkipMessage(io::CodedInputStream *input) override
bool HasField(const Message &message, const FieldDescriptor *field) const
HANDLE_TYPE(int32, FieldDescriptor::CPPTYPE_INT32, -1)
TypeWithSize< 4 >::Int Int32
static uint8 * WriteVarint32ToArray(uint32 value, uint8 *target)
UnknownFieldSet * unknown_fields_
FloatingPoint< double > Double
GLboolean GLboolean GLboolean b
TypeWithSize< 4 >::UInt UInt32
GLenum GLsizei GLsizei GLint * values
bool operator()(const MapKey &a, const MapKey &b) const
static bool StrictUtf8Check(const FieldDescriptor *field)
UnknownFieldSet * AddGroup(int number)
static size_t message_size
void SerializeWithCachedSizes(io::CodedOutputStream *output) const override
UnknownFieldSet * MutableUnknownFields(Message *message) const
void AddEnum(Message *message, const FieldDescriptor *field, const EnumValueDescriptor *value) const
FloatingPoint< float > Float
bool ParseMessageSetItemImpl(io::CodedInputStream *input, MS ms)
static size_t VarintSize32(uint32 value)
void AddVarint(int number, uint64 value)
bool SkipField(io::CodedInputStream *input, uint32 tag) override
const UnknownFieldSet & GetUnknownFields(const Message &message) const
void AddEnumValue(Message *message, const FieldDescriptor *field, int value) const
#define GOOGLE_LOG(LEVEL)
void SkipUnknownEnum(int field_number, int value) override
const EnumValueDescriptor * GetEnum(const Message &message, const FieldDescriptor *field) const
MapIterator MapBegin(Message *message, const FieldDescriptor *field) const
bool InsertOrLookupMapValue(Message *message, const FieldDescriptor *field, const MapKey &key, MapValueRef *val) const
virtual void MapBegin(MapIterator *map_iter) const =0
static size_t MapValueRefDataOnlyByteSize(const FieldDescriptor *field, const MapValueRef &value)
const FieldDescriptor * field
void AddString(Message *message, const FieldDescriptor *field, const std::string &value) const
int FieldSize(const Message &message, const FieldDescriptor *field) const
static const LogLevel ERROR
const SETUP_TEARDOWN_TESTCONTEXT char * key
virtual void MapEnd(MapIterator *map_iter) const =0
static void SerializeMapEntry(const FieldDescriptor *field, const MapKey &key, const MapValueRef &value, io::CodedOutputStream *output)
Message * MutableMessage(Message *message, const FieldDescriptor *field, MessageFactory *factory=nullptr) const
static void SerializeMapValueRefWithCachedSizes(const FieldDescriptor *field, const MapValueRef &value, io::CodedOutputStream *output)
void AddLengthDelimited(int number, const std::string &value)
static const upb_fielddef fields[107]
const UnknownField & field(int index) const
void SetEnumValue(Message *message, const FieldDescriptor *field, int value) const
size_t ByteSizeLong() const override
void AddFixed32(int number, uint32 value)
void AddFixed64(int number, uint64 value)
static PROTOBUF_ALWAYS_INLINE uint8 * WriteTagToArray(uint32 value, uint8 *target)
const internal::MapFieldBase * GetMapData(const Message &message, const FieldDescriptor *field) const
GLsizei const GLfloat * value
Message * AddMessage(Message *message, const FieldDescriptor *field, MessageFactory *factory=nullptr) const
const upb_json_parsermethod const upb_symtab upb_sink * output
static CppType TypeToCppType(Type type)
GLboolean GLboolean GLboolean GLboolean a
void ListFields(const Message &message, std::vector< const FieldDescriptor * > *output) const
GLenum GLuint GLenum GLsizei const GLchar * message
static void SerializeMapKeyWithCachedSizes(const FieldDescriptor *field, const MapKey &value, io::CodedOutputStream *output)
const Message & GetMessage(const Message &message, const FieldDescriptor *field, MessageFactory *factory=nullptr) const
static std::vector< MapKey > SortKey(const Message &message, const Reflection *reflection, const FieldDescriptor *field)
MapIterator MapEnd(Message *message, const FieldDescriptor *field) const
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:07:01