Go to the documentation of this file.
48 #include <google/protobuf/port_def.inc>
55 using io::CodedOutputStream;
56 using ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite;
69 ignore_unknown_fields_(
false),
70 ignore_unknown_enum_values_(
false),
71 use_lower_camel_for_enums_(
false),
72 case_insensitive_enum_parsing_(
true),
90 ignore_unknown_fields_(
false),
91 ignore_unknown_enum_values_(
false),
92 use_lower_camel_for_enums_(
false),
93 case_insensitive_enum_parsing_(
true),
113 std::unique_ptr<BaseElement>
element(
133 inline Status WriteSFixed32(
int field_number,
const DataPiece&
data,
134 CodedOutputStream*
stream) {
135 StatusOr<int32>
i32 =
data.ToInt32();
143 inline Status WriteSInt32(
int field_number,
const DataPiece&
data,
144 CodedOutputStream*
stream) {
145 StatusOr<int32>
i32 =
data.ToInt32();
153 inline Status WriteFixed32(
int field_number,
const DataPiece&
data,
154 CodedOutputStream*
stream) {
155 StatusOr<uint32> u32 =
data.ToUint32();
163 inline Status WriteUInt32(
int field_number,
const DataPiece&
data,
164 CodedOutputStream*
stream) {
165 StatusOr<uint32> u32 =
data.ToUint32();
173 inline Status WriteInt64(
int field_number,
const DataPiece&
data,
174 CodedOutputStream*
stream) {
175 StatusOr<int64> i64 =
data.ToInt64();
183 inline Status WriteSFixed64(
int field_number,
const DataPiece&
data,
184 CodedOutputStream*
stream) {
185 StatusOr<int64> i64 =
data.ToInt64();
193 inline Status WriteSInt64(
int field_number,
const DataPiece&
data,
194 CodedOutputStream*
stream) {
195 StatusOr<int64> i64 =
data.ToInt64();
203 inline Status WriteFixed64(
int field_number,
const DataPiece&
data,
204 CodedOutputStream*
stream) {
205 StatusOr<uint64> u64 =
data.ToUint64();
213 inline Status WriteUInt64(
int field_number,
const DataPiece&
data,
214 CodedOutputStream*
stream) {
215 StatusOr<uint64> u64 =
data.ToUint64();
223 inline Status WriteDouble(
int field_number,
const DataPiece&
data,
224 CodedOutputStream*
stream) {
225 StatusOr<double>
d =
data.ToDouble();
233 inline Status WriteFloat(
int field_number,
const DataPiece&
data,
234 CodedOutputStream*
stream) {
235 StatusOr<float>
f =
data.ToFloat();
243 inline Status WriteBool(
int field_number,
const DataPiece&
data,
244 CodedOutputStream*
stream) {
245 StatusOr<bool>
b =
data.ToBool();
253 inline Status WriteBytes(
int field_number,
const DataPiece&
data,
254 CodedOutputStream*
stream) {
255 StatusOr<std::string> c =
data.ToBytes();
263 inline Status WriteString(
int field_number,
const DataPiece&
data,
264 CodedOutputStream*
stream) {
265 StatusOr<std::string>
s =
data.ToString();
273 std::set<const google::protobuf::Field*> GetRequiredFields(
275 std::set<const google::protobuf::Field*> required;
276 for (
int i = 0;
i <
type.fields_size();
i++) {
278 if (
field.cardinality() ==
280 required.insert(&
field);
293 parent_field_(nullptr),
300 oneof_indices_(
type.oneofs_size() + 1) {
311 ow_(this->parent()->ow_),
312 parent_field_(
field),
316 size_index_(!is_list &&
field->kind() ==
320 array_index_(is_list ? 0 : -1),
322 oneof_indices_(type_.oneofs_size() + 1) {
341 SizeInfo info = {start_pos, -start_pos};
351 for (std::set<const google::protobuf::Field*>::iterator
it =
352 required_fields_.begin();
353 it != required_fields_.end(); ++
it) {
354 ow_->MissingField((*it)->name());
360 if (size_index_ >= 0) {
365 ow_->size_insert_[size_index_].size += ow_->stream_->ByteCount();
369 int size = ow_->size_insert_[size_index_].size;
373 if (e->size_index_ >= 0) {
374 ow_->size_insert_[e->size_index_].size +=
length;
378 return BaseElement::pop<ProtoElement>();
383 if (!required_fields_.empty() &&
384 field->cardinality() ==
386 required_fields_.erase(
field);
396 std::stack<const ProtoWriter::ProtoElement*> element_stack;
397 while (now->
parent() !=
nullptr) {
398 element_stack.push(now);
403 while (!element_stack.empty()) {
404 now = element_stack.top();
412 if (
i > 0 &&
i ==
name.size()) {
424 if (ow_->IsRepeated(*(now->
parent_field_)) && array_index_now > 0) {
425 StrAppend(&loc,
"[", array_index_now - 1,
"]");
433 return oneof_indices_[
index];
437 oneof_indices_[
index] =
true;
466 if (
field ==
nullptr)
return this;
476 if (
type ==
nullptr) {
507 if (
field ==
nullptr)
return this;
515 if (
type ==
nullptr) {
540 if (
field ==
nullptr)
return this;
545 if (
type ==
nullptr) {
556 if (
element_ ==
nullptr)
return true;
558 if (
field.oneof_index() > 0) {
563 "oneof field '",
element_->type().oneofs(
field.oneof_index() - 1),
564 "' is already set. Cannot set '", unnormalized_name,
"'"));
573 return field.cardinality() ==
593 bool use_lower_camel_for_enums,
594 bool case_insensitive_enum_parsing,
595 bool ignore_unknown_values) {
596 bool is_unknown_enum_value =
false;
598 case_insensitive_enum_parsing,
599 ignore_unknown_values, &is_unknown_enum_value);
600 if (e.
ok() && !is_unknown_enum_value) {
629 data.ValueAsStringOrDefault(
""));
634 switch (
field.kind()) {
704 data.ToString().ValueOrDie());
730 if (
field ==
nullptr) {
747 InvalidName(unnormalized_name,
"Root element must be a message.");
750 if (unnormalized_name.
empty()) {
753 InvalidName(unnormalized_name,
"Proto fields must have a name.");
755 InvalidName(unnormalized_name,
"Proto fields must have a name.");
763 InvalidName(unnormalized_name,
"Cannot find field.");
786 if (
length == 0)
continue;
797 output_->Append(
static_cast<const char*
>(
data), num_bytes);
801 curr_pos += num_bytes;
808 uint8 insert_buffer[10];
811 output_->Append(
reinterpret_cast<const char*
>(insert_buffer),
812 insert_buffer_pos - insert_buffer);
ProtoWriter * EndList() override
bool ignore_unknown_fields_
virtual void InvalidValue(const LocationTrackerInterface &loc, StringPiece type_name, StringPiece value)=0
virtual void InvalidName(const LocationTrackerInterface &loc, StringPiece invalid_name, StringPiece message)=0
GLuint const GLchar * name
bool ValidOneof(const google::protobuf::Field &field, StringPiece unnormalized_name)
ProtoWriter * StartList(StringPiece name) override
ProtoWriter * EndObject() override
const LocationTrackerInterface & location()
@ Field_Kind_TYPE_SFIXED64
ProtoElement * element() override
const T & ValueOrDie() const
string StrCat(const AlphaNum &a, const AlphaNum &b)
virtual const google::protobuf::Enum * GetEnumByTypeUrl(StringPiece type_url) const =0
GLenum GLuint GLenum GLsizei length
void MissingField(StringPiece missing_name)
@ Field_Kind_TYPE_FIXED32
@ Field_Kind_TYPE_SFIXED32
bool use_lower_camel_for_enums_
@ Field_Cardinality_CARDINALITY_REQUIRED
const Status & status() const
void InvalidName(StringPiece unknown_name, StringPiece message)
@ Field_Kind_TYPE_MESSAGE
void WriteTag(const google::protobuf::Field &field)
string CEscape(const string &src)
ProtoWriter * StartListField(const google::protobuf::Field &field, const google::protobuf::Type &type)
GLsizei const GLchar *const * string
zend_class_entry * enum_type
std::string ToSnakeCase(StringPiece input)
void RegisterField(const google::protobuf::Field *field)
ProtoWriter(TypeResolver *type_resolver, const google::protobuf::Type &type, strings::ByteSink *output, ErrorListener *listener)
static uint8 * WriteVarint32ToArray(uint32 value, uint8 *target)
std::deque< SizeInfo > size_insert_
virtual const google::protobuf::Type * GetTypeByTypeUrl(StringPiece type_url) const =0
GLboolean GLboolean GLboolean b
ProtoWriter * StartObjectField(const google::protobuf::Field &field, const google::protobuf::Type &type)
const google::protobuf::Type * LookupType(const google::protobuf::Field *field)
std::set< const google::protobuf::Field * > required_fields_
static size_t VarintSize32(uint32 value)
const google::protobuf::Type & type_
@ Field_Kind_TYPE_FIXED64
@ Field_Cardinality_CARDINALITY_REPEATED
const google::protobuf::Field * parent_field_
@ Field_Kind_TYPE_UNKNOWN
virtual const google::protobuf::Field * FindField(const google::protobuf::Type *type, StringPiece camel_case_name) const =0
const FieldDescriptor * field
const google::protobuf::Field * parent_field() const
const google::protobuf::Field * BeginNamed(StringPiece name, bool is_list)
virtual ProtoWriter * RenderDataPiece(StringPiece name, const DataPiece &value)
bool case_insensitive_enum_parsing_
Status
Status of any operation that the TOF sdk performs.
std::unique_ptr< io::CodedOutputStream > stream_
static util::Status WriteEnum(int field_number, const DataPiece &data, const google::protobuf::Enum *enum_type, io::CodedOutputStream *stream, bool use_lower_camel_for_enums, bool case_insensitive_enum_parsing, bool ignore_unknown_values)
std::string ToString() const override
const google::protobuf::Type & type() const
strings::ByteSink * output_
StringPiece message() const
static upb_refcounted * pop(tarjan *t)
ProtoElement(const TypeInfo *typeinfo, const google::protobuf::Type &type, ProtoWriter *enclosing)
bool ignore_unknown_enum_values_
ProtoWriter * StartObject(StringPiece name) override
bool ascii_isalnum(char c)
std::unique_ptr< ProtoElement > element_
bool IsRepeated(const google::protobuf::Field &field)
ProtoElement * parent() const override
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
bool IsOneofIndexTaken(int32 index)
void InvalidValue(StringPiece type_name, StringPiece value)
const std::string & Field_Kind_Name(T enum_t_value)
static uint8 buffer_[kBufferSize]
const TypeInfo * typeinfo_
ErrorListener * listener_
io::StringOutputStream adapter_
GLsizei const GLfloat * value
const upb_json_parsermethod const upb_symtab upb_sink * output
void TakeOneofIndex(int32 index)
const google::protobuf::Type & master_type_
ProtoWriter * RenderPrimitiveField(const google::protobuf::Field &field, const google::protobuf::Type &type, const DataPiece &value)
GLenum GLuint GLenum GLsizei const GLchar * message
virtual void MissingField(const LocationTrackerInterface &loc, StringPiece missing_name)=0
const google::protobuf::Field * Lookup(StringPiece name)
void StrAppend(string *result, const AlphaNum &a)
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:57