// DO NOT EDIT! // Code generated by ffjson // source: benchmark.go // DO NOT EDIT! package benchmark import ( "bytes" "encoding/json" "fmt" fflib "github.com/pquerna/ffjson/fflib/v1" ) func (mj *CBAvatar) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *CBAvatar) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"Url":`) fflib.WriteJsonString(buf, string(mj.Url)) buf.WriteByte('}') return nil } const ( ffj_t_CBAvatarbase = iota ffj_t_CBAvatarno_such_key ffj_t_CBAvatar_Url ) var ffj_key_CBAvatar_Url = []byte("Url") func (uj *CBAvatar) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *CBAvatar) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_CBAvatarbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_CBAvatarno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'U': if bytes.Equal(ffj_key_CBAvatar_Url, kn) { currentKey = ffj_t_CBAvatar_Url state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffj_key_CBAvatar_Url, kn) { currentKey = ffj_t_CBAvatar_Url state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_CBAvatarno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_CBAvatar_Url: goto handle_Url case ffj_t_CBAvatarno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Url: /* handler: uj.Url type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.Url = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *CBGithub) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *CBGithub) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"Followers":`) fflib.FormatBits2(buf, uint64(mj.Followers), 10, mj.Followers < 0) buf.WriteByte('}') return nil } const ( ffj_t_CBGithubbase = iota ffj_t_CBGithubno_such_key ffj_t_CBGithub_Followers ) var ffj_key_CBGithub_Followers = []byte("Followers") func (uj *CBGithub) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *CBGithub) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_CBGithubbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_CBGithubno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'F': if bytes.Equal(ffj_key_CBGithub_Followers, kn) { currentKey = ffj_t_CBGithub_Followers state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffj_key_CBGithub_Followers, kn) { currentKey = ffj_t_CBGithub_Followers state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_CBGithubno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_CBGithub_Followers: goto handle_Followers case ffj_t_CBGithubno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Followers: /* handler: uj.Followers type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } uj.Followers = int(tval) } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *CBGravatar) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *CBGravatar) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"Avatars":`) if mj.Avatars != nil { buf.WriteString(`[`) for i, v := range mj.Avatars { if i != 0 { buf.WriteString(`,`) } { if v == nil { buf.WriteString("null") return nil } err = v.MarshalJSONBuf(buf) if err != nil { return err } } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteByte('}') return nil } const ( ffj_t_CBGravatarbase = iota ffj_t_CBGravatarno_such_key ffj_t_CBGravatar_Avatars ) var ffj_key_CBGravatar_Avatars = []byte("Avatars") func (uj *CBGravatar) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *CBGravatar) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_CBGravatarbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_CBGravatarno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'A': if bytes.Equal(ffj_key_CBGravatar_Avatars, kn) { currentKey = ffj_t_CBGravatar_Avatars state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffj_key_CBGravatar_Avatars, kn) { currentKey = ffj_t_CBGravatar_Avatars state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_CBGravatarno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_CBGravatar_Avatars: goto handle_Avatars case ffj_t_CBGravatarno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Avatars: /* handler: uj.Avatars type=[]*benchmark.CBAvatar kind=slice quoted=false*/ { { if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) } } if tok == fflib.FFTok_null { uj.Avatars = nil } else { uj.Avatars = make([]*CBAvatar, 0) wantVal := true for { var tmp_uj__Avatars *CBAvatar tok = fs.Scan() if tok == fflib.FFTok_error { goto tokerror } if tok == fflib.FFTok_right_brace { break } if tok == fflib.FFTok_comma { if wantVal == true { // TODO(pquerna): this isn't an ideal error message, this handles // things like [,,,] as an array value. return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) } continue } else { wantVal = true } /* handler: tmp_uj__Avatars type=*benchmark.CBAvatar kind=ptr quoted=false*/ { if tok == fflib.FFTok_null { tmp_uj__Avatars = nil state = fflib.FFParse_after_value goto mainparse } if tmp_uj__Avatars == nil { tmp_uj__Avatars = new(CBAvatar) } err = tmp_uj__Avatars.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } state = fflib.FFParse_after_value } uj.Avatars = append(uj.Avatars, tmp_uj__Avatars) wantVal = false } } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *CBName) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *CBName) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"FullName":`) fflib.WriteJsonString(buf, string(mj.FullName)) buf.WriteByte('}') return nil } const ( ffj_t_CBNamebase = iota ffj_t_CBNameno_such_key ffj_t_CBName_FullName ) var ffj_key_CBName_FullName = []byte("FullName") func (uj *CBName) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *CBName) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_CBNamebase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_CBNameno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'F': if bytes.Equal(ffj_key_CBName_FullName, kn) { currentKey = ffj_t_CBName_FullName state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffj_key_CBName_FullName, kn) { currentKey = ffj_t_CBName_FullName state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_CBNameno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_CBName_FullName: goto handle_FullName case ffj_t_CBNameno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_FullName: /* handler: uj.FullName type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.FullName = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *CBPerson) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *CBPerson) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err if mj.Name != nil { buf.WriteString(`{"Name":`) { err = mj.Name.MarshalJSONBuf(buf) if err != nil { return err } } } else { buf.WriteString(`{"Name":null`) } if mj.Github != nil { buf.WriteString(`,"Github":`) { err = mj.Github.MarshalJSONBuf(buf) if err != nil { return err } } } else { buf.WriteString(`,"Github":null`) } if mj.Gravatar != nil { buf.WriteString(`,"Gravatar":`) { err = mj.Gravatar.MarshalJSONBuf(buf) if err != nil { return err } } } else { buf.WriteString(`,"Gravatar":null`) } buf.WriteByte('}') return nil } const ( ffj_t_CBPersonbase = iota ffj_t_CBPersonno_such_key ffj_t_CBPerson_Name ffj_t_CBPerson_Github ffj_t_CBPerson_Gravatar ) var ffj_key_CBPerson_Name = []byte("Name") var ffj_key_CBPerson_Github = []byte("Github") var ffj_key_CBPerson_Gravatar = []byte("Gravatar") func (uj *CBPerson) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *CBPerson) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_CBPersonbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_CBPersonno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'G': if bytes.Equal(ffj_key_CBPerson_Github, kn) { currentKey = ffj_t_CBPerson_Github state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffj_key_CBPerson_Gravatar, kn) { currentKey = ffj_t_CBPerson_Gravatar state = fflib.FFParse_want_colon goto mainparse } case 'N': if bytes.Equal(ffj_key_CBPerson_Name, kn) { currentKey = ffj_t_CBPerson_Name state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffj_key_CBPerson_Gravatar, kn) { currentKey = ffj_t_CBPerson_Gravatar state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_CBPerson_Github, kn) { currentKey = ffj_t_CBPerson_Github state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_CBPerson_Name, kn) { currentKey = ffj_t_CBPerson_Name state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_CBPersonno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_CBPerson_Name: goto handle_Name case ffj_t_CBPerson_Github: goto handle_Github case ffj_t_CBPerson_Gravatar: goto handle_Gravatar case ffj_t_CBPersonno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Name: /* handler: uj.Name type=benchmark.CBName kind=struct quoted=false*/ { if tok == fflib.FFTok_null { uj.Name = nil state = fflib.FFParse_after_value goto mainparse } if uj.Name == nil { uj.Name = new(CBName) } err = uj.Name.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse handle_Github: /* handler: uj.Github type=benchmark.CBGithub kind=struct quoted=false*/ { if tok == fflib.FFTok_null { uj.Github = nil state = fflib.FFParse_after_value goto mainparse } if uj.Github == nil { uj.Github = new(CBGithub) } err = uj.Github.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse handle_Gravatar: /* handler: uj.Gravatar type=benchmark.CBGravatar kind=struct quoted=false*/ { if tok == fflib.FFTok_null { uj.Gravatar = nil state = fflib.FFParse_after_value goto mainparse } if uj.Gravatar == nil { uj.Gravatar = new(CBGravatar) } err = uj.Gravatar.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *DSTopic) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *DSTopic) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"Id":`) fflib.FormatBits2(buf, uint64(mj.Id), 10, mj.Id < 0) buf.WriteString(`,"Slug":`) fflib.WriteJsonString(buf, string(mj.Slug)) buf.WriteByte('}') return nil } const ( ffj_t_DSTopicbase = iota ffj_t_DSTopicno_such_key ffj_t_DSTopic_Id ffj_t_DSTopic_Slug ) var ffj_key_DSTopic_Id = []byte("Id") var ffj_key_DSTopic_Slug = []byte("Slug") func (uj *DSTopic) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *DSTopic) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_DSTopicbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_DSTopicno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'I': if bytes.Equal(ffj_key_DSTopic_Id, kn) { currentKey = ffj_t_DSTopic_Id state = fflib.FFParse_want_colon goto mainparse } case 'S': if bytes.Equal(ffj_key_DSTopic_Slug, kn) { currentKey = ffj_t_DSTopic_Slug state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffj_key_DSTopic_Slug, kn) { currentKey = ffj_t_DSTopic_Slug state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_DSTopic_Id, kn) { currentKey = ffj_t_DSTopic_Id state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_DSTopicno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_DSTopic_Id: goto handle_Id case ffj_t_DSTopic_Slug: goto handle_Slug case ffj_t_DSTopicno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Id: /* handler: uj.Id type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } uj.Id = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Slug: /* handler: uj.Slug type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.Slug = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *DSTopicsList) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *DSTopicsList) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"Topics":`) if mj.Topics != nil { buf.WriteString(`[`) for i, v := range mj.Topics { if i != 0 { buf.WriteString(`,`) } { if v == nil { buf.WriteString("null") return nil } err = v.MarshalJSONBuf(buf) if err != nil { return err } } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteString(`,"MoreTopicsUrl":`) fflib.WriteJsonString(buf, string(mj.MoreTopicsUrl)) buf.WriteByte('}') return nil } const ( ffj_t_DSTopicsListbase = iota ffj_t_DSTopicsListno_such_key ffj_t_DSTopicsList_Topics ffj_t_DSTopicsList_MoreTopicsUrl ) var ffj_key_DSTopicsList_Topics = []byte("Topics") var ffj_key_DSTopicsList_MoreTopicsUrl = []byte("MoreTopicsUrl") func (uj *DSTopicsList) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *DSTopicsList) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_DSTopicsListbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_DSTopicsListno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'M': if bytes.Equal(ffj_key_DSTopicsList_MoreTopicsUrl, kn) { currentKey = ffj_t_DSTopicsList_MoreTopicsUrl state = fflib.FFParse_want_colon goto mainparse } case 'T': if bytes.Equal(ffj_key_DSTopicsList_Topics, kn) { currentKey = ffj_t_DSTopicsList_Topics state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffj_key_DSTopicsList_MoreTopicsUrl, kn) { currentKey = ffj_t_DSTopicsList_MoreTopicsUrl state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffj_key_DSTopicsList_Topics, kn) { currentKey = ffj_t_DSTopicsList_Topics state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_DSTopicsListno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_DSTopicsList_Topics: goto handle_Topics case ffj_t_DSTopicsList_MoreTopicsUrl: goto handle_MoreTopicsUrl case ffj_t_DSTopicsListno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Topics: /* handler: uj.Topics type=[]*benchmark.DSTopic kind=slice quoted=false*/ { { if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) } } if tok == fflib.FFTok_null { uj.Topics = nil } else { uj.Topics = make([]*DSTopic, 0) wantVal := true for { var tmp_uj__Topics *DSTopic tok = fs.Scan() if tok == fflib.FFTok_error { goto tokerror } if tok == fflib.FFTok_right_brace { break } if tok == fflib.FFTok_comma { if wantVal == true { // TODO(pquerna): this isn't an ideal error message, this handles // things like [,,,] as an array value. return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) } continue } else { wantVal = true } /* handler: tmp_uj__Topics type=*benchmark.DSTopic kind=ptr quoted=false*/ { if tok == fflib.FFTok_null { tmp_uj__Topics = nil state = fflib.FFParse_after_value goto mainparse } if tmp_uj__Topics == nil { tmp_uj__Topics = new(DSTopic) } err = tmp_uj__Topics.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } state = fflib.FFParse_after_value } uj.Topics = append(uj.Topics, tmp_uj__Topics) wantVal = false } } } state = fflib.FFParse_after_value goto mainparse handle_MoreTopicsUrl: /* handler: uj.MoreTopicsUrl type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.MoreTopicsUrl = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *DSUser) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *DSUser) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"Username":`) fflib.WriteJsonString(buf, string(mj.Username)) buf.WriteByte('}') return nil } const ( ffj_t_DSUserbase = iota ffj_t_DSUserno_such_key ffj_t_DSUser_Username ) var ffj_key_DSUser_Username = []byte("Username") func (uj *DSUser) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *DSUser) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_DSUserbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_DSUserno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'U': if bytes.Equal(ffj_key_DSUser_Username, kn) { currentKey = ffj_t_DSUser_Username state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffj_key_DSUser_Username, kn) { currentKey = ffj_t_DSUser_Username state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_DSUserno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_DSUser_Username: goto handle_Username case ffj_t_DSUserno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Username: /* handler: uj.Username type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.Username = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *LargePayload) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *LargePayload) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"Users":`) if mj.Users != nil { buf.WriteString(`[`) for i, v := range mj.Users { if i != 0 { buf.WriteString(`,`) } { if v == nil { buf.WriteString("null") return nil } err = v.MarshalJSONBuf(buf) if err != nil { return err } } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } if mj.Topics != nil { buf.WriteString(`,"Topics":`) { err = mj.Topics.MarshalJSONBuf(buf) if err != nil { return err } } } else { buf.WriteString(`,"Topics":null`) } buf.WriteByte('}') return nil } const ( ffj_t_LargePayloadbase = iota ffj_t_LargePayloadno_such_key ffj_t_LargePayload_Users ffj_t_LargePayload_Topics ) var ffj_key_LargePayload_Users = []byte("Users") var ffj_key_LargePayload_Topics = []byte("Topics") func (uj *LargePayload) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *LargePayload) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_LargePayloadbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_LargePayloadno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'T': if bytes.Equal(ffj_key_LargePayload_Topics, kn) { currentKey = ffj_t_LargePayload_Topics state = fflib.FFParse_want_colon goto mainparse } case 'U': if bytes.Equal(ffj_key_LargePayload_Users, kn) { currentKey = ffj_t_LargePayload_Users state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffj_key_LargePayload_Topics, kn) { currentKey = ffj_t_LargePayload_Topics state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffj_key_LargePayload_Users, kn) { currentKey = ffj_t_LargePayload_Users state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_LargePayloadno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_LargePayload_Users: goto handle_Users case ffj_t_LargePayload_Topics: goto handle_Topics case ffj_t_LargePayloadno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Users: /* handler: uj.Users type=[]*benchmark.DSUser kind=slice quoted=false*/ { { if tok != fflib.FFTok_left_brace && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) } } if tok == fflib.FFTok_null { uj.Users = nil } else { uj.Users = make([]*DSUser, 0) wantVal := true for { var tmp_uj__Users *DSUser tok = fs.Scan() if tok == fflib.FFTok_error { goto tokerror } if tok == fflib.FFTok_right_brace { break } if tok == fflib.FFTok_comma { if wantVal == true { // TODO(pquerna): this isn't an ideal error message, this handles // things like [,,,] as an array value. return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) } continue } else { wantVal = true } /* handler: tmp_uj__Users type=*benchmark.DSUser kind=ptr quoted=false*/ { if tok == fflib.FFTok_null { tmp_uj__Users = nil state = fflib.FFParse_after_value goto mainparse } if tmp_uj__Users == nil { tmp_uj__Users = new(DSUser) } err = tmp_uj__Users.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } state = fflib.FFParse_after_value } uj.Users = append(uj.Users, tmp_uj__Users) wantVal = false } } } state = fflib.FFParse_after_value goto mainparse handle_Topics: /* handler: uj.Topics type=benchmark.DSTopicsList kind=struct quoted=false*/ { if tok == fflib.FFTok_null { uj.Topics = nil state = fflib.FFParse_after_value goto mainparse } if uj.Topics == nil { uj.Topics = new(DSTopicsList) } err = uj.Topics.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *MediumPayload) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *MediumPayload) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err if mj.Person != nil { buf.WriteString(`{"Person":`) { err = mj.Person.MarshalJSONBuf(buf) if err != nil { return err } } } else { buf.WriteString(`{"Person":null`) } buf.WriteString(`,"Company":`) /* Falling back. type=map[string]interface {} kind=map */ err = buf.Encode(mj.Company) if err != nil { return err } buf.WriteByte('}') return nil } const ( ffj_t_MediumPayloadbase = iota ffj_t_MediumPayloadno_such_key ffj_t_MediumPayload_Person ffj_t_MediumPayload_Company ) var ffj_key_MediumPayload_Person = []byte("Person") var ffj_key_MediumPayload_Company = []byte("Company") func (uj *MediumPayload) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *MediumPayload) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_MediumPayloadbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_MediumPayloadno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'C': if bytes.Equal(ffj_key_MediumPayload_Company, kn) { currentKey = ffj_t_MediumPayload_Company state = fflib.FFParse_want_colon goto mainparse } case 'P': if bytes.Equal(ffj_key_MediumPayload_Person, kn) { currentKey = ffj_t_MediumPayload_Person state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffj_key_MediumPayload_Company, kn) { currentKey = ffj_t_MediumPayload_Company state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffj_key_MediumPayload_Person, kn) { currentKey = ffj_t_MediumPayload_Person state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_MediumPayloadno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_MediumPayload_Person: goto handle_Person case ffj_t_MediumPayload_Company: goto handle_Company case ffj_t_MediumPayloadno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Person: /* handler: uj.Person type=benchmark.CBPerson kind=struct quoted=false*/ { if tok == fflib.FFTok_null { uj.Person = nil state = fflib.FFParse_after_value goto mainparse } if uj.Person == nil { uj.Person = new(CBPerson) } err = uj.Person.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse handle_Company: /* handler: uj.Company type=map[string]interface {} kind=map quoted=false*/ { { if tok != fflib.FFTok_left_bracket && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for ", tok)) } } if tok == fflib.FFTok_null { uj.Company = nil } else { uj.Company = make(map[string]interface{}, 0) wantVal := true for { var k string var tmp_uj__Company interface{} tok = fs.Scan() if tok == fflib.FFTok_error { goto tokerror } if tok == fflib.FFTok_right_bracket { break } if tok == fflib.FFTok_comma { if wantVal == true { // TODO(pquerna): this isn't an ideal error message, this handles // things like [,,,] as an array value. return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) } continue } else { wantVal = true } /* handler: k type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() k = string(string(outBuf)) } } // Expect ':' after key tok = fs.Scan() if tok != fflib.FFTok_colon { return fs.WrapErr(fmt.Errorf("wanted colon token, but got token: %v", tok)) } tok = fs.Scan() /* handler: tmp_uj__Company type=interface {} kind=interface quoted=false*/ { /* Falling back. type=interface {} kind=interface */ tbuf, err := fs.CaptureField(tok) if err != nil { return fs.WrapErr(err) } err = json.Unmarshal(tbuf, &tmp_uj__Company) if err != nil { return fs.WrapErr(err) } } uj.Company[k] = tmp_uj__Company wantVal = false } } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil } func (mj *SmallPayload) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if mj == nil { buf.WriteString("null") return buf.Bytes(), nil } err := mj.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } func (mj *SmallPayload) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if mj == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"St":`) fflib.FormatBits2(buf, uint64(mj.St), 10, mj.St < 0) buf.WriteString(`,"Sid":`) fflib.FormatBits2(buf, uint64(mj.Sid), 10, mj.Sid < 0) buf.WriteString(`,"Tt":`) fflib.WriteJsonString(buf, string(mj.Tt)) buf.WriteString(`,"Gr":`) fflib.FormatBits2(buf, uint64(mj.Gr), 10, mj.Gr < 0) buf.WriteString(`,"Uuid":`) fflib.WriteJsonString(buf, string(mj.Uuid)) buf.WriteString(`,"Ip":`) fflib.WriteJsonString(buf, string(mj.Ip)) buf.WriteString(`,"Ua":`) fflib.WriteJsonString(buf, string(mj.Ua)) buf.WriteString(`,"Tz":`) fflib.FormatBits2(buf, uint64(mj.Tz), 10, mj.Tz < 0) buf.WriteString(`,"V":`) fflib.FormatBits2(buf, uint64(mj.V), 10, mj.V < 0) buf.WriteByte('}') return nil } const ( ffj_t_SmallPayloadbase = iota ffj_t_SmallPayloadno_such_key ffj_t_SmallPayload_St ffj_t_SmallPayload_Sid ffj_t_SmallPayload_Tt ffj_t_SmallPayload_Gr ffj_t_SmallPayload_Uuid ffj_t_SmallPayload_Ip ffj_t_SmallPayload_Ua ffj_t_SmallPayload_Tz ffj_t_SmallPayload_V ) var ffj_key_SmallPayload_St = []byte("St") var ffj_key_SmallPayload_Sid = []byte("Sid") var ffj_key_SmallPayload_Tt = []byte("Tt") var ffj_key_SmallPayload_Gr = []byte("Gr") var ffj_key_SmallPayload_Uuid = []byte("Uuid") var ffj_key_SmallPayload_Ip = []byte("Ip") var ffj_key_SmallPayload_Ua = []byte("Ua") var ffj_key_SmallPayload_Tz = []byte("Tz") var ffj_key_SmallPayload_V = []byte("V") func (uj *SmallPayload) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } func (uj *SmallPayload) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error = nil currentKey := ffj_t_SmallPayloadbase _ = currentKey tok := fflib.FFTok_init wantedTok := fflib.FFTok_init mainparse: for { tok = fs.Scan() // println(fmt.Sprintf("debug: tok: %v state: %v", tok, state)) if tok == fflib.FFTok_error { goto tokerror } switch state { case fflib.FFParse_map_start: if tok != fflib.FFTok_left_bracket { wantedTok = fflib.FFTok_left_bracket goto wrongtokenerror } state = fflib.FFParse_want_key continue case fflib.FFParse_after_value: if tok == fflib.FFTok_comma { state = fflib.FFParse_want_key } else if tok == fflib.FFTok_right_bracket { goto done } else { wantedTok = fflib.FFTok_comma goto wrongtokenerror } case fflib.FFParse_want_key: // json {} ended. goto exit. woo. if tok == fflib.FFTok_right_bracket { goto done } if tok != fflib.FFTok_string { wantedTok = fflib.FFTok_string goto wrongtokenerror } kn := fs.Output.Bytes() if len(kn) <= 0 { // "" case. hrm. currentKey = ffj_t_SmallPayloadno_such_key state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'G': if bytes.Equal(ffj_key_SmallPayload_Gr, kn) { currentKey = ffj_t_SmallPayload_Gr state = fflib.FFParse_want_colon goto mainparse } case 'I': if bytes.Equal(ffj_key_SmallPayload_Ip, kn) { currentKey = ffj_t_SmallPayload_Ip state = fflib.FFParse_want_colon goto mainparse } case 'S': if bytes.Equal(ffj_key_SmallPayload_St, kn) { currentKey = ffj_t_SmallPayload_St state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffj_key_SmallPayload_Sid, kn) { currentKey = ffj_t_SmallPayload_Sid state = fflib.FFParse_want_colon goto mainparse } case 'T': if bytes.Equal(ffj_key_SmallPayload_Tt, kn) { currentKey = ffj_t_SmallPayload_Tt state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffj_key_SmallPayload_Tz, kn) { currentKey = ffj_t_SmallPayload_Tz state = fflib.FFParse_want_colon goto mainparse } case 'U': if bytes.Equal(ffj_key_SmallPayload_Uuid, kn) { currentKey = ffj_t_SmallPayload_Uuid state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffj_key_SmallPayload_Ua, kn) { currentKey = ffj_t_SmallPayload_Ua state = fflib.FFParse_want_colon goto mainparse } case 'V': if bytes.Equal(ffj_key_SmallPayload_V, kn) { currentKey = ffj_t_SmallPayload_V state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffj_key_SmallPayload_V, kn) { currentKey = ffj_t_SmallPayload_V state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_SmallPayload_Tz, kn) { currentKey = ffj_t_SmallPayload_Tz state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_SmallPayload_Ua, kn) { currentKey = ffj_t_SmallPayload_Ua state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_SmallPayload_Ip, kn) { currentKey = ffj_t_SmallPayload_Ip state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_SmallPayload_Uuid, kn) { currentKey = ffj_t_SmallPayload_Uuid state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_SmallPayload_Gr, kn) { currentKey = ffj_t_SmallPayload_Gr state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffj_key_SmallPayload_Tt, kn) { currentKey = ffj_t_SmallPayload_Tt state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffj_key_SmallPayload_Sid, kn) { currentKey = ffj_t_SmallPayload_Sid state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffj_key_SmallPayload_St, kn) { currentKey = ffj_t_SmallPayload_St state = fflib.FFParse_want_colon goto mainparse } currentKey = ffj_t_SmallPayloadno_such_key state = fflib.FFParse_want_colon goto mainparse } case fflib.FFParse_want_colon: if tok != fflib.FFTok_colon { wantedTok = fflib.FFTok_colon goto wrongtokenerror } state = fflib.FFParse_want_value continue case fflib.FFParse_want_value: if tok == fflib.FFTok_left_brace || tok == fflib.FFTok_left_bracket || tok == fflib.FFTok_integer || tok == fflib.FFTok_double || tok == fflib.FFTok_string || tok == fflib.FFTok_bool || tok == fflib.FFTok_null { switch currentKey { case ffj_t_SmallPayload_St: goto handle_St case ffj_t_SmallPayload_Sid: goto handle_Sid case ffj_t_SmallPayload_Tt: goto handle_Tt case ffj_t_SmallPayload_Gr: goto handle_Gr case ffj_t_SmallPayload_Uuid: goto handle_Uuid case ffj_t_SmallPayload_Ip: goto handle_Ip case ffj_t_SmallPayload_Ua: goto handle_Ua case ffj_t_SmallPayload_Tz: goto handle_Tz case ffj_t_SmallPayload_V: goto handle_V case ffj_t_SmallPayloadno_such_key: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_St: /* handler: uj.St type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } uj.St = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Sid: /* handler: uj.Sid type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } uj.Sid = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Tt: /* handler: uj.Tt type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.Tt = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Gr: /* handler: uj.Gr type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } uj.Gr = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Uuid: /* handler: uj.Uuid type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.Uuid = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Ip: /* handler: uj.Ip type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.Ip = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Ua: /* handler: uj.Ua type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() uj.Ua = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Tz: /* handler: uj.Tz type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } uj.Tz = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_V: /* handler: uj.V type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } uj.V = int(tval) } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil }