-
Notifications
You must be signed in to change notification settings - Fork 2
/
property.go
56 lines (39 loc) · 1.22 KB
/
property.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package fbx
import (
"fmt"
)
type PropertyType byte
func (t PropertyType) String() string {
return string([]byte{byte(t)})
}
type Property struct {
TypeCode PropertyType
Data interface{}
}
func (p *Property) AsString() string { return p.Data.(string) }
func (p *Property) AsBytes() []byte { return p.Data.([]byte) }
func (p *Property) AsInt8() int8 { return p.Data.(int8) }
func (p *Property) AsInt16() int16 { return p.Data.(int16) }
func (p *Property) AsInt32() int32 { return p.Data.(int32) }
func (p *Property) AsInt64() int64 { return p.Data.(int64) }
func (p *Property) AsFloat32() float32 { return p.Data.(float32) }
func (p *Property) AsFloat64() float64 { return p.Data.(float64) }
func (p *Property) AsFloat32Slice() (a []float32, ok bool) {
a, ok = p.Data.(*Array).Data.([]float32)
return
}
func (p *Property) AsFloat64Slice() (a []float64, ok bool) {
a, ok = p.Data.(*Array).Data.([]float64)
return
}
func (p *Property) AsInt32Slice() (a []int32, ok bool) {
a, ok = p.Data.(*Array).Data.([]int32)
return
}
func (p *Property) AsInt64Slice() (a []int64, ok bool) {
a, ok = p.Data.(*Array).Data.([]int64)
return
}
func (p *Property) String() string {
return fmt.Sprintf("'%v:%v'", p.TypeCode, p.Data)
}