Home | History | Annotate | Download | only in protobuf_c

Lines Matching defs:upb

3 ** Defs are upb's internal representation of the constructs that can appear
6 ** - upb::MessageDef (upb_msgdef): describes a "message" construct.
7 ** - upb::FieldDef (upb_fielddef): describes a message field.
8 ** - upb::FileDef (upb_filedef): describes a .proto file and its defs.
9 ** - upb::EnumDef (upb_enumdef): describes an enum.
10 ** - upb::OneofDef (upb_oneofdef): describes a oneof.
11 ** - upb::Def (upb_def): base class of all the others.
26 ** upb::RefCounted (upb_refcounted)
55 ** store pointers or integers of at least 32 bits (upb isn't really useful on
69 ** This file contains shared definitions that are widely used across upb.
84 namespace upb {
184 * - in C++: upb::upcast(foo) along with implicit conversions
186 * Downcasts are not provided, but upb/def.h defines downcasts for upb::Def. */
207 namespace upb { \
227 namespace upb { \
279 namespace upb {
287 * upb::Def* def = GetDef();
289 * upb::MessgeDef* md = upb::down_cast<upb::MessageDef>(def);
292 * only downcast from a upb::Def to a specific Def type). */
299 * upb::Def* def = GetDef();
301 * upb::MessgeDef* md = upb::down_cast<upb::MessageDef>(def);
304 * can only downcast from a upb::Def to a specific Def type).. */
310 * upb::MessageDef* md = GetDef();
312 * upb::Def* def = upb::upcast(md);
319 * upb::MessageDef* md = GetDef();
320 * upb::upcast_to<upb::Def>(md)->MethodOnDef();
326 /* PointerBase<T>: implementation detail of upb::upcast().
352 /* upb::ErrorSpace ************************************************************/
354 /* A upb::ErrorSpace represents some domain of possible error values. This lets
355 * upb::Status attach specific error codes to operations, like POSIX/C errno,
359 * NOTE: upb::ErrorSpace is currently not used and should be considered
360 * experimental. It is important primarily in cases where upb is performing
361 * I/O, but upb doesn't currently have any components that do this. */
363 UPB_DECLARE_TYPE(upb::ErrorSpace, upb_errorspace)
366 class upb::ErrorSpace {
374 /* upb::Status ****************************************************************/
376 /* upb::Status represents a success or failure status and error message.
379 UPB_DECLARE_TYPE(upb::Status, upb_status)
404 class upb::Status {
456 /* Errors raised by upb that we want to be able to detect programmatically. */
466 * core upb. Other error spaces should be defined in other, platform-specific
472 /** upb::Allocator ************************************************************/
474 /* A upb::Allocator is a possibly-stateful allocator object.
479 UPB_DECLARE_TYPE(upb::Allocator, upb_alloc)
489 class upb::Allocator UPB_FINAL {
518 /* The global allocator used by upb. Uses the standard malloc()/free(). */
539 /* upb::Arena *****************************************************************/
541 /* upb::Arena is a specific allocator implementation that uses arena allocation.
547 * A upb::Arena is *not* thread-safe.
550 * upb::Allocator interface, but it would not be as efficient for the
552 UPB_DECLARE_TYPE(upb::Arena, upb_arena)
573 class upb::Arena {
649 /* upb::Environment ***********************************************************/
651 /* A upb::Environment provides a means for injecting malloc and an
663 UPB_DECLARE_TYPE(upb::Environment, upb_env)
695 class upb::Environment {
739 /* upb::InlinedArena **********************************************************/
740 /* upb::InlinedEnvironment ****************************************************/
742 /* upb::InlinedArena and upb::InlinedEnvironment seed their arenas with a
750 template <int N> class upb::InlinedArena : public upb::Arena {
761 template <int N> class upb::InlinedEnvironment : public upb::Environment {
1332 namespace upb {
1338 UPB_DECLARE_TYPE(upb::RefCounted, upb_refcounted)
1344 class upb::RefCounted {
1369 UPB_DISALLOW_POD_OPS(RefCounted, upb::RefCounted)
1446 return upb::upcast_to<const upb::RefCounted>(this)->IsFrozen(); \
1449 return upb::upcast_to<const upb::RefCounted>(this)->Ref(owner); \
1452 return upb::upcast_to<const upb::RefCounted>(this)->Unref(owner); \
1455 return upb::upcast_to<const upb::RefCounted>(this)->DonateRef(from, to); \
1458 return upb::upcast_to<const upb::RefCounted>(this)->CheckRef(owner); \
1461 /* Internal-to-upb Interface **************************************************/
1522 namespace upb {
1538 } /* namespace upb */
1542 /* upb::reffed_ptr ************************************************************/
1548 /* Provides RAII semantics for upb refcounted objects. Each reffed_ptr owns a
1550 template <class T> class upb::reffed_ptr {
1557 : ptr_(upb::upcast(val)) {
1568 : ptr_(upb::upcast(other.get())) {
1573 : ptr_(upb::upcast(other.get())) {
1623 return reffed_ptr<U>(upb::down_cast<U*>(get()));
1628 return reffed_ptr<U>(upb::dyn_cast<U*>(get()));
1653 namespace upb {
1663 UPB_DECLARE_DERIVED_TYPE(upb::Def, upb::RefCounted, upb_def, upb_refcounted)
1664 UPB_DECLARE_DERIVED_TYPE(upb::OneofDef, upb::RefCounted, upb_oneofdef,
1666 UPB_DECLARE_DERIVED_TYPE(upb::FileDef, upb::RefCounted, upb_filedef,
1679 /* upb::Def: base class for top-level defs ***********************************/
1695 /* The base class of all defs. Its base is upb::RefCounted (use upb::upcast()
1697 class upb::Def {
1703 /* upb::RefCounted methods like Ref()/Unref(). */
1718 bool set_full_name(const char* fullname, upb::Status* s);
1719 bool set_full_name(const std::string &fullname, upb::Status* s);
1741 UPB_DISALLOW_POD_OPS(Def, upb::Def)
1767 /* upb::Def casts *************************************************************/
1771 namespace upb { \
1797 } /* namespace upb */
1823 UPB_DEFINE_CLASS2(cppname, upb::Def, upb::RefCounted, cppmethods, \
1828 UPB_DECLARE_DERIVED_TYPE2(cppname, upb::Def, upb::RefCounted, \
1832 UPB_DECLARE_DEF_TYPE(upb::FieldDef, fielddef, FIELD)
1833 UPB_DECLARE_DEF_TYPE(upb::MessageDef, msgdef, MSG)
1834 UPB_DECLARE_DEF_TYPE(upb::EnumDef, enumdef, ENUM)
1841 /* upb::FieldDef **************************************************************/
1912 * Its base class is upb::Def (use upb::upcast() to convert). */
1913 class upb::FieldDef {
1943 /* upb::RefCounted methods like Ref()/Unref(). */
1946 /* Functionality from upb::Def. */
2083 * upb::MessageDef or upb::EnumDef that defines their type. Note that when
2106 bool set_full_name(const char* fullname, upb::Status* s);
2107 bool set_full_name(const std::string& fullname, upb::Status* s);
2138 bool set_number(uint32_t number, upb::Status* s);
2139 bool set_name(const char* name, upb::Status* s);
2140 bool set_name(const std::string& name, upb::Status* s);
2145 bool set_json_name(const char* json_name, upb::Status* s);
2146 bool set_json_name(const std::string& name, upb::Status* s);
2153 bool set_tag_delimited(bool tag_delimited, upb::Status* s);
2173 * upb::Def*) or symbolically. Symbolic refs must be resolved before the
2174 * containing msgdef can be frozen (see upb_resolve() above). upb always
2188 UPB_DISALLOW_POD_OPS(FieldDef, upb::FieldDef)
2288 /* upb::MessageDef ************************************************************/
2301 * Its base class is upb::Def (use upb::upcast() to convert). */
2302 class upb::MessageDef {
2307 /* upb::RefCounted methods like Ref()/Unref(). */
2310 /* Functionality from upb::Def. */
2318 * Messages with cycles must be frozen as a batch using upb::Def::Freeze(). */
2535 UPB_DISALLOW_POD_OPS(MessageDef, upb::MessageDef)
2647 /* upb::EnumDef ***************************************************************/
2653 /* Class that represents an enum. Its base class is upb::Def (convert with
2654 * upb::upcast()). */
2655 class upb::EnumDef {
2660 /* upb::RefCounted methods like Ref()/Unref(). */
2663 /* Functionality from upb::Def. */
2722 UPB_DISALLOW_POD_OPS(EnumDef, upb::EnumDef)
2776 /* upb::OneofDef **************************************************************/
2783 class upb::OneofDef {
2788 /* upb::RefCounted methods like Ref()/Unref(). */
2880 UPB_DISALLOW_POD_OPS(OneofDef, upb::OneofDef)
2929 /* upb::FileDef ***************************************************************/
2937 class upb::FileDef {
2942 /* upb::RefCounted methods like Ref()/Unref(). */
2993 UPB_DISALLOW_POD_OPS(FileDef, upb::FileDef)
3050 namespace upb {
3670 } /* namespace upb */
3676 ** and NOT stable across versions of upb.
3678 ** The only reason they are declared here and not in .c files is to allow upb
3684 ** exact same version of upb that they are linking against.
3755 uint32_t selector_base; /* Used to index into a upb::Handlers table. */
3862 ** upb::Handlers (upb_handlers)
3872 ** the most important feature of upb, because it allows parsers and serializers
3884 namespace upb {
3891 } /* namespace upb */
3894 UPB_DECLARE_TYPE(upb::BufferHandle, upb_bufhandle)
3895 UPB_DECLARE_TYPE(upb::BytesHandler, upb_byteshandler)
3896 UPB_DECLARE_TYPE(upb::HandlerAttributes, upb_handlerattr)
3897 UPB_DECLARE_DERIVED_TYPE(upb::Handlers, upb::RefCounted,
3910 * Only needed for the advanced functions in upb::Handlers. */
3962 /* Static selectors for upb::Handlers. */
3967 /* Static selectors for upb::BytesHandler. */
3977 class upb::HandlerAttributes {
4043 class upb::BufferHandle {
4092 /* A upb::Handlers object represents the set of handlers associated with a
4103 class upb::Handlers {
4147 /* Functionality from upb::RefCounted. */
4369 UPB_DISALLOW_POD_OPS(Handlers, upb::Handlers)
4390 namespace upb {
4432 #define UpbMakeHandler(f) upb::MatchFunc(f).template GetFunc<f>()
4435 #define UpbBind(f, d) upb::MatchFunc(f).template GetFunc<f>((d))
4442 #define UpbMakeHandler(f) upb::MatchFunc(f).GetFunc<f>()
4444 #define UpbBind(f, d) upb::MatchFunc(f).GetFunc<f>((d))
4451 #define UpbMakeHandlerT(f) upb::MatchFunc(f).template GetFunc<f>()
4454 #define UpbBindT(f, d) upb::MatchFunc(f).template GetFunc<f>((d))
4461 /* The underlying, handler function signature that upb uses internally. */
4485 } /* namespace upb */
4619 class upb::BytesHandler {
4710 * However, few platforms are this strange, and it's unlikely that upb will be
4781 namespace upb {
5673 upb::Handlers* h = this;
5781 } /* namespace upb */
5801 ** upb::Sink (upb_sink)
5802 ** upb::BytesSink (upb_bytessink)
5822 namespace upb {
5829 UPB_DECLARE_TYPE(upb::BufferSource, upb_bufsrc)
5830 UPB_DECLARE_TYPE(upb::BytesSink, upb_bytessink)
5831 UPB_DECLARE_TYPE(upb::Sink, upb_sink)
5835 /* A upb::Sink is an object that binds a upb::Handlers object to some runtime
5868 * independent of any particular upb::Handlers.
5871 class upb::Sink {
5960 class upb::BytesSink {
5990 class upb::BufferSource {
6238 namespace upb {
6323 } /* namespace upb */
6350 namespace upb {
6360 /* If this handler is a shim, returns the corresponding upb::Shim::Data and
6366 } /* namespace upb */
6382 namespace upb {
6391 } /* namespace upb */
6396 ** upb::SymbolTable (upb_symtab)
6413 namespace upb { class SymbolTable; }
6416 UPB_DECLARE_DERIVED_TYPE(upb::SymbolTable, upb::RefCounted,
6427 /* Non-const methods in upb::SymbolTable are NOT thread-safe. */
6428 class upb::SymbolTable {
6445 * Unlike with upb::MessageDef/upb::EnumDef/etc, freezing a SymbolTable is not
6516 UPB_DISALLOW_POD_OPS(SymbolTable, upb::SymbolTable)
6559 namespace upb {
6585 } /* namespace upb */
6590 ** upb::descriptor::Reader (upb_descreader)
6592 ** Provides a way of building upb::Defs from data in descriptor.proto format.
6600 namespace upb {
6604 } /* namespace upb */
6607 UPB_DECLARE_TYPE(upb::descriptor::Reader, upb_descreader)
6612 * and use it to build upb::Defs corresponding to that schema. */
6613 class upb::descriptor::Reader {
6636 UPB_DISALLOW_POD_OPS(Reader, upb::descriptor::Reader)
6654 namespace upb {
6667 } /* namespace upb */
6677 /* This file was generated by upbc (the upb compiler) from the input
6680 * upb/descriptor/descriptor.proto
6970 class DescriptorProto : public ::upb::reffed_ptr<const ::upb::MessageDef> {
6972 DescriptorProto(const ::upb::MessageDef* m, const void *ref_donor = NULL)
6978 const ::upb::MessageDef* m = upbdefs_google_protobuf_DescriptorProto_get(&m);
6982 class ExtensionRange : public ::upb::reffed_ptr<const ::upb::MessageDef> {
6984 ExtensionRange(const ::upb::MessageDef* m, const void *ref_donor = NULL)
6990 const ::upb::MessageDef* m = upbdefs_google_protobuf_DescriptorProto_ExtensionRange_get(&m);
6995 class ReservedRange : public ::upb::reffed_ptr<const ::upb::MessageDef> {
6997 ReservedRange(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7003 const ::upb::MessageDef* m = upbdefs_google_protobuf_DescriptorProto_ReservedRange_get(&m);
7009 class EnumDescriptorProto : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7011 EnumDescriptorProto(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7017 const ::upb::MessageDef* m = upbdefs_google_protobuf_EnumDescriptorProto_get(&m);
7022 class EnumOptions : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7024 EnumOptions(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7030 const ::upb::MessageDef* m = upbdefs_google_protobuf_EnumOptions_get(&m);
7035 class EnumValueDescriptorProto : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7037 EnumValueDescriptorProto(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7043 const ::upb::MessageDef* m = upbdefs_google_protobuf_EnumValueDescriptorProto_get(&m);
7048 class EnumValueOptions : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7050 EnumValueOptions(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7056 const ::upb::MessageDef* m = upbdefs_google_protobuf_EnumValueOptions_get(&m);
7061 class FieldDescriptorProto : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7063 FieldDescriptorProto(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7069 const ::upb::MessageDef* m = upbdefs_google_protobuf_FieldDescriptorProto_get(&m);
7073 class Label : public ::upb::reffed_ptr<const ::upb::EnumDef> {
7075 Label(const ::upb::EnumDef* e, const void *ref_donor = NULL)
7080 const ::upb::EnumDef* e = upbdefs_google_protobuf_FieldDescriptorProto_Label_get(&e);
7085 class Type : public ::upb::reffed_ptr<const ::upb::EnumDef> {
7087 Type(const ::upb::EnumDef* e, const void *ref_donor = NULL)
7092 const ::upb::EnumDef* e = upbdefs_google_protobuf_FieldDescriptorProto_Type_get(&e);
7098 class FieldOptions : public ::upb::reffed_ptr<const ::upb
7100 FieldOptions(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7106 const ::upb::MessageDef* m = upbdefs_google_protobuf_FieldOptions_get(&m);
7110 class CType : public ::upb::reffed_ptr<const ::upb::EnumDef> {
7112 CType(const ::upb::EnumDef* e, const void *ref_donor = NULL)
7117 const ::upb::EnumDef* e = upbdefs_google_protobuf_FieldOptions_CType_get(&e);
7122 class JSType : public ::upb::reffed_ptr<const ::upb::EnumDef> {
7124 JSType(const ::upb::EnumDef* e, const void *ref_donor = NULL)
7129 const ::upb::EnumDef* e = upbdefs_google_protobuf_FieldOptions_JSType_get(&e);
7135 class FileDescriptorProto : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7137 FileDescriptorProto(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7143 const ::upb::MessageDef* m = upbdefs_google_protobuf_FileDescriptorProto_get(&m);
7148 class FileDescriptorSet : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7150 FileDescriptorSet(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7156 const ::upb::MessageDef* m = upbdefs_google_protobuf_FileDescriptorSet_get(&m);
7161 class FileOptions : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7163 FileOptions(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7169 const ::upb::MessageDef* m = upbdefs_google_protobuf_FileOptions_get(&m);
7173 class OptimizeMode : public ::upb::reffed_ptr<const ::upb::EnumDef> {
7175 OptimizeMode(const ::upb::EnumDef* e, const void *ref_donor = NULL)
7180 const ::upb::EnumDef* e = upbdefs_google_protobuf_FileOptions_OptimizeMode_get(&e);
7186 class MessageOptions : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7188 MessageOptions(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7194 const ::upb::MessageDef* m = upbdefs_google_protobuf_MessageOptions_get(&m);
7199 class MethodDescriptorProto : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7201 MethodDescriptorProto(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7207 const ::upb::MessageDef* m = upbdefs_google_protobuf_MethodDescriptorProto_get(&m);
7212 class MethodOptions : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7214 MethodOptions(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7220 const ::upb::MessageDef* m = upbdefs_google_protobuf_MethodOptions_get(&m);
7225 class OneofDescriptorProto : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7227 OneofDescriptorProto(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7233 const ::upb::MessageDef* m = upbdefs_google_protobuf_OneofDescriptorProto_get(&m);
7238 class ServiceDescriptorProto : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7240 ServiceDescriptorProto(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7246 const ::upb::MessageDef* m = upbdefs_google_protobuf_ServiceDescriptorProto_get(&m);
7251 class ServiceOptions : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7253 ServiceOptions(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7259 const ::upb::MessageDef* m = upbdefs_google_protobuf_ServiceOptions_get(&m);
7264 class SourceCodeInfo : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7266 SourceCodeInfo(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7272 const ::upb::MessageDef* m = upbdefs_google_protobuf_SourceCodeInfo_get(&m);
7276 class Location : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7278 Location(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7284 const ::upb::MessageDef* m = upbdefs_google_protobuf_SourceCodeInfo_Location_get(&m);
7290 class UninterpretedOption : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7292 UninterpretedOption(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7298 const ::upb::MessageDef* m = upbdefs_google_protobuf_UninterpretedOption_get(&m);
7302 class NamePart : public ::upb::reffed_ptr<const ::upb::MessageDef> {
7304 NamePart(const ::upb::MessageDef* m, const void *ref_donor = NULL)
7310 const ::upb::MessageDef* m = upbdefs_google_protobuf_UninterpretedOption_NamePart_get(&m);
7331 ** upb::pb::Decoder
7349 namespace upb {
7356 } /* namespace upb */
7359 UPB_DECLARE_TYPE(upb::pb::CodeCache, upb_pbcodecache)
7360 UPB_DECLARE_TYPE(upb::pb::Decoder, upb_pbdecoder)
7361 UPB_DECLARE_TYPE(upb::pb::DecoderMethodOptions, upb_pbdecodermethodopts)
7363 UPB_DECLARE_DERIVED_TYPE(upb::pb::DecoderMethod, upb::RefCounted,
7378 class upb::pb::DecoderMethodOptions {
7399 class upb::pb::DecoderMethod {
7401 /* Include base methods from upb::ReferenceCounted. */
7420 UPB_DISALLOW_POD_OPS(DecoderMethod, upb::pb::DecoderMethod)
7435 class upb::pb::Decoder {
7475 UPB_DISALLOW_POD_OPS(Decoder, upb::pb::Decoder)
7488 class upb::pb::CodeCache {
7569 namespace upb {
7636 } /* namespace upb */
7644 namespace upb {
7648 } /* namespace upb */
7650 UPB_DECLARE_DERIVED_TYPE(upb::pb::MessageGroup, upb::RefCounted,
7666 * Arg for all of these is the upb selector for this field. */
7754 * setting it high will cause the upb::pb::Decoder object to be larger.
8127 ** upb::pb::Encoder (upb_pb_encoder)
8142 namespace upb {
8146 } /* namespace upb */
8149 UPB_DECLARE_TYPE(upb::pb::Encoder, upb_pb_encoder)
8153 /* upb::pb::Encoder ***********************************************************/
8163 class upb::pb::Encoder {
8179 UPB_DISALLOW_POD_OPS(Encoder, upb::pb::Encoder)
8196 namespace upb {
8206 const upb::MessageDef *md) {
8211 } /* namespace upb */
8217 ** upb's core components like upb_decoder and upb_msg are carefully designed to
8225 ** compromise is that this file drags in almost all of upb as a dependency,
8227 ** upb.
8256 namespace upb {
8282 } /* namespace upb */
8288 ** upb::pb::TextPrinter (upb_textprinter)
8298 namespace upb {
8302 } /* namespace upb */
8305 UPB_DECLARE_TYPE(upb::pb::TextPrinter, upb_textprinter)
8309 class upb::pb::TextPrinter {
8313 static TextPrinter *Create(Environment *env, const upb::Handlers *handlers,
8342 namespace upb {
8345 const upb::Handlers *handlers,
8361 } /* namespace upb */
8367 ** upb::json::Parser (upb_json_parser)
8378 namespace upb {
8383 } /* namespace upb */
8386 UPB_DECLARE_TYPE(upb::json::Parser, upb_json_parser)
8387 UPB_DECLARE_DERIVED_TYPE(upb::json::ParserMethod, upb::RefCounted,
8390 /* upb::json::Parser **********************************************************/
8402 class upb::json::Parser {
8410 UPB_DISALLOW_POD_OPS(Parser, upb::json::Parser)
8413 class upb::json::ParserMethod {
8415 /* Include base methods from upb::ReferenceCounted. */
8419 static reffed_ptr<const ParserMethod> New(const upb::MessageDef* md);
8430 UPB_DISALLOW_POD_OPS(ParserMethod, upb::json::ParserMethod)
8456 namespace upb {
8480 } /* namespace upb */
8487 ** upb::json::Printer
8497 namespace upb {
8501 } /* namespace upb */
8504 UPB_DECLARE_TYPE(upb::json::Printer, upb_json_printer)
8507 /* upb::json::Printer *********************************************************/
8514 class upb::json::Printer {
8516 static Printer* Create(Environment* env, const upb::Handlers* handlers,
8526 static reffed_ptr<const Handlers> NewHandlers(const upb::MessageDef* md,
8532 UPB_DISALLOW_POD_OPS(Printer, upb::json::Printer)
8551 namespace upb {
8553 inline Printer* Printer::Create(Environment* env, const upb::Handlers* handlers,
8559 const upb::MessageDef *md, bool preserve_proto_fieldnames) {
8565 } /* namespace upb */