31 #ifndef GOOGLE_PROTOBUF_UTIL_CONVERTER_STRUCTURED_OBJECTWRITER_H__
32 #define GOOGLE_PROTOBUF_UTIL_CONVERTER_STRUCTURED_OBJECTWRITER_H__
36 #include <google/protobuf/stubs/casts.h>
37 #include <google/protobuf/stubs/common.h>
38 #include <google/protobuf/util/internal/object_writer.h>
40 #include <google/protobuf/port_def.inc>
58 class PROTOBUF_EXPORT StructuredObjectWriter :
public ObjectWriter {
68 class PROTOBUF_EXPORT BaseElement {
73 level_(parent == nullptr ? 0 : parent->
level() + 1) {}
77 template <
typename ElementType>
79 return down_cast<ElementType*>(
parent_.release());
86 int level()
const {
return level_; }
94 std::unique_ptr<BaseElement>
parent_;
106 virtual BaseElement*
element() = 0;
118 #include <google/protobuf/port_undef.inc>
120 #endif // GOOGLE_PROTOBUF_UTIL_CONVERTER_STRUCTURED_OBJECTWRITER_H__