#include <google/protobuf/wire_format_lite.h>
#include <limits>
#include <stack>
#include <string>
#include <vector>
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/io/zero_copy_stream.h>
#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
#include <google/protobuf/stubs/stringprintf.h>
#include <google/protobuf/port_def.inc>
namespace google {
namespace protobuf {
namespace internal {
#if !defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912)
const int WireFormatLite::kMessageSetItemStartTag;
const int WireFormatLite::kMessageSetItemEndTag;
const int WireFormatLite::kMessageSetTypeIdTag;
const int WireFormatLite::kMessageSetMessageTag;
#endif
const size_t WireFormatLite::kMessageSetItemTagsSize = …;
const WireFormatLite::CppType
WireFormatLite::kFieldTypeToCppTypeMap[MAX_FIELD_TYPE + 1] = …;
const WireFormatLite::WireType
WireFormatLite::kWireTypeForFieldType[MAX_FIELD_TYPE + 1] = …;
bool WireFormatLite::SkipField(io::CodedInputStream* input, uint32_t tag) { … }
bool WireFormatLite::SkipField(io::CodedInputStream* input, uint32_t tag,
io::CodedOutputStream* output) { … }
bool WireFormatLite::SkipMessage(io::CodedInputStream* input) { … }
bool WireFormatLite::SkipMessage(io::CodedInputStream* input,
io::CodedOutputStream* output) { … }
bool FieldSkipper::SkipField(io::CodedInputStream* input, uint32_t tag) { … }
bool FieldSkipper::SkipMessage(io::CodedInputStream* input) { … }
void FieldSkipper::SkipUnknownEnum(int , int ) { … }
bool CodedOutputStreamFieldSkipper::SkipField(io::CodedInputStream* input,
uint32_t tag) { … }
bool CodedOutputStreamFieldSkipper::SkipMessage(io::CodedInputStream* input) { … }
void CodedOutputStreamFieldSkipper::SkipUnknownEnum(int field_number,
int value) { … }
bool WireFormatLite::ReadPackedEnumPreserveUnknowns(
io::CodedInputStream* input, int field_number, bool (*is_valid)(int),
io::CodedOutputStream* unknown_fields_stream, RepeatedField<int>* values) { … }
#if !defined(PROTOBUF_LITTLE_ENDIAN)
namespace {
void EncodeFixedSizeValue(float v, uint8_t* dest) {
WireFormatLite::WriteFloatNoTagToArray(v, dest);
}
void EncodeFixedSizeValue(double v, uint8_t* dest) {
WireFormatLite::WriteDoubleNoTagToArray(v, dest);
}
void EncodeFixedSizeValue(uint32_t v, uint8_t* dest) {
WireFormatLite::WriteFixed32NoTagToArray(v, dest);
}
void EncodeFixedSizeValue(uint64_t v, uint8_t* dest) {
WireFormatLite::WriteFixed64NoTagToArray(v, dest);
}
void EncodeFixedSizeValue(int32_t v, uint8_t* dest) {
WireFormatLite::WriteSFixed32NoTagToArray(v, dest);
}
void EncodeFixedSizeValue(int64_t v, uint8_t* dest) {
WireFormatLite::WriteSFixed64NoTagToArray(v, dest);
}
void EncodeFixedSizeValue(bool v, uint8_t* dest) {
WireFormatLite::WriteBoolNoTagToArray(v, dest);
}
}
#endif
template <typename CType>
static void WriteArray(const CType* a, int n, io::CodedOutputStream* output) { … }
void WireFormatLite::WriteFloatArray(const float* a, int n,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteDoubleArray(const double* a, int n,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteFixed32Array(const uint32_t* a, int n,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteFixed64Array(const uint64_t* a, int n,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteSFixed32Array(const int32_t* a, int n,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteSFixed64Array(const int64_t* a, int n,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteBoolArray(const bool* a, int n,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteInt32(int field_number, int32_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteInt64(int field_number, int64_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteUInt32(int field_number, uint32_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteUInt64(int field_number, uint64_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteSInt32(int field_number, int32_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteSInt64(int field_number, int64_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteFixed32(int field_number, uint32_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteFixed64(int field_number, uint64_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteSFixed32(int field_number, int32_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteSFixed64(int field_number, int64_t value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteFloat(int field_number, float value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteDouble(int field_number, double value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteBool(int field_number, bool value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteEnum(int field_number, int value,
io::CodedOutputStream* output) { … }
constexpr size_t kInt32MaxSize = …;
void WireFormatLite::WriteString(int field_number, const std::string& value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteStringMaybeAliased(int field_number,
const std::string& value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteBytes(int field_number, const std::string& value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteBytesMaybeAliased(int field_number,
const std::string& value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteGroup(int field_number, const MessageLite& value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteMessage(int field_number, const MessageLite& value,
io::CodedOutputStream* output) { … }
uint8_t* WireFormatLite::InternalWriteGroup(int field_number,
const MessageLite& value,
uint8_t* target,
io::EpsCopyOutputStream* stream) { … }
uint8_t* WireFormatLite::InternalWriteMessage(int field_number,
const MessageLite& value,
int cached_size, uint8_t* target,
io::EpsCopyOutputStream* stream) { … }
void WireFormatLite::WriteSubMessageMaybeToArray(
int , const MessageLite& value, io::CodedOutputStream* output) { … }
void WireFormatLite::WriteGroupMaybeToArray(int field_number,
const MessageLite& value,
io::CodedOutputStream* output) { … }
void WireFormatLite::WriteMessageMaybeToArray(int field_number,
const MessageLite& value,
io::CodedOutputStream* output) { … }
PROTOBUF_NDEBUG_INLINE static bool ReadBytesToString(
io::CodedInputStream* input, std::string* value);
inline static bool ReadBytesToString(io::CodedInputStream* input,
std::string* value) { … }
bool WireFormatLite::ReadBytes(io::CodedInputStream* input,
std::string* value) { … }
bool WireFormatLite::ReadBytes(io::CodedInputStream* input, std::string** p) { … }
void PrintUTF8ErrorLog(StringPiece message_name,
StringPiece field_name, const char* operation_str,
bool emit_stacktrace) { … }
bool WireFormatLite::VerifyUtf8String(const char* data, int size, Operation op,
const char* field_name) { … }
template <bool ZigZag, bool SignExtended, typename T>
static size_t VarintSize(const T* data, const int n) { … }
template <bool ZigZag, typename T>
static size_t VarintSize64(const T* data, const int n) { … }
#if defined(__SSE__) && defined(__clang__)
size_t WireFormatLite::Int32Size(const RepeatedField<int32_t>& value) { … }
size_t WireFormatLite::UInt32Size(const RepeatedField<uint32_t>& value) { … }
size_t WireFormatLite::SInt32Size(const RepeatedField<int32_t>& value) { … }
size_t WireFormatLite::EnumSize(const RepeatedField<int>& value) { … }
#else
size_t WireFormatLite::Int32Size(const RepeatedField<int32_t>& value) {
size_t out = 0;
const int n = value.size();
for (int i = 0; i < n; i++) {
out += Int32Size(value.Get(i));
}
return out;
}
size_t WireFormatLite::UInt32Size(const RepeatedField<uint32_t>& value) {
size_t out = 0;
const int n = value.size();
for (int i = 0; i < n; i++) {
out += UInt32Size(value.Get(i));
}
return out;
}
size_t WireFormatLite::SInt32Size(const RepeatedField<int32_t>& value) {
size_t out = 0;
const int n = value.size();
for (int i = 0; i < n; i++) {
out += SInt32Size(value.Get(i));
}
return out;
}
size_t WireFormatLite::EnumSize(const RepeatedField<int>& value) {
size_t out = 0;
const int n = value.size();
for (int i = 0; i < n; i++) {
out += EnumSize(value.Get(i));
}
return out;
}
#endif
#define USE_SSE_FOR_64_BIT_INTEGER_ARRAYS …
#if USE_SSE_FOR_64_BIT_INTEGER_ARRAYS
size_t WireFormatLite::Int64Size(const RepeatedField<int64_t>& value) {
return VarintSize64<false>(value.data(), value.size());
}
size_t WireFormatLite::UInt64Size(const RepeatedField<uint64_t>& value) {
return VarintSize64<false>(value.data(), value.size());
}
size_t WireFormatLite::SInt64Size(const RepeatedField<int64_t>& value) {
return VarintSize64<true>(value.data(), value.size());
}
#else
size_t WireFormatLite::Int64Size(const RepeatedField<int64_t>& value) { … }
size_t WireFormatLite::UInt64Size(const RepeatedField<uint64_t>& value) { … }
size_t WireFormatLite::SInt64Size(const RepeatedField<int64_t>& value) { … }
#endif
}
}
}
#include <google/protobuf/port_undef.inc>