// +build use_ffjson // DO NOT EDIT! // Code generated by ffjson // source: .root/src/github.com/mailru/easyjson/benchmark/data.go // DO NOT EDIT! package benchmark import ( "bytes" "errors" "fmt" fflib "github.com/pquerna/ffjson/fflib/v1" ) // MarshalJSON marshal bytes to json - template func (j *Entities) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *Entities) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"hashtags":`) if j.Hashtags != nil { buf.WriteString(`[`) for i, v := range j.Hashtags { if i != 0 { buf.WriteString(`,`) } { err = v.MarshalJSONBuf(buf) if err != nil { return err } } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteString(`,"urls":`) if j.Urls != nil { buf.WriteString(`[`) for i, v := range j.Urls { if i != 0 { buf.WriteString(`,`) } if v != nil { fflib.WriteJsonString(buf, string(*v)) } else { buf.WriteString(`null`) } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteString(`,"user_mentions":`) if j.UserMentions != nil { buf.WriteString(`[`) for i, v := range j.UserMentions { if i != 0 { buf.WriteString(`,`) } if v != nil { fflib.WriteJsonString(buf, string(*v)) } else { buf.WriteString(`null`) } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteByte('}') return nil } const ( ffjtEntitiesbase = iota ffjtEntitiesnosuchkey ffjtEntitiesHashtags ffjtEntitiesUrls ffjtEntitiesUserMentions ) var ffjKeyEntitiesHashtags = []byte("hashtags") var ffjKeyEntitiesUrls = []byte("urls") var ffjKeyEntitiesUserMentions = []byte("user_mentions") // UnmarshalJSON umarshall json - template of ffjson func (j *Entities) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *Entities) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtEntitiesbase _ = 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 = ffjtEntitiesnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'h': if bytes.Equal(ffjKeyEntitiesHashtags, kn) { currentKey = ffjtEntitiesHashtags state = fflib.FFParse_want_colon goto mainparse } case 'u': if bytes.Equal(ffjKeyEntitiesUrls, kn) { currentKey = ffjtEntitiesUrls state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyEntitiesUserMentions, kn) { currentKey = ffjtEntitiesUserMentions state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffjKeyEntitiesUserMentions, kn) { currentKey = ffjtEntitiesUserMentions state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyEntitiesUrls, kn) { currentKey = ffjtEntitiesUrls state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyEntitiesHashtags, kn) { currentKey = ffjtEntitiesHashtags state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtEntitiesnosuchkey 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 ffjtEntitiesHashtags: goto handle_Hashtags case ffjtEntitiesUrls: goto handle_Urls case ffjtEntitiesUserMentions: goto handle_UserMentions case ffjtEntitiesnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Hashtags: /* handler: j.Hashtags type=[]benchmark.Hashtag 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 { j.Hashtags = nil } else { j.Hashtags = []Hashtag{} wantVal := true for { var tmpJHashtags Hashtag 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: tmpJHashtags type=benchmark.Hashtag kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = tmpJHashtags.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } j.Hashtags = append(j.Hashtags, tmpJHashtags) wantVal = false } } } state = fflib.FFParse_after_value goto mainparse handle_Urls: /* handler: j.Urls type=[]*string 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 { j.Urls = nil } else { j.Urls = []*string{} wantVal := true for { var tmpJUrls *string 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: tmpJUrls type=*string kind=ptr quoted=false*/ { if tok == fflib.FFTok_null { tmpJUrls = nil } else { if tmpJUrls == nil { tmpJUrls = new(string) } /* handler: tmpJUrls 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 { tmpJUrls = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) tmpJUrls = &tval } } } } j.Urls = append(j.Urls, tmpJUrls) wantVal = false } } } state = fflib.FFParse_after_value goto mainparse handle_UserMentions: /* handler: j.UserMentions type=[]*string 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 { j.UserMentions = nil } else { j.UserMentions = []*string{} wantVal := true for { var tmpJUserMentions *string 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: tmpJUserMentions type=*string kind=ptr quoted=false*/ { if tok == fflib.FFTok_null { tmpJUserMentions = nil } else { if tmpJUserMentions == nil { tmpJUserMentions = new(string) } /* handler: tmpJUserMentions 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 { tmpJUserMentions = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) tmpJUserMentions = &tval } } } } j.UserMentions = append(j.UserMentions, tmpJUserMentions) 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 } // MarshalJSON marshal bytes to json - template func (j *Hashtag) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *Hashtag) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"indices":`) if j.Indices != nil { buf.WriteString(`[`) for i, v := range j.Indices { if i != 0 { buf.WriteString(`,`) } fflib.FormatBits2(buf, uint64(v), 10, v < 0) } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteString(`,"text":`) fflib.WriteJsonString(buf, string(j.Text)) buf.WriteByte('}') return nil } const ( ffjtHashtagbase = iota ffjtHashtagnosuchkey ffjtHashtagIndices ffjtHashtagText ) var ffjKeyHashtagIndices = []byte("indices") var ffjKeyHashtagText = []byte("text") // UnmarshalJSON umarshall json - template of ffjson func (j *Hashtag) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *Hashtag) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtHashtagbase _ = 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 = ffjtHashtagnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'i': if bytes.Equal(ffjKeyHashtagIndices, kn) { currentKey = ffjtHashtagIndices state = fflib.FFParse_want_colon goto mainparse } case 't': if bytes.Equal(ffjKeyHashtagText, kn) { currentKey = ffjtHashtagText state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffjKeyHashtagText, kn) { currentKey = ffjtHashtagText state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyHashtagIndices, kn) { currentKey = ffjtHashtagIndices state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtHashtagnosuchkey 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 ffjtHashtagIndices: goto handle_Indices case ffjtHashtagText: goto handle_Text case ffjtHashtagnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Indices: /* handler: j.Indices type=[]int 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 { j.Indices = nil } else { j.Indices = []int{} wantVal := true for { var tmpJIndices int 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: tmpJIndices 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) } tmpJIndices = int(tval) } } j.Indices = append(j.Indices, tmpJIndices) wantVal = false } } } state = fflib.FFParse_after_value goto mainparse handle_Text: /* handler: j.Text 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() j.Text = 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 } // MarshalJSON marshal bytes to json - template func (j *LargeStruct) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *LargeStruct) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"search_metadata":`) { err = j.SearchMetadata.MarshalJSONBuf(buf) if err != nil { return err } } buf.WriteString(`,"statuses":`) if j.Statuses != nil { buf.WriteString(`[`) for i, v := range j.Statuses { if i != 0 { buf.WriteString(`,`) } { err = v.MarshalJSONBuf(buf) if err != nil { return err } } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteByte('}') return nil } const ( ffjtLargeStructbase = iota ffjtLargeStructnosuchkey ffjtLargeStructSearchMetadata ffjtLargeStructStatuses ) var ffjKeyLargeStructSearchMetadata = []byte("search_metadata") var ffjKeyLargeStructStatuses = []byte("statuses") // UnmarshalJSON umarshall json - template of ffjson func (j *LargeStruct) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *LargeStruct) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtLargeStructbase _ = 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 = ffjtLargeStructnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 's': if bytes.Equal(ffjKeyLargeStructSearchMetadata, kn) { currentKey = ffjtLargeStructSearchMetadata state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyLargeStructStatuses, kn) { currentKey = ffjtLargeStructStatuses state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffjKeyLargeStructStatuses, kn) { currentKey = ffjtLargeStructStatuses state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyLargeStructSearchMetadata, kn) { currentKey = ffjtLargeStructSearchMetadata state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtLargeStructnosuchkey 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 ffjtLargeStructSearchMetadata: goto handle_SearchMetadata case ffjtLargeStructStatuses: goto handle_Statuses case ffjtLargeStructnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_SearchMetadata: /* handler: j.SearchMetadata type=benchmark.SearchMetadata kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = j.SearchMetadata.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse handle_Statuses: /* handler: j.Statuses type=[]benchmark.Status 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 { j.Statuses = nil } else { j.Statuses = []Status{} wantVal := true for { var tmpJStatuses Status 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: tmpJStatuses type=benchmark.Status kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = tmpJStatuses.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } j.Statuses = append(j.Statuses, tmpJStatuses) 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 } // MarshalJSON marshal bytes to json - template func (j *SearchMetadata) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *SearchMetadata) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"completed_in":`) fflib.AppendFloat(buf, float64(j.CompletedIn), 'g', -1, 64) buf.WriteString(`,"count":`) fflib.FormatBits2(buf, uint64(j.Count), 10, j.Count < 0) buf.WriteString(`,"max_id":`) fflib.FormatBits2(buf, uint64(j.MaxID), 10, j.MaxID < 0) buf.WriteString(`,"max_id_str":`) fflib.WriteJsonString(buf, string(j.MaxIDStr)) buf.WriteString(`,"next_results":`) fflib.WriteJsonString(buf, string(j.NextResults)) buf.WriteString(`,"query":`) fflib.WriteJsonString(buf, string(j.Query)) buf.WriteString(`,"refresh_url":`) fflib.WriteJsonString(buf, string(j.RefreshURL)) buf.WriteString(`,"since_id":`) fflib.FormatBits2(buf, uint64(j.SinceID), 10, j.SinceID < 0) buf.WriteString(`,"since_id_str":`) fflib.WriteJsonString(buf, string(j.SinceIDStr)) buf.WriteByte('}') return nil } const ( ffjtSearchMetadatabase = iota ffjtSearchMetadatanosuchkey ffjtSearchMetadataCompletedIn ffjtSearchMetadataCount ffjtSearchMetadataMaxID ffjtSearchMetadataMaxIDStr ffjtSearchMetadataNextResults ffjtSearchMetadataQuery ffjtSearchMetadataRefreshURL ffjtSearchMetadataSinceID ffjtSearchMetadataSinceIDStr ) var ffjKeySearchMetadataCompletedIn = []byte("completed_in") var ffjKeySearchMetadataCount = []byte("count") var ffjKeySearchMetadataMaxID = []byte("max_id") var ffjKeySearchMetadataMaxIDStr = []byte("max_id_str") var ffjKeySearchMetadataNextResults = []byte("next_results") var ffjKeySearchMetadataQuery = []byte("query") var ffjKeySearchMetadataRefreshURL = []byte("refresh_url") var ffjKeySearchMetadataSinceID = []byte("since_id") var ffjKeySearchMetadataSinceIDStr = []byte("since_id_str") // UnmarshalJSON umarshall json - template of ffjson func (j *SearchMetadata) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *SearchMetadata) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtSearchMetadatabase _ = 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 = ffjtSearchMetadatanosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'c': if bytes.Equal(ffjKeySearchMetadataCompletedIn, kn) { currentKey = ffjtSearchMetadataCompletedIn state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeySearchMetadataCount, kn) { currentKey = ffjtSearchMetadataCount state = fflib.FFParse_want_colon goto mainparse } case 'm': if bytes.Equal(ffjKeySearchMetadataMaxID, kn) { currentKey = ffjtSearchMetadataMaxID state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeySearchMetadataMaxIDStr, kn) { currentKey = ffjtSearchMetadataMaxIDStr state = fflib.FFParse_want_colon goto mainparse } case 'n': if bytes.Equal(ffjKeySearchMetadataNextResults, kn) { currentKey = ffjtSearchMetadataNextResults state = fflib.FFParse_want_colon goto mainparse } case 'q': if bytes.Equal(ffjKeySearchMetadataQuery, kn) { currentKey = ffjtSearchMetadataQuery state = fflib.FFParse_want_colon goto mainparse } case 'r': if bytes.Equal(ffjKeySearchMetadataRefreshURL, kn) { currentKey = ffjtSearchMetadataRefreshURL state = fflib.FFParse_want_colon goto mainparse } case 's': if bytes.Equal(ffjKeySearchMetadataSinceID, kn) { currentKey = ffjtSearchMetadataSinceID state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeySearchMetadataSinceIDStr, kn) { currentKey = ffjtSearchMetadataSinceIDStr state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffjKeySearchMetadataSinceIDStr, kn) { currentKey = ffjtSearchMetadataSinceIDStr state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeySearchMetadataSinceID, kn) { currentKey = ffjtSearchMetadataSinceID state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeySearchMetadataRefreshURL, kn) { currentKey = ffjtSearchMetadataRefreshURL state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeySearchMetadataQuery, kn) { currentKey = ffjtSearchMetadataQuery state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeySearchMetadataNextResults, kn) { currentKey = ffjtSearchMetadataNextResults state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeySearchMetadataMaxIDStr, kn) { currentKey = ffjtSearchMetadataMaxIDStr state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeySearchMetadataMaxID, kn) { currentKey = ffjtSearchMetadataMaxID state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeySearchMetadataCount, kn) { currentKey = ffjtSearchMetadataCount state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeySearchMetadataCompletedIn, kn) { currentKey = ffjtSearchMetadataCompletedIn state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtSearchMetadatanosuchkey 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 ffjtSearchMetadataCompletedIn: goto handle_CompletedIn case ffjtSearchMetadataCount: goto handle_Count case ffjtSearchMetadataMaxID: goto handle_MaxID case ffjtSearchMetadataMaxIDStr: goto handle_MaxIDStr case ffjtSearchMetadataNextResults: goto handle_NextResults case ffjtSearchMetadataQuery: goto handle_Query case ffjtSearchMetadataRefreshURL: goto handle_RefreshURL case ffjtSearchMetadataSinceID: goto handle_SinceID case ffjtSearchMetadataSinceIDStr: goto handle_SinceIDStr case ffjtSearchMetadatanosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_CompletedIn: /* handler: j.CompletedIn type=float64 kind=float64 quoted=false*/ { if tok != fflib.FFTok_double && tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for float64", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseFloat(fs.Output.Bytes(), 64) if err != nil { return fs.WrapErr(err) } j.CompletedIn = float64(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Count: /* handler: j.Count 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) } j.Count = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_MaxID: /* handler: j.MaxID type=int64 kind=int64 quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int64", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } j.MaxID = int64(tval) } } state = fflib.FFParse_after_value goto mainparse handle_MaxIDStr: /* handler: j.MaxIDStr 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() j.MaxIDStr = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_NextResults: /* handler: j.NextResults 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() j.NextResults = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Query: /* handler: j.Query 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() j.Query = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_RefreshURL: /* handler: j.RefreshURL 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() j.RefreshURL = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_SinceID: /* handler: j.SinceID type=int64 kind=int64 quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int64", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } j.SinceID = int64(tval) } } state = fflib.FFParse_after_value goto mainparse handle_SinceIDStr: /* handler: j.SinceIDStr 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() j.SinceIDStr = 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 } // MarshalJSON marshal bytes to json - template func (j *Status) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *Status) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err if j.Contributors != nil { buf.WriteString(`{"contributors":`) fflib.WriteJsonString(buf, string(*j.Contributors)) } else { buf.WriteString(`{"contributors":null`) } if j.Coordinates != nil { buf.WriteString(`,"coordinates":`) fflib.WriteJsonString(buf, string(*j.Coordinates)) } else { buf.WriteString(`,"coordinates":null`) } buf.WriteString(`,"created_at":`) fflib.WriteJsonString(buf, string(j.CreatedAt)) buf.WriteString(`,"entities":`) { err = j.Entities.MarshalJSONBuf(buf) if err != nil { return err } } if j.Favorited { buf.WriteString(`,"favorited":true`) } else { buf.WriteString(`,"favorited":false`) } if j.Geo != nil { buf.WriteString(`,"geo":`) fflib.WriteJsonString(buf, string(*j.Geo)) } else { buf.WriteString(`,"geo":null`) } buf.WriteString(`,"id":`) fflib.FormatBits2(buf, uint64(j.ID), 10, j.ID < 0) buf.WriteString(`,"id_str":`) fflib.WriteJsonString(buf, string(j.IDStr)) if j.InReplyToScreenName != nil { buf.WriteString(`,"in_reply_to_screen_name":`) fflib.WriteJsonString(buf, string(*j.InReplyToScreenName)) } else { buf.WriteString(`,"in_reply_to_screen_name":null`) } if j.InReplyToStatusID != nil { buf.WriteString(`,"in_reply_to_status_id":`) fflib.WriteJsonString(buf, string(*j.InReplyToStatusID)) } else { buf.WriteString(`,"in_reply_to_status_id":null`) } if j.InReplyToStatusIDStr != nil { buf.WriteString(`,"in_reply_to_status_id_str":`) fflib.WriteJsonString(buf, string(*j.InReplyToStatusIDStr)) } else { buf.WriteString(`,"in_reply_to_status_id_str":null`) } if j.InReplyToUserID != nil { buf.WriteString(`,"in_reply_to_user_id":`) fflib.WriteJsonString(buf, string(*j.InReplyToUserID)) } else { buf.WriteString(`,"in_reply_to_user_id":null`) } if j.InReplyToUserIDStr != nil { buf.WriteString(`,"in_reply_to_user_id_str":`) fflib.WriteJsonString(buf, string(*j.InReplyToUserIDStr)) } else { buf.WriteString(`,"in_reply_to_user_id_str":null`) } buf.WriteString(`,"metadata":`) { err = j.Metadata.MarshalJSONBuf(buf) if err != nil { return err } } if j.Place != nil { buf.WriteString(`,"place":`) fflib.WriteJsonString(buf, string(*j.Place)) } else { buf.WriteString(`,"place":null`) } buf.WriteString(`,"retweet_count":`) fflib.FormatBits2(buf, uint64(j.RetweetCount), 10, j.RetweetCount < 0) if j.Retweeted { buf.WriteString(`,"retweeted":true`) } else { buf.WriteString(`,"retweeted":false`) } buf.WriteString(`,"source":`) fflib.WriteJsonString(buf, string(j.Source)) buf.WriteString(`,"text":`) fflib.WriteJsonString(buf, string(j.Text)) if j.Truncated { buf.WriteString(`,"truncated":true`) } else { buf.WriteString(`,"truncated":false`) } buf.WriteString(`,"user":`) { err = j.User.MarshalJSONBuf(buf) if err != nil { return err } } buf.WriteByte('}') return nil } const ( ffjtStatusbase = iota ffjtStatusnosuchkey ffjtStatusContributors ffjtStatusCoordinates ffjtStatusCreatedAt ffjtStatusEntities ffjtStatusFavorited ffjtStatusGeo ffjtStatusID ffjtStatusIDStr ffjtStatusInReplyToScreenName ffjtStatusInReplyToStatusID ffjtStatusInReplyToStatusIDStr ffjtStatusInReplyToUserID ffjtStatusInReplyToUserIDStr ffjtStatusMetadata ffjtStatusPlace ffjtStatusRetweetCount ffjtStatusRetweeted ffjtStatusSource ffjtStatusText ffjtStatusTruncated ffjtStatusUser ) var ffjKeyStatusContributors = []byte("contributors") var ffjKeyStatusCoordinates = []byte("coordinates") var ffjKeyStatusCreatedAt = []byte("created_at") var ffjKeyStatusEntities = []byte("entities") var ffjKeyStatusFavorited = []byte("favorited") var ffjKeyStatusGeo = []byte("geo") var ffjKeyStatusID = []byte("id") var ffjKeyStatusIDStr = []byte("id_str") var ffjKeyStatusInReplyToScreenName = []byte("in_reply_to_screen_name") var ffjKeyStatusInReplyToStatusID = []byte("in_reply_to_status_id") var ffjKeyStatusInReplyToStatusIDStr = []byte("in_reply_to_status_id_str") var ffjKeyStatusInReplyToUserID = []byte("in_reply_to_user_id") var ffjKeyStatusInReplyToUserIDStr = []byte("in_reply_to_user_id_str") var ffjKeyStatusMetadata = []byte("metadata") var ffjKeyStatusPlace = []byte("place") var ffjKeyStatusRetweetCount = []byte("retweet_count") var ffjKeyStatusRetweeted = []byte("retweeted") var ffjKeyStatusSource = []byte("source") var ffjKeyStatusText = []byte("text") var ffjKeyStatusTruncated = []byte("truncated") var ffjKeyStatusUser = []byte("user") // UnmarshalJSON umarshall json - template of ffjson func (j *Status) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *Status) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtStatusbase _ = 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 = ffjtStatusnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'c': if bytes.Equal(ffjKeyStatusContributors, kn) { currentKey = ffjtStatusContributors state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusCoordinates, kn) { currentKey = ffjtStatusCoordinates state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusCreatedAt, kn) { currentKey = ffjtStatusCreatedAt state = fflib.FFParse_want_colon goto mainparse } case 'e': if bytes.Equal(ffjKeyStatusEntities, kn) { currentKey = ffjtStatusEntities state = fflib.FFParse_want_colon goto mainparse } case 'f': if bytes.Equal(ffjKeyStatusFavorited, kn) { currentKey = ffjtStatusFavorited state = fflib.FFParse_want_colon goto mainparse } case 'g': if bytes.Equal(ffjKeyStatusGeo, kn) { currentKey = ffjtStatusGeo state = fflib.FFParse_want_colon goto mainparse } case 'i': if bytes.Equal(ffjKeyStatusID, kn) { currentKey = ffjtStatusID state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusIDStr, kn) { currentKey = ffjtStatusIDStr state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusInReplyToScreenName, kn) { currentKey = ffjtStatusInReplyToScreenName state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusInReplyToStatusID, kn) { currentKey = ffjtStatusInReplyToStatusID state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusInReplyToStatusIDStr, kn) { currentKey = ffjtStatusInReplyToStatusIDStr state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusInReplyToUserID, kn) { currentKey = ffjtStatusInReplyToUserID state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusInReplyToUserIDStr, kn) { currentKey = ffjtStatusInReplyToUserIDStr state = fflib.FFParse_want_colon goto mainparse } case 'm': if bytes.Equal(ffjKeyStatusMetadata, kn) { currentKey = ffjtStatusMetadata state = fflib.FFParse_want_colon goto mainparse } case 'p': if bytes.Equal(ffjKeyStatusPlace, kn) { currentKey = ffjtStatusPlace state = fflib.FFParse_want_colon goto mainparse } case 'r': if bytes.Equal(ffjKeyStatusRetweetCount, kn) { currentKey = ffjtStatusRetweetCount state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusRetweeted, kn) { currentKey = ffjtStatusRetweeted state = fflib.FFParse_want_colon goto mainparse } case 's': if bytes.Equal(ffjKeyStatusSource, kn) { currentKey = ffjtStatusSource state = fflib.FFParse_want_colon goto mainparse } case 't': if bytes.Equal(ffjKeyStatusText, kn) { currentKey = ffjtStatusText state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyStatusTruncated, kn) { currentKey = ffjtStatusTruncated state = fflib.FFParse_want_colon goto mainparse } case 'u': if bytes.Equal(ffjKeyStatusUser, kn) { currentKey = ffjtStatusUser state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffjKeyStatusUser, kn) { currentKey = ffjtStatusUser state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyStatusTruncated, kn) { currentKey = ffjtStatusTruncated state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyStatusText, kn) { currentKey = ffjtStatusText state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusSource, kn) { currentKey = ffjtStatusSource state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyStatusRetweeted, kn) { currentKey = ffjtStatusRetweeted state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyStatusRetweetCount, kn) { currentKey = ffjtStatusRetweetCount state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyStatusPlace, kn) { currentKey = ffjtStatusPlace state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyStatusMetadata, kn) { currentKey = ffjtStatusMetadata state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusInReplyToUserIDStr, kn) { currentKey = ffjtStatusInReplyToUserIDStr state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusInReplyToUserID, kn) { currentKey = ffjtStatusInReplyToUserID state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusInReplyToStatusIDStr, kn) { currentKey = ffjtStatusInReplyToStatusIDStr state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusInReplyToStatusID, kn) { currentKey = ffjtStatusInReplyToStatusID state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusInReplyToScreenName, kn) { currentKey = ffjtStatusInReplyToScreenName state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusIDStr, kn) { currentKey = ffjtStatusIDStr state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyStatusID, kn) { currentKey = ffjtStatusID state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyStatusGeo, kn) { currentKey = ffjtStatusGeo state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyStatusFavorited, kn) { currentKey = ffjtStatusFavorited state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusEntities, kn) { currentKey = ffjtStatusEntities state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyStatusCreatedAt, kn) { currentKey = ffjtStatusCreatedAt state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusCoordinates, kn) { currentKey = ffjtStatusCoordinates state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusContributors, kn) { currentKey = ffjtStatusContributors state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtStatusnosuchkey 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 ffjtStatusContributors: goto handle_Contributors case ffjtStatusCoordinates: goto handle_Coordinates case ffjtStatusCreatedAt: goto handle_CreatedAt case ffjtStatusEntities: goto handle_Entities case ffjtStatusFavorited: goto handle_Favorited case ffjtStatusGeo: goto handle_Geo case ffjtStatusID: goto handle_ID case ffjtStatusIDStr: goto handle_IDStr case ffjtStatusInReplyToScreenName: goto handle_InReplyToScreenName case ffjtStatusInReplyToStatusID: goto handle_InReplyToStatusID case ffjtStatusInReplyToStatusIDStr: goto handle_InReplyToStatusIDStr case ffjtStatusInReplyToUserID: goto handle_InReplyToUserID case ffjtStatusInReplyToUserIDStr: goto handle_InReplyToUserIDStr case ffjtStatusMetadata: goto handle_Metadata case ffjtStatusPlace: goto handle_Place case ffjtStatusRetweetCount: goto handle_RetweetCount case ffjtStatusRetweeted: goto handle_Retweeted case ffjtStatusSource: goto handle_Source case ffjtStatusText: goto handle_Text case ffjtStatusTruncated: goto handle_Truncated case ffjtStatusUser: goto handle_User case ffjtStatusnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Contributors: /* handler: j.Contributors 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 { j.Contributors = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.Contributors = &tval } } state = fflib.FFParse_after_value goto mainparse handle_Coordinates: /* handler: j.Coordinates 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 { j.Coordinates = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.Coordinates = &tval } } state = fflib.FFParse_after_value goto mainparse handle_CreatedAt: /* handler: j.CreatedAt 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() j.CreatedAt = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Entities: /* handler: j.Entities type=benchmark.Entities kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = j.Entities.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse handle_Favorited: /* handler: j.Favorited type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.Favorited = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.Favorited = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_Geo: /* handler: j.Geo 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 { j.Geo = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.Geo = &tval } } state = fflib.FFParse_after_value goto mainparse handle_ID: /* handler: j.ID type=int64 kind=int64 quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int64", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } j.ID = int64(tval) } } state = fflib.FFParse_after_value goto mainparse handle_IDStr: /* handler: j.IDStr 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() j.IDStr = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_InReplyToScreenName: /* handler: j.InReplyToScreenName 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 { j.InReplyToScreenName = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.InReplyToScreenName = &tval } } state = fflib.FFParse_after_value goto mainparse handle_InReplyToStatusID: /* handler: j.InReplyToStatusID 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 { j.InReplyToStatusID = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.InReplyToStatusID = &tval } } state = fflib.FFParse_after_value goto mainparse handle_InReplyToStatusIDStr: /* handler: j.InReplyToStatusIDStr 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 { j.InReplyToStatusIDStr = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.InReplyToStatusIDStr = &tval } } state = fflib.FFParse_after_value goto mainparse handle_InReplyToUserID: /* handler: j.InReplyToUserID 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 { j.InReplyToUserID = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.InReplyToUserID = &tval } } state = fflib.FFParse_after_value goto mainparse handle_InReplyToUserIDStr: /* handler: j.InReplyToUserIDStr 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 { j.InReplyToUserIDStr = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.InReplyToUserIDStr = &tval } } state = fflib.FFParse_after_value goto mainparse handle_Metadata: /* handler: j.Metadata type=benchmark.StatusMetadata kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = j.Metadata.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse handle_Place: /* handler: j.Place 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 { j.Place = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.Place = &tval } } state = fflib.FFParse_after_value goto mainparse handle_RetweetCount: /* handler: j.RetweetCount 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) } j.RetweetCount = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Retweeted: /* handler: j.Retweeted type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.Retweeted = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.Retweeted = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_Source: /* handler: j.Source 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() j.Source = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Text: /* handler: j.Text 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() j.Text = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Truncated: /* handler: j.Truncated type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.Truncated = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.Truncated = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_User: /* handler: j.User type=benchmark.User kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = j.User.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 } // MarshalJSON marshal bytes to json - template func (j *StatusMetadata) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *StatusMetadata) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"iso_language_code":`) fflib.WriteJsonString(buf, string(j.IsoLanguageCode)) buf.WriteString(`,"result_type":`) fflib.WriteJsonString(buf, string(j.ResultType)) buf.WriteByte('}') return nil } const ( ffjtStatusMetadatabase = iota ffjtStatusMetadatanosuchkey ffjtStatusMetadataIsoLanguageCode ffjtStatusMetadataResultType ) var ffjKeyStatusMetadataIsoLanguageCode = []byte("iso_language_code") var ffjKeyStatusMetadataResultType = []byte("result_type") // UnmarshalJSON umarshall json - template of ffjson func (j *StatusMetadata) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *StatusMetadata) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtStatusMetadatabase _ = 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 = ffjtStatusMetadatanosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'i': if bytes.Equal(ffjKeyStatusMetadataIsoLanguageCode, kn) { currentKey = ffjtStatusMetadataIsoLanguageCode state = fflib.FFParse_want_colon goto mainparse } case 'r': if bytes.Equal(ffjKeyStatusMetadataResultType, kn) { currentKey = ffjtStatusMetadataResultType state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffjKeyStatusMetadataResultType, kn) { currentKey = ffjtStatusMetadataResultType state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyStatusMetadataIsoLanguageCode, kn) { currentKey = ffjtStatusMetadataIsoLanguageCode state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtStatusMetadatanosuchkey 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 ffjtStatusMetadataIsoLanguageCode: goto handle_IsoLanguageCode case ffjtStatusMetadataResultType: goto handle_ResultType case ffjtStatusMetadatanosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_IsoLanguageCode: /* handler: j.IsoLanguageCode 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() j.IsoLanguageCode = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ResultType: /* handler: j.ResultType 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() j.ResultType = 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 } // MarshalJSON marshal bytes to json - template func (j *URL) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *URL) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err if j.ExpandedURL != nil { buf.WriteString(`{"expanded_url":`) fflib.WriteJsonString(buf, string(*j.ExpandedURL)) } else { buf.WriteString(`{"expanded_url":null`) } buf.WriteString(`,"indices":`) if j.Indices != nil { buf.WriteString(`[`) for i, v := range j.Indices { if i != 0 { buf.WriteString(`,`) } fflib.FormatBits2(buf, uint64(v), 10, v < 0) } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteString(`,"url":`) fflib.WriteJsonString(buf, string(j.URL)) buf.WriteByte('}') return nil } const ( ffjtURLbase = iota ffjtURLnosuchkey ffjtURLExpandedURL ffjtURLIndices ffjtURLURL ) var ffjKeyURLExpandedURL = []byte("expanded_url") var ffjKeyURLIndices = []byte("indices") var ffjKeyURLURL = []byte("url") // UnmarshalJSON umarshall json - template of ffjson func (j *URL) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *URL) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtURLbase _ = 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 = ffjtURLnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'e': if bytes.Equal(ffjKeyURLExpandedURL, kn) { currentKey = ffjtURLExpandedURL state = fflib.FFParse_want_colon goto mainparse } case 'i': if bytes.Equal(ffjKeyURLIndices, kn) { currentKey = ffjtURLIndices state = fflib.FFParse_want_colon goto mainparse } case 'u': if bytes.Equal(ffjKeyURLURL, kn) { currentKey = ffjtURLURL state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffjKeyURLURL, kn) { currentKey = ffjtURLURL state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyURLIndices, kn) { currentKey = ffjtURLIndices state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyURLExpandedURL, kn) { currentKey = ffjtURLExpandedURL state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtURLnosuchkey 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 ffjtURLExpandedURL: goto handle_ExpandedURL case ffjtURLIndices: goto handle_Indices case ffjtURLURL: goto handle_URL case ffjtURLnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_ExpandedURL: /* handler: j.ExpandedURL 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 { j.ExpandedURL = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.ExpandedURL = &tval } } state = fflib.FFParse_after_value goto mainparse handle_Indices: /* handler: j.Indices type=[]int 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 { j.Indices = nil } else { j.Indices = []int{} wantVal := true for { var tmpJIndices int 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: tmpJIndices 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) } tmpJIndices = int(tval) } } j.Indices = append(j.Indices, tmpJIndices) wantVal = false } } } state = fflib.FFParse_after_value goto mainparse handle_URL: /* handler: j.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() j.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 } // MarshalJSON marshal bytes to json - template func (j *User) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *User) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err if j.ContributorsEnabled { buf.WriteString(`{"contributors_enabled":true`) } else { buf.WriteString(`{"contributors_enabled":false`) } buf.WriteString(`,"created_at":`) fflib.WriteJsonString(buf, string(j.CreatedAt)) if j.DefaultProfile { buf.WriteString(`,"default_profile":true`) } else { buf.WriteString(`,"default_profile":false`) } if j.DefaultProfileImage { buf.WriteString(`,"default_profile_image":true`) } else { buf.WriteString(`,"default_profile_image":false`) } buf.WriteString(`,"description":`) fflib.WriteJsonString(buf, string(j.Description)) buf.WriteString(`,"entities":`) { err = j.Entities.MarshalJSONBuf(buf) if err != nil { return err } } buf.WriteString(`,"favourites_count":`) fflib.FormatBits2(buf, uint64(j.FavouritesCount), 10, j.FavouritesCount < 0) if j.FollowRequestSent != nil { buf.WriteString(`,"follow_request_sent":`) fflib.WriteJsonString(buf, string(*j.FollowRequestSent)) } else { buf.WriteString(`,"follow_request_sent":null`) } buf.WriteString(`,"followers_count":`) fflib.FormatBits2(buf, uint64(j.FollowersCount), 10, j.FollowersCount < 0) if j.Following != nil { buf.WriteString(`,"following":`) fflib.WriteJsonString(buf, string(*j.Following)) } else { buf.WriteString(`,"following":null`) } buf.WriteString(`,"friends_count":`) fflib.FormatBits2(buf, uint64(j.FriendsCount), 10, j.FriendsCount < 0) if j.GeoEnabled { buf.WriteString(`,"geo_enabled":true`) } else { buf.WriteString(`,"geo_enabled":false`) } buf.WriteString(`,"id":`) fflib.FormatBits2(buf, uint64(j.ID), 10, j.ID < 0) buf.WriteString(`,"id_str":`) fflib.WriteJsonString(buf, string(j.IDStr)) if j.IsTranslator { buf.WriteString(`,"is_translator":true`) } else { buf.WriteString(`,"is_translator":false`) } buf.WriteString(`,"lang":`) fflib.WriteJsonString(buf, string(j.Lang)) buf.WriteString(`,"listed_count":`) fflib.FormatBits2(buf, uint64(j.ListedCount), 10, j.ListedCount < 0) buf.WriteString(`,"location":`) fflib.WriteJsonString(buf, string(j.Location)) buf.WriteString(`,"name":`) fflib.WriteJsonString(buf, string(j.Name)) if j.Notifications != nil { buf.WriteString(`,"notifications":`) fflib.WriteJsonString(buf, string(*j.Notifications)) } else { buf.WriteString(`,"notifications":null`) } buf.WriteString(`,"profile_background_color":`) fflib.WriteJsonString(buf, string(j.ProfileBackgroundColor)) buf.WriteString(`,"profile_background_image_url":`) fflib.WriteJsonString(buf, string(j.ProfileBackgroundImageURL)) buf.WriteString(`,"profile_background_image_url_https":`) fflib.WriteJsonString(buf, string(j.ProfileBackgroundImageURLHTTPS)) if j.ProfileBackgroundTile { buf.WriteString(`,"profile_background_tile":true`) } else { buf.WriteString(`,"profile_background_tile":false`) } buf.WriteString(`,"profile_image_url":`) fflib.WriteJsonString(buf, string(j.ProfileImageURL)) buf.WriteString(`,"profile_image_url_https":`) fflib.WriteJsonString(buf, string(j.ProfileImageURLHTTPS)) buf.WriteString(`,"profile_link_color":`) fflib.WriteJsonString(buf, string(j.ProfileLinkColor)) buf.WriteString(`,"profile_sidebar_border_color":`) fflib.WriteJsonString(buf, string(j.ProfileSidebarBorderColor)) buf.WriteString(`,"profile_sidebar_fill_color":`) fflib.WriteJsonString(buf, string(j.ProfileSidebarFillColor)) buf.WriteString(`,"profile_text_color":`) fflib.WriteJsonString(buf, string(j.ProfileTextColor)) if j.ProfileUseBackgroundImage { buf.WriteString(`,"profile_use_background_image":true`) } else { buf.WriteString(`,"profile_use_background_image":false`) } if j.Protected { buf.WriteString(`,"protected":true`) } else { buf.WriteString(`,"protected":false`) } buf.WriteString(`,"screen_name":`) fflib.WriteJsonString(buf, string(j.ScreenName)) if j.ShowAllInlineMedia { buf.WriteString(`,"show_all_inline_media":true`) } else { buf.WriteString(`,"show_all_inline_media":false`) } buf.WriteString(`,"statuses_count":`) fflib.FormatBits2(buf, uint64(j.StatusesCount), 10, j.StatusesCount < 0) buf.WriteString(`,"time_zone":`) fflib.WriteJsonString(buf, string(j.TimeZone)) if j.URL != nil { buf.WriteString(`,"url":`) fflib.WriteJsonString(buf, string(*j.URL)) } else { buf.WriteString(`,"url":null`) } buf.WriteString(`,"utc_offset":`) fflib.FormatBits2(buf, uint64(j.UtcOffset), 10, j.UtcOffset < 0) if j.Verified { buf.WriteString(`,"verified":true`) } else { buf.WriteString(`,"verified":false`) } buf.WriteByte('}') return nil } const ( ffjtUserbase = iota ffjtUsernosuchkey ffjtUserContributorsEnabled ffjtUserCreatedAt ffjtUserDefaultProfile ffjtUserDefaultProfileImage ffjtUserDescription ffjtUserEntities ffjtUserFavouritesCount ffjtUserFollowRequestSent ffjtUserFollowersCount ffjtUserFollowing ffjtUserFriendsCount ffjtUserGeoEnabled ffjtUserID ffjtUserIDStr ffjtUserIsTranslator ffjtUserLang ffjtUserListedCount ffjtUserLocation ffjtUserName ffjtUserNotifications ffjtUserProfileBackgroundColor ffjtUserProfileBackgroundImageURL ffjtUserProfileBackgroundImageURLHTTPS ffjtUserProfileBackgroundTile ffjtUserProfileImageURL ffjtUserProfileImageURLHTTPS ffjtUserProfileLinkColor ffjtUserProfileSidebarBorderColor ffjtUserProfileSidebarFillColor ffjtUserProfileTextColor ffjtUserProfileUseBackgroundImage ffjtUserProtected ffjtUserScreenName ffjtUserShowAllInlineMedia ffjtUserStatusesCount ffjtUserTimeZone ffjtUserURL ffjtUserUtcOffset ffjtUserVerified ) var ffjKeyUserContributorsEnabled = []byte("contributors_enabled") var ffjKeyUserCreatedAt = []byte("created_at") var ffjKeyUserDefaultProfile = []byte("default_profile") var ffjKeyUserDefaultProfileImage = []byte("default_profile_image") var ffjKeyUserDescription = []byte("description") var ffjKeyUserEntities = []byte("entities") var ffjKeyUserFavouritesCount = []byte("favourites_count") var ffjKeyUserFollowRequestSent = []byte("follow_request_sent") var ffjKeyUserFollowersCount = []byte("followers_count") var ffjKeyUserFollowing = []byte("following") var ffjKeyUserFriendsCount = []byte("friends_count") var ffjKeyUserGeoEnabled = []byte("geo_enabled") var ffjKeyUserID = []byte("id") var ffjKeyUserIDStr = []byte("id_str") var ffjKeyUserIsTranslator = []byte("is_translator") var ffjKeyUserLang = []byte("lang") var ffjKeyUserListedCount = []byte("listed_count") var ffjKeyUserLocation = []byte("location") var ffjKeyUserName = []byte("name") var ffjKeyUserNotifications = []byte("notifications") var ffjKeyUserProfileBackgroundColor = []byte("profile_background_color") var ffjKeyUserProfileBackgroundImageURL = []byte("profile_background_image_url") var ffjKeyUserProfileBackgroundImageURLHTTPS = []byte("profile_background_image_url_https") var ffjKeyUserProfileBackgroundTile = []byte("profile_background_tile") var ffjKeyUserProfileImageURL = []byte("profile_image_url") var ffjKeyUserProfileImageURLHTTPS = []byte("profile_image_url_https") var ffjKeyUserProfileLinkColor = []byte("profile_link_color") var ffjKeyUserProfileSidebarBorderColor = []byte("profile_sidebar_border_color") var ffjKeyUserProfileSidebarFillColor = []byte("profile_sidebar_fill_color") var ffjKeyUserProfileTextColor = []byte("profile_text_color") var ffjKeyUserProfileUseBackgroundImage = []byte("profile_use_background_image") var ffjKeyUserProtected = []byte("protected") var ffjKeyUserScreenName = []byte("screen_name") var ffjKeyUserShowAllInlineMedia = []byte("show_all_inline_media") var ffjKeyUserStatusesCount = []byte("statuses_count") var ffjKeyUserTimeZone = []byte("time_zone") var ffjKeyUserURL = []byte("url") var ffjKeyUserUtcOffset = []byte("utc_offset") var ffjKeyUserVerified = []byte("verified") // UnmarshalJSON umarshall json - template of ffjson func (j *User) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *User) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtUserbase _ = 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 = ffjtUsernosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'c': if bytes.Equal(ffjKeyUserContributorsEnabled, kn) { currentKey = ffjtUserContributorsEnabled state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserCreatedAt, kn) { currentKey = ffjtUserCreatedAt state = fflib.FFParse_want_colon goto mainparse } case 'd': if bytes.Equal(ffjKeyUserDefaultProfile, kn) { currentKey = ffjtUserDefaultProfile state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserDefaultProfileImage, kn) { currentKey = ffjtUserDefaultProfileImage state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserDescription, kn) { currentKey = ffjtUserDescription state = fflib.FFParse_want_colon goto mainparse } case 'e': if bytes.Equal(ffjKeyUserEntities, kn) { currentKey = ffjtUserEntities state = fflib.FFParse_want_colon goto mainparse } case 'f': if bytes.Equal(ffjKeyUserFavouritesCount, kn) { currentKey = ffjtUserFavouritesCount state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserFollowRequestSent, kn) { currentKey = ffjtUserFollowRequestSent state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserFollowersCount, kn) { currentKey = ffjtUserFollowersCount state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserFollowing, kn) { currentKey = ffjtUserFollowing state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserFriendsCount, kn) { currentKey = ffjtUserFriendsCount state = fflib.FFParse_want_colon goto mainparse } case 'g': if bytes.Equal(ffjKeyUserGeoEnabled, kn) { currentKey = ffjtUserGeoEnabled state = fflib.FFParse_want_colon goto mainparse } case 'i': if bytes.Equal(ffjKeyUserID, kn) { currentKey = ffjtUserID state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserIDStr, kn) { currentKey = ffjtUserIDStr state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserIsTranslator, kn) { currentKey = ffjtUserIsTranslator state = fflib.FFParse_want_colon goto mainparse } case 'l': if bytes.Equal(ffjKeyUserLang, kn) { currentKey = ffjtUserLang state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserListedCount, kn) { currentKey = ffjtUserListedCount state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserLocation, kn) { currentKey = ffjtUserLocation state = fflib.FFParse_want_colon goto mainparse } case 'n': if bytes.Equal(ffjKeyUserName, kn) { currentKey = ffjtUserName state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserNotifications, kn) { currentKey = ffjtUserNotifications state = fflib.FFParse_want_colon goto mainparse } case 'p': if bytes.Equal(ffjKeyUserProfileBackgroundColor, kn) { currentKey = ffjtUserProfileBackgroundColor state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileBackgroundImageURL, kn) { currentKey = ffjtUserProfileBackgroundImageURL state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileBackgroundImageURLHTTPS, kn) { currentKey = ffjtUserProfileBackgroundImageURLHTTPS state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileBackgroundTile, kn) { currentKey = ffjtUserProfileBackgroundTile state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileImageURL, kn) { currentKey = ffjtUserProfileImageURL state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileImageURLHTTPS, kn) { currentKey = ffjtUserProfileImageURLHTTPS state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileLinkColor, kn) { currentKey = ffjtUserProfileLinkColor state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileSidebarBorderColor, kn) { currentKey = ffjtUserProfileSidebarBorderColor state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileSidebarFillColor, kn) { currentKey = ffjtUserProfileSidebarFillColor state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileTextColor, kn) { currentKey = ffjtUserProfileTextColor state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProfileUseBackgroundImage, kn) { currentKey = ffjtUserProfileUseBackgroundImage state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserProtected, kn) { currentKey = ffjtUserProtected state = fflib.FFParse_want_colon goto mainparse } case 's': if bytes.Equal(ffjKeyUserScreenName, kn) { currentKey = ffjtUserScreenName state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserShowAllInlineMedia, kn) { currentKey = ffjtUserShowAllInlineMedia state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserStatusesCount, kn) { currentKey = ffjtUserStatusesCount state = fflib.FFParse_want_colon goto mainparse } case 't': if bytes.Equal(ffjKeyUserTimeZone, kn) { currentKey = ffjtUserTimeZone state = fflib.FFParse_want_colon goto mainparse } case 'u': if bytes.Equal(ffjKeyUserURL, kn) { currentKey = ffjtUserURL state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeyUserUtcOffset, kn) { currentKey = ffjtUserUtcOffset state = fflib.FFParse_want_colon goto mainparse } case 'v': if bytes.Equal(ffjKeyUserVerified, kn) { currentKey = ffjtUserVerified state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffjKeyUserVerified, kn) { currentKey = ffjtUserVerified state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserUtcOffset, kn) { currentKey = ffjtUserUtcOffset state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyUserURL, kn) { currentKey = ffjtUserURL state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyUserTimeZone, kn) { currentKey = ffjtUserTimeZone state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserStatusesCount, kn) { currentKey = ffjtUserStatusesCount state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserShowAllInlineMedia, kn) { currentKey = ffjtUserShowAllInlineMedia state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserScreenName, kn) { currentKey = ffjtUserScreenName state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyUserProtected, kn) { currentKey = ffjtUserProtected state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileUseBackgroundImage, kn) { currentKey = ffjtUserProfileUseBackgroundImage state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyUserProfileTextColor, kn) { currentKey = ffjtUserProfileTextColor state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileSidebarFillColor, kn) { currentKey = ffjtUserProfileSidebarFillColor state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileSidebarBorderColor, kn) { currentKey = ffjtUserProfileSidebarBorderColor state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileLinkColor, kn) { currentKey = ffjtUserProfileLinkColor state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileImageURLHTTPS, kn) { currentKey = ffjtUserProfileImageURLHTTPS state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyUserProfileImageURL, kn) { currentKey = ffjtUserProfileImageURL state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileBackgroundTile, kn) { currentKey = ffjtUserProfileBackgroundTile state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileBackgroundImageURLHTTPS, kn) { currentKey = ffjtUserProfileBackgroundImageURLHTTPS state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileBackgroundImageURL, kn) { currentKey = ffjtUserProfileBackgroundImageURL state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserProfileBackgroundColor, kn) { currentKey = ffjtUserProfileBackgroundColor state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserNotifications, kn) { currentKey = ffjtUserNotifications state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyUserName, kn) { currentKey = ffjtUserName state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyUserLocation, kn) { currentKey = ffjtUserLocation state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserListedCount, kn) { currentKey = ffjtUserListedCount state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyUserLang, kn) { currentKey = ffjtUserLang state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserIsTranslator, kn) { currentKey = ffjtUserIsTranslator state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserIDStr, kn) { currentKey = ffjtUserIDStr state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyUserID, kn) { currentKey = ffjtUserID state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyUserGeoEnabled, kn) { currentKey = ffjtUserGeoEnabled state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserFriendsCount, kn) { currentKey = ffjtUserFriendsCount state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeyUserFollowing, kn) { currentKey = ffjtUserFollowing state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserFollowersCount, kn) { currentKey = ffjtUserFollowersCount state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserFollowRequestSent, kn) { currentKey = ffjtUserFollowRequestSent state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserFavouritesCount, kn) { currentKey = ffjtUserFavouritesCount state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserEntities, kn) { currentKey = ffjtUserEntities state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserDescription, kn) { currentKey = ffjtUserDescription state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyUserDefaultProfileImage, kn) { currentKey = ffjtUserDefaultProfileImage state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyUserDefaultProfile, kn) { currentKey = ffjtUserDefaultProfile state = fflib.FFParse_want_colon goto mainparse } if fflib.AsciiEqualFold(ffjKeyUserCreatedAt, kn) { currentKey = ffjtUserCreatedAt state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserContributorsEnabled, kn) { currentKey = ffjtUserContributorsEnabled state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtUsernosuchkey 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 ffjtUserContributorsEnabled: goto handle_ContributorsEnabled case ffjtUserCreatedAt: goto handle_CreatedAt case ffjtUserDefaultProfile: goto handle_DefaultProfile case ffjtUserDefaultProfileImage: goto handle_DefaultProfileImage case ffjtUserDescription: goto handle_Description case ffjtUserEntities: goto handle_Entities case ffjtUserFavouritesCount: goto handle_FavouritesCount case ffjtUserFollowRequestSent: goto handle_FollowRequestSent case ffjtUserFollowersCount: goto handle_FollowersCount case ffjtUserFollowing: goto handle_Following case ffjtUserFriendsCount: goto handle_FriendsCount case ffjtUserGeoEnabled: goto handle_GeoEnabled case ffjtUserID: goto handle_ID case ffjtUserIDStr: goto handle_IDStr case ffjtUserIsTranslator: goto handle_IsTranslator case ffjtUserLang: goto handle_Lang case ffjtUserListedCount: goto handle_ListedCount case ffjtUserLocation: goto handle_Location case ffjtUserName: goto handle_Name case ffjtUserNotifications: goto handle_Notifications case ffjtUserProfileBackgroundColor: goto handle_ProfileBackgroundColor case ffjtUserProfileBackgroundImageURL: goto handle_ProfileBackgroundImageURL case ffjtUserProfileBackgroundImageURLHTTPS: goto handle_ProfileBackgroundImageURLHTTPS case ffjtUserProfileBackgroundTile: goto handle_ProfileBackgroundTile case ffjtUserProfileImageURL: goto handle_ProfileImageURL case ffjtUserProfileImageURLHTTPS: goto handle_ProfileImageURLHTTPS case ffjtUserProfileLinkColor: goto handle_ProfileLinkColor case ffjtUserProfileSidebarBorderColor: goto handle_ProfileSidebarBorderColor case ffjtUserProfileSidebarFillColor: goto handle_ProfileSidebarFillColor case ffjtUserProfileTextColor: goto handle_ProfileTextColor case ffjtUserProfileUseBackgroundImage: goto handle_ProfileUseBackgroundImage case ffjtUserProtected: goto handle_Protected case ffjtUserScreenName: goto handle_ScreenName case ffjtUserShowAllInlineMedia: goto handle_ShowAllInlineMedia case ffjtUserStatusesCount: goto handle_StatusesCount case ffjtUserTimeZone: goto handle_TimeZone case ffjtUserURL: goto handle_URL case ffjtUserUtcOffset: goto handle_UtcOffset case ffjtUserVerified: goto handle_Verified case ffjtUsernosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_ContributorsEnabled: /* handler: j.ContributorsEnabled type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.ContributorsEnabled = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.ContributorsEnabled = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_CreatedAt: /* handler: j.CreatedAt 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() j.CreatedAt = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_DefaultProfile: /* handler: j.DefaultProfile type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.DefaultProfile = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.DefaultProfile = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_DefaultProfileImage: /* handler: j.DefaultProfileImage type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.DefaultProfileImage = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.DefaultProfileImage = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_Description: /* handler: j.Description 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() j.Description = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Entities: /* handler: j.Entities type=benchmark.UserEntities kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = j.Entities.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse handle_FavouritesCount: /* handler: j.FavouritesCount 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) } j.FavouritesCount = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_FollowRequestSent: /* handler: j.FollowRequestSent 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 { j.FollowRequestSent = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.FollowRequestSent = &tval } } state = fflib.FFParse_after_value goto mainparse handle_FollowersCount: /* handler: j.FollowersCount 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) } j.FollowersCount = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Following: /* handler: j.Following 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 { j.Following = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.Following = &tval } } state = fflib.FFParse_after_value goto mainparse handle_FriendsCount: /* handler: j.FriendsCount 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) } j.FriendsCount = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_GeoEnabled: /* handler: j.GeoEnabled type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.GeoEnabled = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.GeoEnabled = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_ID: /* handler: j.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) } j.ID = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_IDStr: /* handler: j.IDStr 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() j.IDStr = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_IsTranslator: /* handler: j.IsTranslator type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.IsTranslator = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.IsTranslator = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_Lang: /* handler: j.Lang 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() j.Lang = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ListedCount: /* handler: j.ListedCount 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) } j.ListedCount = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Location: /* handler: j.Location 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() j.Location = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Name: /* handler: j.Name 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() j.Name = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Notifications: /* handler: j.Notifications 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 { j.Notifications = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.Notifications = &tval } } state = fflib.FFParse_after_value goto mainparse handle_ProfileBackgroundColor: /* handler: j.ProfileBackgroundColor 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() j.ProfileBackgroundColor = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileBackgroundImageURL: /* handler: j.ProfileBackgroundImageURL 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() j.ProfileBackgroundImageURL = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileBackgroundImageURLHTTPS: /* handler: j.ProfileBackgroundImageURLHTTPS 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() j.ProfileBackgroundImageURLHTTPS = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileBackgroundTile: /* handler: j.ProfileBackgroundTile type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.ProfileBackgroundTile = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.ProfileBackgroundTile = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_ProfileImageURL: /* handler: j.ProfileImageURL 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() j.ProfileImageURL = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileImageURLHTTPS: /* handler: j.ProfileImageURLHTTPS 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() j.ProfileImageURLHTTPS = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileLinkColor: /* handler: j.ProfileLinkColor 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() j.ProfileLinkColor = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileSidebarBorderColor: /* handler: j.ProfileSidebarBorderColor 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() j.ProfileSidebarBorderColor = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileSidebarFillColor: /* handler: j.ProfileSidebarFillColor 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() j.ProfileSidebarFillColor = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileTextColor: /* handler: j.ProfileTextColor 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() j.ProfileTextColor = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ProfileUseBackgroundImage: /* handler: j.ProfileUseBackgroundImage type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.ProfileUseBackgroundImage = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.ProfileUseBackgroundImage = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_Protected: /* handler: j.Protected type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.Protected = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.Protected = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_ScreenName: /* handler: j.ScreenName 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() j.ScreenName = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_ShowAllInlineMedia: /* handler: j.ShowAllInlineMedia type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.ShowAllInlineMedia = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.ShowAllInlineMedia = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } state = fflib.FFParse_after_value goto mainparse handle_StatusesCount: /* handler: j.StatusesCount 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) } j.StatusesCount = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_TimeZone: /* handler: j.TimeZone 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() j.TimeZone = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_URL: /* handler: j.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 { j.URL = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) j.URL = &tval } } state = fflib.FFParse_after_value goto mainparse handle_UtcOffset: /* handler: j.UtcOffset 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) } j.UtcOffset = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Verified: /* handler: j.Verified type=bool kind=bool quoted=false*/ { if tok != fflib.FFTok_bool && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for bool", tok)) } } { if tok == fflib.FFTok_null { } else { tmpb := fs.Output.Bytes() if bytes.Compare([]byte{'t', 'r', 'u', 'e'}, tmpb) == 0 { j.Verified = true } else if bytes.Compare([]byte{'f', 'a', 'l', 's', 'e'}, tmpb) == 0 { j.Verified = false } else { err = errors.New("unexpected bytes for true/false value") return fs.WrapErr(err) } } } 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 } // MarshalJSON marshal bytes to json - template func (j *UserEntities) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *UserEntities) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"description":`) { err = j.Description.MarshalJSONBuf(buf) if err != nil { return err } } buf.WriteString(`,"url":`) { err = j.URL.MarshalJSONBuf(buf) if err != nil { return err } } buf.WriteByte('}') return nil } const ( ffjtUserEntitiesbase = iota ffjtUserEntitiesnosuchkey ffjtUserEntitiesDescription ffjtUserEntitiesURL ) var ffjKeyUserEntitiesDescription = []byte("description") var ffjKeyUserEntitiesURL = []byte("url") // UnmarshalJSON umarshall json - template of ffjson func (j *UserEntities) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *UserEntities) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtUserEntitiesbase _ = 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 = ffjtUserEntitiesnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'd': if bytes.Equal(ffjKeyUserEntitiesDescription, kn) { currentKey = ffjtUserEntitiesDescription state = fflib.FFParse_want_colon goto mainparse } case 'u': if bytes.Equal(ffjKeyUserEntitiesURL, kn) { currentKey = ffjtUserEntitiesURL state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffjKeyUserEntitiesURL, kn) { currentKey = ffjtUserEntitiesURL state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeyUserEntitiesDescription, kn) { currentKey = ffjtUserEntitiesDescription state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtUserEntitiesnosuchkey 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 ffjtUserEntitiesDescription: goto handle_Description case ffjtUserEntitiesURL: goto handle_URL case ffjtUserEntitiesnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Description: /* handler: j.Description type=benchmark.UserEntityDescription kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = j.Description.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } state = fflib.FFParse_after_value goto mainparse handle_URL: /* handler: j.URL type=benchmark.UserEntityURL kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = j.URL.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 } // MarshalJSON marshal bytes to json - template func (j *UserEntityDescription) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *UserEntityDescription) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"urls":`) if j.Urls != nil { buf.WriteString(`[`) for i, v := range j.Urls { if i != 0 { buf.WriteString(`,`) } if v != nil { fflib.WriteJsonString(buf, string(*v)) } else { buf.WriteString(`null`) } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteByte('}') return nil } const ( ffjtUserEntityDescriptionbase = iota ffjtUserEntityDescriptionnosuchkey ffjtUserEntityDescriptionUrls ) var ffjKeyUserEntityDescriptionUrls = []byte("urls") // UnmarshalJSON umarshall json - template of ffjson func (j *UserEntityDescription) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *UserEntityDescription) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtUserEntityDescriptionbase _ = 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 = ffjtUserEntityDescriptionnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'u': if bytes.Equal(ffjKeyUserEntityDescriptionUrls, kn) { currentKey = ffjtUserEntityDescriptionUrls state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffjKeyUserEntityDescriptionUrls, kn) { currentKey = ffjtUserEntityDescriptionUrls state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtUserEntityDescriptionnosuchkey 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 ffjtUserEntityDescriptionUrls: goto handle_Urls case ffjtUserEntityDescriptionnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Urls: /* handler: j.Urls type=[]*string 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 { j.Urls = nil } else { j.Urls = []*string{} wantVal := true for { var tmpJUrls *string 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: tmpJUrls type=*string kind=ptr quoted=false*/ { if tok == fflib.FFTok_null { tmpJUrls = nil } else { if tmpJUrls == nil { tmpJUrls = new(string) } /* handler: tmpJUrls 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 { tmpJUrls = nil } else { var tval string outBuf := fs.Output.Bytes() tval = string(string(outBuf)) tmpJUrls = &tval } } } } j.Urls = append(j.Urls, tmpJUrls) 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 } // MarshalJSON marshal bytes to json - template func (j *UserEntityURL) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *UserEntityURL) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"urls":`) if j.Urls != nil { buf.WriteString(`[`) for i, v := range j.Urls { if i != 0 { buf.WriteString(`,`) } { err = v.MarshalJSONBuf(buf) if err != nil { return err } } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteByte('}') return nil } const ( ffjtUserEntityURLbase = iota ffjtUserEntityURLnosuchkey ffjtUserEntityURLUrls ) var ffjKeyUserEntityURLUrls = []byte("urls") // UnmarshalJSON umarshall json - template of ffjson func (j *UserEntityURL) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *UserEntityURL) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtUserEntityURLbase _ = 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 = ffjtUserEntityURLnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'u': if bytes.Equal(ffjKeyUserEntityURLUrls, kn) { currentKey = ffjtUserEntityURLUrls state = fflib.FFParse_want_colon goto mainparse } } if fflib.EqualFoldRight(ffjKeyUserEntityURLUrls, kn) { currentKey = ffjtUserEntityURLUrls state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtUserEntityURLnosuchkey 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 ffjtUserEntityURLUrls: goto handle_Urls case ffjtUserEntityURLnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Urls: /* handler: j.Urls type=[]benchmark.URL 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 { j.Urls = nil } else { j.Urls = []URL{} wantVal := true for { var tmpJUrls URL 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: tmpJUrls type=benchmark.URL kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = tmpJUrls.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } j.Urls = append(j.Urls, tmpJUrls) 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 } // MarshalJSON marshal bytes to json - template func (j *XLStruct) MarshalJSON() ([]byte, error) { var buf fflib.Buffer if j == nil { buf.WriteString("null") return buf.Bytes(), nil } err := j.MarshalJSONBuf(&buf) if err != nil { return nil, err } return buf.Bytes(), nil } // MarshalJSONBuf marshal buff to json - template func (j *XLStruct) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"Data":`) if j.Data != nil { buf.WriteString(`[`) for i, v := range j.Data { if i != 0 { buf.WriteString(`,`) } { err = v.MarshalJSONBuf(buf) if err != nil { return err } } } buf.WriteString(`]`) } else { buf.WriteString(`null`) } buf.WriteByte('}') return nil } const ( ffjtXLStructbase = iota ffjtXLStructnosuchkey ffjtXLStructData ) var ffjKeyXLStructData = []byte("Data") // UnmarshalJSON umarshall json - template of ffjson func (j *XLStruct) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *XLStruct) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtXLStructbase _ = 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 = ffjtXLStructnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'D': if bytes.Equal(ffjKeyXLStructData, kn) { currentKey = ffjtXLStructData state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffjKeyXLStructData, kn) { currentKey = ffjtXLStructData state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtXLStructnosuchkey 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 ffjtXLStructData: goto handle_Data case ffjtXLStructnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_Data: /* handler: j.Data type=[]benchmark.LargeStruct 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 { j.Data = nil } else { j.Data = []LargeStruct{} wantVal := true for { var tmpJData LargeStruct 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: tmpJData type=benchmark.LargeStruct kind=struct quoted=false*/ { if tok == fflib.FFTok_null { } else { err = tmpJData.UnmarshalJSONFFLexer(fs, fflib.FFParse_want_key) if err != nil { return err } } state = fflib.FFParse_after_value } j.Data = append(j.Data, tmpJData) 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 }