// Code generated by ogen, DO NOT EDIT. package gsn import ( "math/bits" "strconv" "time" "github.com/go-faster/errors" "github.com/go-faster/jx" "github.com/ogen-go/ogen/json" "github.com/ogen-go/ogen/validate" ) // Encode implements json.Marshaler. func (s *Error) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *Error) encodeFields(e *jx.Encoder) { { e.FieldStart("message") e.Str(s.Message) } { if s.Details.Set { e.FieldStart("details") s.Details.Encode(e) } } } var jsonFieldsNameOfError = [2]string{ 0: "message", 1: "details", } // Decode decodes Error from json. func (s *Error) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Error to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "message": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() s.Message = string(v) if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"message\"") } case "details": if err := func() error { s.Details.Reset() if err := s.Details.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"details\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode Error") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000001, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfError) { name = jsonFieldsNameOfError[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *Error) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *Error) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes bool as json. func (o OptBool) Encode(e *jx.Encoder) { if !o.Set { return } e.Bool(bool(o.Value)) } // Decode decodes bool from json. func (o *OptBool) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptBool to nil") } o.Set = true v, err := d.Bool() if err != nil { return err } o.Value = bool(v) return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptBool) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptBool) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes time.Time as json. func (o OptDateTime) Encode(e *jx.Encoder, format func(*jx.Encoder, time.Time)) { if !o.Set { return } format(e, o.Value) } // Decode decodes time.Time from json. func (o *OptDateTime) Decode(d *jx.Decoder, format func(*jx.Decoder) (time.Time, error)) error { if o == nil { return errors.New("invalid: unable to decode OptDateTime to nil") } o.Set = true v, err := format(d) if err != nil { return err } o.Value = v return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptDateTime) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e, json.EncodeDateTime) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptDateTime) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d, json.DecodeDateTime) } // Encode encodes float64 as json. func (o OptFloat64) Encode(e *jx.Encoder) { if !o.Set { return } e.Float64(float64(o.Value)) } // Decode decodes float64 from json. func (o *OptFloat64) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptFloat64 to nil") } o.Set = true v, err := d.Float64() if err != nil { return err } o.Value = float64(v) return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptFloat64) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptFloat64) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes Parameters as json. func (o OptParameters) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } // Decode decodes Parameters from json. func (o *OptParameters) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptParameters to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptParameters) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptParameters) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ParametersFormat as json. func (o OptParametersFormat) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes ParametersFormat from json. func (o *OptParametersFormat) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptParametersFormat to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptParametersFormat) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptParametersFormat) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ParametersProfile as json. func (o OptParametersProfile) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes ParametersProfile from json. func (o *OptParametersProfile) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptParametersProfile to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptParametersProfile) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptParametersProfile) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes string as json. func (o OptString) Encode(e *jx.Encoder) { if !o.Set { return } e.Str(string(o.Value)) } // Decode decodes string from json. func (o *OptString) Decode(d *jx.Decoder) error { if o == nil { return errors.New("invalid: unable to decode OptString to nil") } o.Set = true v, err := d.Str() if err != nil { return err } o.Value = string(v) return nil } // MarshalJSON implements stdjson.Marshaler. func (s OptString) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *OptString) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *Parameters) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *Parameters) encodeFields(e *jx.Encoder) { { if s.LaunchLatitude.Set { e.FieldStart("launch_latitude") s.LaunchLatitude.Encode(e) } } { if s.LaunchLongitude.Set { e.FieldStart("launch_longitude") s.LaunchLongitude.Encode(e) } } { if s.LaunchDatetime.Set { e.FieldStart("launch_datetime") s.LaunchDatetime.Encode(e, json.EncodeDateTime) } } { if s.LaunchAltitude.Set { e.FieldStart("launch_altitude") s.LaunchAltitude.Encode(e) } } { if s.Profile.Set { e.FieldStart("profile") s.Profile.Encode(e) } } { if s.AscentRate.Set { e.FieldStart("ascent_rate") s.AscentRate.Encode(e) } } { if s.BurstAltitude.Set { e.FieldStart("burst_altitude") s.BurstAltitude.Encode(e) } } { if s.DescentRate.Set { e.FieldStart("descent_rate") s.DescentRate.Encode(e) } } { if s.FloatAltitude.Set { e.FieldStart("float_altitude") s.FloatAltitude.Encode(e) } } { if s.StopDatetime.Set { e.FieldStart("stop_datetime") s.StopDatetime.Encode(e, json.EncodeDateTime) } } { if s.AscentCurve.Set { e.FieldStart("ascent_curve") s.AscentCurve.Encode(e) } } { if s.DescentCurve.Set { e.FieldStart("descent_curve") s.DescentCurve.Encode(e) } } { if s.Interpolate.Set { e.FieldStart("interpolate") s.Interpolate.Encode(e) } } { if s.Format.Set { e.FieldStart("format") s.Format.Encode(e) } } { if s.Dataset.Set { e.FieldStart("dataset") s.Dataset.Encode(e, json.EncodeDateTime) } } } var jsonFieldsNameOfParameters = [15]string{ 0: "launch_latitude", 1: "launch_longitude", 2: "launch_datetime", 3: "launch_altitude", 4: "profile", 5: "ascent_rate", 6: "burst_altitude", 7: "descent_rate", 8: "float_altitude", 9: "stop_datetime", 10: "ascent_curve", 11: "descent_curve", 12: "interpolate", 13: "format", 14: "dataset", } // Decode decodes Parameters from json. func (s *Parameters) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Parameters to nil") } s.setDefaults() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "launch_latitude": if err := func() error { s.LaunchLatitude.Reset() if err := s.LaunchLatitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch_latitude\"") } case "launch_longitude": if err := func() error { s.LaunchLongitude.Reset() if err := s.LaunchLongitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch_longitude\"") } case "launch_datetime": if err := func() error { s.LaunchDatetime.Reset() if err := s.LaunchDatetime.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch_datetime\"") } case "launch_altitude": if err := func() error { s.LaunchAltitude.Reset() if err := s.LaunchAltitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"launch_altitude\"") } case "profile": if err := func() error { s.Profile.Reset() if err := s.Profile.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"profile\"") } case "ascent_rate": if err := func() error { s.AscentRate.Reset() if err := s.AscentRate.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"ascent_rate\"") } case "burst_altitude": if err := func() error { s.BurstAltitude.Reset() if err := s.BurstAltitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"burst_altitude\"") } case "descent_rate": if err := func() error { s.DescentRate.Reset() if err := s.DescentRate.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"descent_rate\"") } case "float_altitude": if err := func() error { s.FloatAltitude.Reset() if err := s.FloatAltitude.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"float_altitude\"") } case "stop_datetime": if err := func() error { s.StopDatetime.Reset() if err := s.StopDatetime.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"stop_datetime\"") } case "ascent_curve": if err := func() error { s.AscentCurve.Reset() if err := s.AscentCurve.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"ascent_curve\"") } case "descent_curve": if err := func() error { s.DescentCurve.Reset() if err := s.DescentCurve.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"descent_curve\"") } case "interpolate": if err := func() error { s.Interpolate.Reset() if err := s.Interpolate.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"interpolate\"") } case "format": if err := func() error { s.Format.Reset() if err := s.Format.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"format\"") } case "dataset": if err := func() error { s.Dataset.Reset() if err := s.Dataset.Decode(d, json.DecodeDateTime); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"dataset\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode Parameters") } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *Parameters) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *Parameters) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ParametersFormat as json. func (s ParametersFormat) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ParametersFormat from json. func (s *ParametersFormat) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ParametersFormat to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ParametersFormat(v) { case ParametersFormatJSON: *s = ParametersFormatJSON default: *s = ParametersFormat(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ParametersFormat) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ParametersFormat) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ParametersProfile as json. func (s ParametersProfile) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ParametersProfile from json. func (s *ParametersProfile) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ParametersProfile to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ParametersProfile(v) { case ParametersProfileStandardProfile: *s = ParametersProfileStandardProfile case ParametersProfileFloatProfile: *s = ParametersProfileFloatProfile case ParametersProfileReverseProfile: *s = ParametersProfileReverseProfile case ParametersProfileCustomProfile: *s = ParametersProfileCustomProfile default: *s = ParametersProfile(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ParametersProfile) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ParametersProfile) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *Result) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *Result) encodeFields(e *jx.Encoder) { { e.FieldStart("metadata") s.Metadata.Encode(e) } { e.FieldStart("prediction") e.ArrStart() for _, elem := range s.Prediction { elem.Encode(e) } e.ArrEnd() } } var jsonFieldsNameOfResult = [2]string{ 0: "metadata", 1: "prediction", } // Decode decodes Result from json. func (s *Result) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Result to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "metadata": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Metadata.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"metadata\"") } case "prediction": requiredBitSet[0] |= 1 << 1 if err := func() error { s.Prediction = make([]ResultPredictionItem, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem ResultPredictionItem if err := elem.Decode(d); err != nil { return err } s.Prediction = append(s.Prediction, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"prediction\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode Result") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000011, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfResult) { name = jsonFieldsNameOfResult[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *Result) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *Result) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *ResultMetadata) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *ResultMetadata) encodeFields(e *jx.Encoder) { { e.FieldStart("complete_datetime") json.EncodeDateTime(e, s.CompleteDatetime) } { e.FieldStart("start_datetime") json.EncodeDateTime(e, s.StartDatetime) } } var jsonFieldsNameOfResultMetadata = [2]string{ 0: "complete_datetime", 1: "start_datetime", } // Decode decodes ResultMetadata from json. func (s *ResultMetadata) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ResultMetadata to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "complete_datetime": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := json.DecodeDateTime(d) s.CompleteDatetime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"complete_datetime\"") } case "start_datetime": requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := json.DecodeDateTime(d) s.StartDatetime = v if err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"start_datetime\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode ResultMetadata") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000011, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfResultMetadata) { name = jsonFieldsNameOfResultMetadata[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *ResultMetadata) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ResultMetadata) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *ResultPredictionItem) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *ResultPredictionItem) encodeFields(e *jx.Encoder) { { e.FieldStart("stage") s.Stage.Encode(e) } { e.FieldStart("trajectory") e.ArrStart() for _, elem := range s.Trajectory { elem.Encode(e) } e.ArrEnd() } } var jsonFieldsNameOfResultPredictionItem = [2]string{ 0: "stage", 1: "trajectory", } // Decode decodes ResultPredictionItem from json. func (s *ResultPredictionItem) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ResultPredictionItem to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { case "stage": requiredBitSet[0] |= 1 << 0 if err := func() error { if err := s.Stage.Decode(d); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"stage\"") } case "trajectory": requiredBitSet[0] |= 1 << 1 if err := func() error { s.Trajectory = make([]ResultPredictionItemTrajectoryItem, 0) if err := d.Arr(func(d *jx.Decoder) error { var elem ResultPredictionItemTrajectoryItem if err := elem.Decode(d); err != nil { return err } s.Trajectory = append(s.Trajectory, elem) return nil }); err != nil { return err } return nil }(); err != nil { return errors.Wrap(err, "decode field \"trajectory\"") } default: return d.Skip() } return nil }); err != nil { return errors.Wrap(err, "decode ResultPredictionItem") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ 0b00000011, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. // // If XOR result is not zero, result is not equal to expected, so some fields are missed. // Bits of fields which would be set are actually bits of missed fields. missed := bits.OnesCount8(result) for bitN := 0; bitN < missed; bitN++ { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string if fieldIdx < len(jsonFieldsNameOfResultPredictionItem) { name = jsonFieldsNameOfResultPredictionItem[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } failures = append(failures, validate.FieldError{ Name: name, Error: validate.ErrFieldRequired, }) // Reset bit. result &^= 1 << bitIdx } } } if len(failures) > 0 { return &validate.Error{Fields: failures} } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *ResultPredictionItem) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ResultPredictionItem) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode encodes ResultPredictionItemStage as json. func (s ResultPredictionItemStage) Encode(e *jx.Encoder) { e.Str(string(s)) } // Decode decodes ResultPredictionItemStage from json. func (s *ResultPredictionItemStage) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ResultPredictionItemStage to nil") } v, err := d.StrBytes() if err != nil { return err } // Try to use constant string. switch ResultPredictionItemStage(v) { case ResultPredictionItemStageAscent: *s = ResultPredictionItemStageAscent case ResultPredictionItemStageDescent: *s = ResultPredictionItemStageDescent default: *s = ResultPredictionItemStage(v) } return nil } // MarshalJSON implements stdjson.Marshaler. func (s ResultPredictionItemStage) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ResultPredictionItemStage) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. func (s *ResultPredictionItemTrajectoryItem) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. func (s *ResultPredictionItemTrajectoryItem) encodeFields(e *jx.Encoder) { } var jsonFieldsNameOfResultPredictionItemTrajectoryItem = [0]string{} // Decode decodes ResultPredictionItemTrajectoryItem from json. func (s *ResultPredictionItemTrajectoryItem) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ResultPredictionItemTrajectoryItem to nil") } if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { default: return d.Skip() } }); err != nil { return errors.Wrap(err, "decode ResultPredictionItemTrajectoryItem") } return nil } // MarshalJSON implements stdjson.Marshaler. func (s *ResultPredictionItemTrajectoryItem) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. func (s *ResultPredictionItemTrajectoryItem) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) }