003 File Manager
Current Path:
/usr/local/include/google/protobuf
usr
/
local
/
include
/
google
/
protobuf
/
📁
..
📄
any.h
(6.22 KB)
📄
any.pb.h
(13.88 KB)
📄
any.proto
(5.78 KB)
📄
api.pb.h
(50.82 KB)
📄
api.proto
(7.55 KB)
📄
arena.h
(32.82 KB)
📄
arena_impl.h
(18.3 KB)
📄
arenastring.h
(17.1 KB)
📁
compiler
📄
descriptor.h
(94.39 KB)
📄
descriptor.pb.h
(512.12 KB)
📄
descriptor.proto
(37.15 KB)
📄
descriptor_database.h
(18.24 KB)
📄
duration.pb.h
(9.63 KB)
📄
duration.proto
(4.78 KB)
📄
dynamic_message.h
(8.88 KB)
📄
empty.pb.h
(7.51 KB)
📄
empty.proto
(2.37 KB)
📄
extension_set.h
(77.56 KB)
📄
extension_set_inl.h
(12.15 KB)
📄
field_access_listener.h
(9.85 KB)
📄
field_mask.pb.h
(11.57 KB)
📄
field_mask.proto
(7.99 KB)
📄
generated_enum_reflection.h
(3.9 KB)
📄
generated_enum_util.h
(3.19 KB)
📄
generated_message_reflection.h
(12.83 KB)
📄
generated_message_table_driven.h
(12.77 KB)
📄
generated_message_tctable_decl.h
(4.79 KB)
📄
generated_message_tctable_impl.h
(10.06 KB)
📄
generated_message_tctable_impl.inc
(31.95 KB)
📄
generated_message_util.h
(7.92 KB)
📄
has_bits.h
(3.46 KB)
📄
implicit_weak_message.h
(6.86 KB)
📁
io
📄
map.h
(47.04 KB)
📄
map_entry.h
(6.66 KB)
📄
map_entry_lite.h
(24.55 KB)
📄
map_field.h
(33.32 KB)
📄
map_field_inl.h
(14.15 KB)
📄
map_field_lite.h
(7.01 KB)
📄
map_type_handler.h
(31.22 KB)
📄
message.h
(64.94 KB)
📄
message_lite.h
(27.23 KB)
📄
metadata.h
(1.81 KB)
📄
metadata_lite.h
(9.09 KB)
📄
parse_context.h
(34.23 KB)
📄
port.h
(1.96 KB)
📄
port_def.inc
(24.13 KB)
📄
port_undef.inc
(4.57 KB)
📄
reflection.h
(22.18 KB)
📄
reflection_ops.h
(3.72 KB)
📄
repeated_field.h
(101.72 KB)
📄
service.h
(12.85 KB)
📄
source_context.pb.h
(10.5 KB)
📄
source_context.proto
(2.29 KB)
📄
struct.pb.h
(40.87 KB)
📄
struct.proto
(3.69 KB)
📁
stubs
📄
text_format.h
(29.07 KB)
📄
timestamp.pb.h
(9.69 KB)
📄
timestamp.proto
(6.31 KB)
📄
type.pb.h
(91.35 KB)
📄
type.proto
(5.98 KB)
📄
unknown_field_set.h
(14.06 KB)
📁
util
📄
wire_format.h
(17.6 KB)
📄
wire_format_lite.h
(81.7 KB)
📄
wrappers.pb.h
(56.78 KB)
📄
wrappers.proto
(3.95 KB)
Editing: extension_set_inl.h
// Protocol Buffers - Google's data interchange format // Copyright 2008 Google Inc. All rights reserved. // https://developers.google.com/protocol-buffers/ // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following disclaimer // in the documentation and/or other materials provided with the // distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived from // this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef GOOGLE_PROTOBUF_EXTENSION_SET_INL_H__ #define GOOGLE_PROTOBUF_EXTENSION_SET_INL_H__ #include <google/protobuf/parse_context.h> #include <google/protobuf/extension_set.h> #include <google/protobuf/metadata_lite.h> namespace google { namespace protobuf { namespace internal { template <typename T> const char* ExtensionSet::ParseFieldWithExtensionInfo( int number, bool was_packed_on_wire, const ExtensionInfo& extension, InternalMetadata* metadata, const char* ptr, internal::ParseContext* ctx) { if (was_packed_on_wire) { switch (extension.type) { #define HANDLE_TYPE(UPPERCASE, CPP_CAMELCASE) \ case WireFormatLite::TYPE_##UPPERCASE: \ return internal::Packed##CPP_CAMELCASE##Parser( \ MutableRawRepeatedField(number, extension.type, extension.is_packed, \ extension.descriptor), \ ptr, ctx); HANDLE_TYPE(INT32, Int32); HANDLE_TYPE(INT64, Int64); HANDLE_TYPE(UINT32, UInt32); HANDLE_TYPE(UINT64, UInt64); HANDLE_TYPE(SINT32, SInt32); HANDLE_TYPE(SINT64, SInt64); HANDLE_TYPE(FIXED32, Fixed32); HANDLE_TYPE(FIXED64, Fixed64); HANDLE_TYPE(SFIXED32, SFixed32); HANDLE_TYPE(SFIXED64, SFixed64); HANDLE_TYPE(FLOAT, Float); HANDLE_TYPE(DOUBLE, Double); HANDLE_TYPE(BOOL, Bool); #undef HANDLE_TYPE case WireFormatLite::TYPE_ENUM: return internal::PackedEnumParserArg<T>( MutableRawRepeatedField(number, extension.type, extension.is_packed, extension.descriptor), ptr, ctx, extension.enum_validity_check.func, extension.enum_validity_check.arg, metadata, number); case WireFormatLite::TYPE_STRING: case WireFormatLite::TYPE_BYTES: case WireFormatLite::TYPE_GROUP: case WireFormatLite::TYPE_MESSAGE: GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed."; break; } } else { switch (extension.type) { #define HANDLE_VARINT_TYPE(UPPERCASE, CPP_CAMELCASE) \ case WireFormatLite::TYPE_##UPPERCASE: { \ uint64 value; \ ptr = VarintParse(ptr, &value); \ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); \ if (extension.is_repeated) { \ Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \ extension.is_packed, value, extension.descriptor); \ } else { \ Set##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, value, \ extension.descriptor); \ } \ } break HANDLE_VARINT_TYPE(INT32, Int32); HANDLE_VARINT_TYPE(INT64, Int64); HANDLE_VARINT_TYPE(UINT32, UInt32); HANDLE_VARINT_TYPE(UINT64, UInt64); HANDLE_VARINT_TYPE(BOOL, Bool); #undef HANDLE_VARINT_TYPE #define HANDLE_SVARINT_TYPE(UPPERCASE, CPP_CAMELCASE, SIZE) \ case WireFormatLite::TYPE_##UPPERCASE: { \ uint64 val; \ ptr = VarintParse(ptr, &val); \ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); \ auto value = WireFormatLite::ZigZagDecode##SIZE(val); \ if (extension.is_repeated) { \ Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \ extension.is_packed, value, extension.descriptor); \ } else { \ Set##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, value, \ extension.descriptor); \ } \ } break HANDLE_SVARINT_TYPE(SINT32, Int32, 32); HANDLE_SVARINT_TYPE(SINT64, Int64, 64); #undef HANDLE_SVARINT_TYPE #define HANDLE_FIXED_TYPE(UPPERCASE, CPP_CAMELCASE, CPPTYPE) \ case WireFormatLite::TYPE_##UPPERCASE: { \ auto value = UnalignedLoad<CPPTYPE>(ptr); \ ptr += sizeof(CPPTYPE); \ if (extension.is_repeated) { \ Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \ extension.is_packed, value, extension.descriptor); \ } else { \ Set##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, value, \ extension.descriptor); \ } \ } break HANDLE_FIXED_TYPE(FIXED32, UInt32, uint32); HANDLE_FIXED_TYPE(FIXED64, UInt64, uint64); HANDLE_FIXED_TYPE(SFIXED32, Int32, int32); HANDLE_FIXED_TYPE(SFIXED64, Int64, int64); HANDLE_FIXED_TYPE(FLOAT, Float, float); HANDLE_FIXED_TYPE(DOUBLE, Double, double); #undef HANDLE_FIXED_TYPE case WireFormatLite::TYPE_ENUM: { uint64 val; ptr = VarintParse(ptr, &val); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); int value = val; if (!extension.enum_validity_check.func( extension.enum_validity_check.arg, value)) { WriteVarint(number, val, metadata->mutable_unknown_fields<T>()); } else if (extension.is_repeated) { AddEnum(number, WireFormatLite::TYPE_ENUM, extension.is_packed, value, extension.descriptor); } else { SetEnum(number, WireFormatLite::TYPE_ENUM, value, extension.descriptor); } break; } case WireFormatLite::TYPE_BYTES: case WireFormatLite::TYPE_STRING: { std::string* value = extension.is_repeated ? AddString(number, WireFormatLite::TYPE_STRING, extension.descriptor) : MutableString(number, WireFormatLite::TYPE_STRING, extension.descriptor); int size = ReadSize(&ptr); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); return ctx->ReadString(ptr, size, value); } case WireFormatLite::TYPE_GROUP: { MessageLite* value = extension.is_repeated ? AddMessage(number, WireFormatLite::TYPE_GROUP, *extension.message_info.prototype, extension.descriptor) : MutableMessage(number, WireFormatLite::TYPE_GROUP, *extension.message_info.prototype, extension.descriptor); uint32 tag = (number << 3) + WireFormatLite::WIRETYPE_START_GROUP; return ctx->ParseGroup(value, ptr, tag); } case WireFormatLite::TYPE_MESSAGE: { MessageLite* value = extension.is_repeated ? AddMessage(number, WireFormatLite::TYPE_MESSAGE, *extension.message_info.prototype, extension.descriptor) : MutableMessage(number, WireFormatLite::TYPE_MESSAGE, *extension.message_info.prototype, extension.descriptor); return ctx->ParseMessage(value, ptr); } } } return ptr; } template <typename Msg, typename T> const char* ExtensionSet::ParseMessageSetItemTmpl( const char* ptr, const Msg* containing_type, internal::InternalMetadata* metadata, internal::ParseContext* ctx) { std::string payload; uint32 type_id = 0; bool payload_read = false; while (!ctx->Done(&ptr)) { uint32 tag = static_cast<uint8>(*ptr++); if (tag == WireFormatLite::kMessageSetTypeIdTag) { uint64 tmp; ptr = ParseBigVarint(ptr, &tmp); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); type_id = tmp; if (payload_read) { ExtensionInfo extension; bool was_packed_on_wire; if (!FindExtension(2, type_id, containing_type, ctx, &extension, &was_packed_on_wire)) { WriteLengthDelimited(type_id, payload, metadata->mutable_unknown_fields<T>()); } else { MessageLite* value = extension.is_repeated ? AddMessage(type_id, WireFormatLite::TYPE_MESSAGE, *extension.message_info.prototype, extension.descriptor) : MutableMessage(type_id, WireFormatLite::TYPE_MESSAGE, *extension.message_info.prototype, extension.descriptor); const char* p; // We can't use regular parse from string as we have to track // proper recursion depth and descriptor pools. ParseContext tmp_ctx(ctx->depth(), false, &p, payload); tmp_ctx.data().pool = ctx->data().pool; tmp_ctx.data().factory = ctx->data().factory; GOOGLE_PROTOBUF_PARSER_ASSERT(value->_InternalParse(p, &tmp_ctx) && tmp_ctx.EndedAtLimit()); } type_id = 0; } } else if (tag == WireFormatLite::kMessageSetMessageTag) { if (type_id != 0) { ptr = ParseFieldMaybeLazily(static_cast<uint64>(type_id) * 8 + 2, ptr, containing_type, metadata, ctx); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); type_id = 0; } else { int32 size = ReadSize(&ptr); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); ptr = ctx->ReadString(ptr, size, &payload); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); payload_read = true; } } else { ptr = ReadTag(ptr - 1, &tag); if (tag == 0 || (tag & 7) == 4) { ctx->SetLastTag(tag); return ptr; } ptr = ParseField(tag, ptr, containing_type, metadata, ctx); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); } } return ptr; } } // namespace internal } // namespace protobuf } // namespace google #endif // GOOGLE_PROTOBUF_EXTENSION_SET_INL_H__
Upload File
Create Folder