|
|
|
/*
|
|
|
|
** upb::pb::TextPrinter (upb_textprinter)
|
|
|
|
**
|
|
|
|
** Handlers for writing to protobuf text format.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef UPB_TEXT_H_
|
|
|
|
#define UPB_TEXT_H_
|
|
|
|
|
|
|
|
#include "upb/sink.h"
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
namespace upb {
|
|
|
|
namespace pb {
|
|
|
|
class TextPrinterPtr;
|
|
|
|
} /* namespace pb */
|
|
|
|
} /* namespace upb */
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* upb_textprinter ************************************************************/
|
|
|
|
|
|
|
|
struct upb_textprinter;
|
|
|
|
typedef struct upb_textprinter upb_textprinter;
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* C API. */
|
|
|
|
upb_textprinter *upb_textprinter_create(upb_arena *arena, const upb_handlers *h,
|
|
|
|
upb_bytessink output);
|
|
|
|
void upb_textprinter_setsingleline(upb_textprinter *p, bool single_line);
|
|
|
|
upb_sink upb_textprinter_input(upb_textprinter *p);
|
|
|
|
upb_handlercache *upb_textprinter_newcache();
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
} /* extern "C" */
|
|
|
|
|
|
|
|
class upb::pb::TextPrinterPtr {
|
|
|
|
public:
|
|
|
|
TextPrinterPtr(upb_textprinter* ptr) : ptr_(ptr) {}
|
|
|
|
|
|
|
|
/* The given handlers must have come from NewHandlers(). It must outlive the
|
|
|
|
* TextPrinter. */
|
|
|
|
static TextPrinterPtr Create(Arena *arena, upb::HandlersPtr *handlers,
|
|
|
|
BytesSink output) {
|
|
|
|
return TextPrinterPtr(
|
|
|
|
upb_textprinter_create(arena->ptr(), handlers->ptr(), output.sink()));
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetSingleLineMode(bool single_line) {
|
|
|
|
upb_textprinter_setsingleline(ptr_, single_line);
|
|
|
|
}
|
|
|
|
|
|
|
|
Sink input() { return upb_textprinter_input(ptr_); }
|
|
|
|
|
|
|
|
/* If handler caching becomes a requirement we can add a code cache as in
|
|
|
|
* decoder.h */
|
|
|
|
static HandlerCache NewCache() {
|
|
|
|
return HandlerCache(upb_textprinter_newcache());
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
upb_textprinter* ptr_;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* UPB_TEXT_H_ */
|