#include "upb/json_decode.h"
#include <errno.h>
#include <float.h>
#include <inttypes.h>
#include <limits.h>
#include <math.h>
#include <setjmp.h>
#include <stdlib.h>
#include <string.h>
#include "upb/encode.h"
#include "upb/reflection.h"
#include "upb/port_def.inc"
jsondec;
enum { … };
static void jsondec_wellknown(jsondec* d, upb_Message* msg,
const upb_MessageDef* m);
static upb_MessageValue jsondec_value(jsondec* d, const upb_FieldDef* f);
static void jsondec_wellknownvalue(jsondec* d, upb_Message* msg,
const upb_MessageDef* m);
static void jsondec_object(jsondec* d, upb_Message* msg,
const upb_MessageDef* m);
static bool jsondec_streql(upb_StringView str, const char* lit) { … }
static bool jsondec_isnullvalue(const upb_FieldDef* f) { … }
static bool jsondec_isvalue(const upb_FieldDef* f) { … }
UPB_NORETURN static void jsondec_err(jsondec* d, const char* msg) { … }
UPB_PRINTF(2, 3)
UPB_NORETURN static void jsondec_errf(jsondec* d, const char* fmt, ...) { … }
static void jsondec_skipws(jsondec* d) { … }
static bool jsondec_tryparsech(jsondec* d, char ch) { … }
static void jsondec_parselit(jsondec* d, const char* lit) { … }
static void jsondec_wsch(jsondec* d, char ch) { … }
static void jsondec_true(jsondec* d) { … }
static void jsondec_false(jsondec* d) { … }
static void jsondec_null(jsondec* d) { … }
static void jsondec_entrysep(jsondec* d) { … }
static int jsondec_rawpeek(jsondec* d) { … }
static int jsondec_peek(jsondec* d) { … }
static void jsondec_push(jsondec* d) { … }
static bool jsondec_seqnext(jsondec* d, char end_ch) { … }
static void jsondec_arrstart(jsondec* d) { … }
static void jsondec_arrend(jsondec* d) { … }
static bool jsondec_arrnext(jsondec* d) { … }
static void jsondec_objstart(jsondec* d) { … }
static void jsondec_objend(jsondec* d) { … }
static bool jsondec_objnext(jsondec* d) { … }
static bool jsondec_tryskipdigits(jsondec* d) { … }
static void jsondec_skipdigits(jsondec* d) { … }
static double jsondec_number(jsondec* d) { … }
static char jsondec_escape(jsondec* d) { … }
static uint32_t jsondec_codepoint(jsondec* d) { … }
static size_t jsondec_unicode(jsondec* d, char* out) { … }
static void jsondec_resize(jsondec* d, char** buf, char** end, char** buf_end) { … }
static upb_StringView jsondec_string(jsondec* d) { … }
static void jsondec_skipval(jsondec* d) { … }
static unsigned int jsondec_base64_tablelookup(const char ch) { … }
static char* jsondec_partialbase64(jsondec* d, const char* ptr, const char* end,
char* out) { … }
static size_t jsondec_base64(jsondec* d, upb_StringView str) { … }
static const char* jsondec_buftouint64(jsondec* d, const char* ptr,
const char* end, uint64_t* val) { … }
static const char* jsondec_buftoint64(jsondec* d, const char* ptr,
const char* end, int64_t* val) { … }
static uint64_t jsondec_strtouint64(jsondec* d, upb_StringView str) { … }
static int64_t jsondec_strtoint64(jsondec* d, upb_StringView str) { … }
static upb_MessageValue jsondec_int(jsondec* d, const upb_FieldDef* f) { … }
static upb_MessageValue jsondec_uint(jsondec* d, const upb_FieldDef* f) { … }
static upb_MessageValue jsondec_double(jsondec* d, const upb_FieldDef* f) { … }
static upb_MessageValue jsondec_strfield(jsondec* d, const upb_FieldDef* f) { … }
static upb_MessageValue jsondec_enum(jsondec* d, const upb_FieldDef* f) { … }
static upb_MessageValue jsondec_bool(jsondec* d, const upb_FieldDef* f) { … }
static void jsondec_array(jsondec* d, upb_Message* msg, const upb_FieldDef* f) { … }
static void jsondec_map(jsondec* d, upb_Message* msg, const upb_FieldDef* f) { … }
static void jsondec_tomsg(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static upb_MessageValue jsondec_msg(jsondec* d, const upb_FieldDef* f) { … }
static void jsondec_field(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static void jsondec_object(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static upb_MessageValue jsondec_value(jsondec* d, const upb_FieldDef* f) { … }
static int jsondec_tsdigits(jsondec* d, const char** ptr, size_t digits,
const char* after) { … }
static int jsondec_nanos(jsondec* d, const char** ptr, const char* end) { … }
int jsondec_epochdays(int y, int m, int d) { … }
static int64_t jsondec_unixtime(int y, int m, int d, int h, int min, int s) { … }
static void jsondec_timestamp(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static void jsondec_duration(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static void jsondec_listvalue(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static void jsondec_struct(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static void jsondec_wellknownvalue(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static upb_StringView jsondec_mask(jsondec* d, const char* buf,
const char* end) { … }
static void jsondec_fieldmask(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static void jsondec_anyfield(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static const upb_MessageDef* jsondec_typeurl(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static void jsondec_any(jsondec* d, upb_Message* msg, const upb_MessageDef* m) { … }
static void jsondec_wrapper(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
static void jsondec_wellknown(jsondec* d, upb_Message* msg,
const upb_MessageDef* m) { … }
bool upb_JsonDecode(const char* buf, size_t size, upb_Message* msg,
const upb_MessageDef* m, const upb_DefPool* symtab,
int options, upb_Arena* arena, upb_Status* status) { … }