MCPcopy Create free account
hub / github.com/apache/fory / compatibleValueToString

Function compatibleValueToString

go/fory/compatible_scalar.go:503–543  ·  view source on GitHub ↗
(value compatibleScalarValue)

Source from the content-addressed store, hash-verified

501}
502
503func compatibleValueToString(value compatibleScalarValue) (string, bool) {
504 if value.typeID == BOOL {
505 if value.boolVal {
506 return "true", true
507 }
508 return "false", true
509 }
510 switch value.typeID {
511 case INT8, INT16, INT32, VARINT32, INT64, VARINT64, TAGGED_INT64:
512 return strconv.FormatInt(value.signed, 10), true
513 case UINT8, UINT16, UINT32, VAR_UINT32, UINT64, VAR_UINT64, TAGGED_UINT64:
514 return strconv.FormatUint(value.unsigned, 10), true
515 case FLOAT16:
516 f := float16.Float16FromBits(value.halfBits)
517 if !f.IsFinite() {
518 return "", false
519 }
520 return finiteFloatRatString(exactRatFromFloat32(f.Float32()), f.Signbit() && f.IsZero())
521 case BFLOAT16:
522 f := bfloat16.BFloat16FromBits(value.halfBits).Float32()
523 if math.IsNaN(float64(f)) || math.IsInf(float64(f), 0) {
524 return "", false
525 }
526 return finiteFloatRatString(exactRatFromFloat32(f), math.Float32bits(f) == 0x80000000)
527 case FLOAT32:
528 f := float32(value.float64)
529 if math.IsNaN(float64(f)) || math.IsInf(float64(f), 0) {
530 return "", false
531 }
532 return finiteFloatRatString(exactRatFromFloat32(f), value.negZero)
533 case FLOAT64:
534 if math.IsNaN(value.float64) || math.IsInf(value.float64, 0) {
535 return "", false
536 }
537 return finiteFloatRatString(exactRatFromFloat64(value.float64), value.negZero)
538 case DECIMAL:
539 return canonicalDecimalString(value.decimal)
540 default:
541 return "", false
542 }
543}
544
545func compatibleValueToDecimal(value compatibleScalarValue) (Decimal, bool) {
546 if value.typeID == BOOL {

Callers 1

Calls 12

finiteFloatRatStringFunction · 0.85
exactRatFromFloat32Function · 0.85
exactRatFromFloat64Function · 0.85
canonicalDecimalStringFunction · 0.85
IsFiniteMethod · 0.80
SignbitMethod · 0.80
IsZeroMethod · 0.80
IsNaNMethod · 0.80
IsInfMethod · 0.80
float64Function · 0.50
float32Function · 0.50
Float32Method · 0.45

Tested by

no test coverage detected