12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package muesli
- import "fmt"
- const FloatType = TypeValue("Float")
- // FloatValue are Muesli floating point values
- type FloatValue float64
- func (val FloatValue) String() string {
- return fmt.Sprintf("%f", float64(val))
- }
- func (v FloatValue) Type() TypeValue { return FloatType }
- func (from FloatValue) Convert(to interface{}) error {
- switch toPtr := to.(type) {
- case *string:
- (*toPtr) = from.String()
- case *int8:
- (*toPtr) = int8(from)
- case *int16:
- (*toPtr) = int16(from)
- case *int32:
- (*toPtr) = int32(from)
- case *int64:
- (*toPtr) = int64(from)
- case *int:
- (*toPtr) = int(from)
- case *bool:
- (*toPtr) = (from != 0)
- case *float32:
- (*toPtr) = float32(from)
- case *float64:
- (*toPtr) = float64(from)
- case *FloatValue:
- (*toPtr) = from
- case *Value:
- (*toPtr) = from
- default:
- return NewErrorValuef("Cannot convert FloatValue value %v to %v", from, to)
- }
- return nil
- }
|