// Code generated by ffjson . DO NOT EDIT. // source: small_payload.go package benchmark import ( "bytes" "fmt" fflib "github.com/pquerna/ffjson/fflib/v1" ) // MarshalJSON marshal bytes to json - template func (j *SmallPayloadFFJson) 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 *SmallPayloadFFJson) MarshalJSONBuf(buf fflib.EncodingBuffer) error { if j == nil { buf.WriteString("null") return nil } var err error var obj []byte _ = obj _ = err buf.WriteString(`{"St":`) fflib.FormatBits2(buf, uint64(j.St), 10, j.St < 0) buf.WriteString(`,"Sid":`) fflib.FormatBits2(buf, uint64(j.Sid), 10, j.Sid < 0) buf.WriteString(`,"Tt":`) fflib.WriteJsonString(buf, string(j.Tt)) buf.WriteString(`,"Gr":`) fflib.FormatBits2(buf, uint64(j.Gr), 10, j.Gr < 0) buf.WriteString(`,"Uuid":`) fflib.WriteJsonString(buf, string(j.Uuid)) buf.WriteString(`,"Ip":`) fflib.WriteJsonString(buf, string(j.Ip)) buf.WriteString(`,"Ua":`) fflib.WriteJsonString(buf, string(j.Ua)) buf.WriteString(`,"Tz":`) fflib.FormatBits2(buf, uint64(j.Tz), 10, j.Tz < 0) buf.WriteString(`,"V":`) fflib.FormatBits2(buf, uint64(j.V), 10, j.V < 0) buf.WriteByte('}') return nil } const ( ffjtSmallPayloadFFJsonbase = iota ffjtSmallPayloadFFJsonnosuchkey ffjtSmallPayloadFFJsonSt ffjtSmallPayloadFFJsonSid ffjtSmallPayloadFFJsonTt ffjtSmallPayloadFFJsonGr ffjtSmallPayloadFFJsonUuid ffjtSmallPayloadFFJsonIp ffjtSmallPayloadFFJsonUa ffjtSmallPayloadFFJsonTz ffjtSmallPayloadFFJsonV ) var ffjKeySmallPayloadFFJsonSt = []byte("St") var ffjKeySmallPayloadFFJsonSid = []byte("Sid") var ffjKeySmallPayloadFFJsonTt = []byte("Tt") var ffjKeySmallPayloadFFJsonGr = []byte("Gr") var ffjKeySmallPayloadFFJsonUuid = []byte("Uuid") var ffjKeySmallPayloadFFJsonIp = []byte("Ip") var ffjKeySmallPayloadFFJsonUa = []byte("Ua") var ffjKeySmallPayloadFFJsonTz = []byte("Tz") var ffjKeySmallPayloadFFJsonV = []byte("V") // UnmarshalJSON umarshall json - template of ffjson func (j *SmallPayloadFFJson) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return j.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } // UnmarshalJSONFFLexer fast json unmarshall - template ffjson func (j *SmallPayloadFFJson) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error { var err error currentKey := ffjtSmallPayloadFFJsonbase _ = 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 = ffjtSmallPayloadFFJsonnosuchkey state = fflib.FFParse_want_colon goto mainparse } else { switch kn[0] { case 'G': if bytes.Equal(ffjKeySmallPayloadFFJsonGr, kn) { currentKey = ffjtSmallPayloadFFJsonGr state = fflib.FFParse_want_colon goto mainparse } case 'I': if bytes.Equal(ffjKeySmallPayloadFFJsonIp, kn) { currentKey = ffjtSmallPayloadFFJsonIp state = fflib.FFParse_want_colon goto mainparse } case 'S': if bytes.Equal(ffjKeySmallPayloadFFJsonSt, kn) { currentKey = ffjtSmallPayloadFFJsonSt state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeySmallPayloadFFJsonSid, kn) { currentKey = ffjtSmallPayloadFFJsonSid state = fflib.FFParse_want_colon goto mainparse } case 'T': if bytes.Equal(ffjKeySmallPayloadFFJsonTt, kn) { currentKey = ffjtSmallPayloadFFJsonTt state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeySmallPayloadFFJsonTz, kn) { currentKey = ffjtSmallPayloadFFJsonTz state = fflib.FFParse_want_colon goto mainparse } case 'U': if bytes.Equal(ffjKeySmallPayloadFFJsonUuid, kn) { currentKey = ffjtSmallPayloadFFJsonUuid state = fflib.FFParse_want_colon goto mainparse } else if bytes.Equal(ffjKeySmallPayloadFFJsonUa, kn) { currentKey = ffjtSmallPayloadFFJsonUa state = fflib.FFParse_want_colon goto mainparse } case 'V': if bytes.Equal(ffjKeySmallPayloadFFJsonV, kn) { currentKey = ffjtSmallPayloadFFJsonV state = fflib.FFParse_want_colon goto mainparse } } if fflib.SimpleLetterEqualFold(ffjKeySmallPayloadFFJsonV, kn) { currentKey = ffjtSmallPayloadFFJsonV state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeySmallPayloadFFJsonTz, kn) { currentKey = ffjtSmallPayloadFFJsonTz state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeySmallPayloadFFJsonUa, kn) { currentKey = ffjtSmallPayloadFFJsonUa state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeySmallPayloadFFJsonIp, kn) { currentKey = ffjtSmallPayloadFFJsonIp state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeySmallPayloadFFJsonUuid, kn) { currentKey = ffjtSmallPayloadFFJsonUuid state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeySmallPayloadFFJsonGr, kn) { currentKey = ffjtSmallPayloadFFJsonGr state = fflib.FFParse_want_colon goto mainparse } if fflib.SimpleLetterEqualFold(ffjKeySmallPayloadFFJsonTt, kn) { currentKey = ffjtSmallPayloadFFJsonTt state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeySmallPayloadFFJsonSid, kn) { currentKey = ffjtSmallPayloadFFJsonSid state = fflib.FFParse_want_colon goto mainparse } if fflib.EqualFoldRight(ffjKeySmallPayloadFFJsonSt, kn) { currentKey = ffjtSmallPayloadFFJsonSt state = fflib.FFParse_want_colon goto mainparse } currentKey = ffjtSmallPayloadFFJsonnosuchkey 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 ffjtSmallPayloadFFJsonSt: goto handle_St case ffjtSmallPayloadFFJsonSid: goto handle_Sid case ffjtSmallPayloadFFJsonTt: goto handle_Tt case ffjtSmallPayloadFFJsonGr: goto handle_Gr case ffjtSmallPayloadFFJsonUuid: goto handle_Uuid case ffjtSmallPayloadFFJsonIp: goto handle_Ip case ffjtSmallPayloadFFJsonUa: goto handle_Ua case ffjtSmallPayloadFFJsonTz: goto handle_Tz case ffjtSmallPayloadFFJsonV: goto handle_V case ffjtSmallPayloadFFJsonnosuchkey: err = fs.SkipField(tok) if err != nil { return fs.WrapErr(err) } state = fflib.FFParse_after_value goto mainparse } } else { goto wantedvalue } } } handle_St: /* handler: j.St type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } j.St = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Sid: /* handler: j.Sid type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } j.Sid = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Tt: /* handler: j.Tt type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() j.Tt = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Gr: /* handler: j.Gr type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } j.Gr = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_Uuid: /* handler: j.Uuid type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() j.Uuid = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Ip: /* handler: j.Ip type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() j.Ip = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Ua: /* handler: j.Ua type=string kind=string quoted=false*/ { { if tok != fflib.FFTok_string && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for string", tok)) } } if tok == fflib.FFTok_null { } else { outBuf := fs.Output.Bytes() j.Ua = string(string(outBuf)) } } state = fflib.FFParse_after_value goto mainparse handle_Tz: /* handler: j.Tz type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } j.Tz = int(tval) } } state = fflib.FFParse_after_value goto mainparse handle_V: /* handler: j.V type=int kind=int quoted=false*/ { if tok != fflib.FFTok_integer && tok != fflib.FFTok_null { return fs.WrapErr(fmt.Errorf("cannot unmarshal %s into Go value for int", tok)) } } { if tok == fflib.FFTok_null { } else { tval, err := fflib.ParseInt(fs.Output.Bytes(), 10, 64) if err != nil { return fs.WrapErr(err) } j.V = int(tval) } } state = fflib.FFParse_after_value goto mainparse wantedvalue: return fs.WrapErr(fmt.Errorf("wanted value token, but got token: %v", tok)) wrongtokenerror: return fs.WrapErr(fmt.Errorf("ffjson: wanted token: %v, but got token: %v output=%s", wantedTok, tok, fs.Output.String())) tokerror: if fs.BigError != nil { return fs.WrapErr(fs.BigError) } err = fs.Error.ToError() if err != nil { return fs.WrapErr(err) } panic("ffjson-generated: unreachable, please report bug.") done: return nil }