@@ -7,64 +7,63 @@ import (
7
7
"github.com/mus-format/mus-go/ord"
8
8
"github.com/mus-format/mus-go/raw"
9
9
"github.com/mus-format/mus-go/unsafe"
10
- "github.com/mus-format/mus-go/varint"
11
10
)
12
11
13
12
type MUSSerializer struct {}
14
13
15
14
func (s MUSSerializer ) Marshal (o interface {}) ([]byte , error ) {
16
15
v := o .(* goserbench.SmallStruct )
17
- n := ord .SizeString (v .Name )
18
- n += raw .SizeInt64 (v .BirthDay .UnixNano ())
19
- n += ord .SizeString (v .Phone )
20
- n += varint .SizeInt32 (int32 (v .Siblings ))
21
- n += ord .SizeBool (v .Spouse )
22
- n += raw .SizeFloat64 (v .Money )
16
+ n := ord .SizeString (v .Name , nil )
17
+ n += unsafe .SizeInt64 (v .BirthDay .UnixNano ())
18
+ n += ord .SizeString (v .Phone , nil )
19
+ n += unsafe .SizeInt32 (int32 (v .Siblings ))
20
+ n += unsafe .SizeBool (v .Spouse )
21
+ n += unsafe .SizeFloat64 (v .Money )
23
22
buf := make ([]byte , n )
24
- n = ord .MarshalString (v .Name , buf )
25
- n += raw .MarshalInt64 (v .BirthDay .UnixNano (), buf [n :])
26
- n += ord .MarshalString (v .Phone , buf [n :])
27
- n += varint .MarshalInt32 (int32 (v .Siblings ), buf [n :])
28
- n += ord .MarshalBool (v .Spouse , buf [n :])
23
+ n = ord .MarshalString (v .Name , nil , buf )
24
+ n += unsafe .MarshalInt64 (v .BirthDay .UnixNano (), buf [n :])
25
+ n += ord .MarshalString (v .Phone , nil , buf [n :])
26
+ n += unsafe .MarshalInt32 (int32 (v .Siblings ), buf [n :])
27
+ n += unsafe .MarshalBool (v .Spouse , buf [n :])
29
28
raw .MarshalFloat64 (v .Money , buf [n :])
30
29
return buf , nil
31
30
}
32
31
33
32
func (s MUSSerializer ) Unmarshal (bs []byte , o interface {}) (err error ) {
34
33
v := o .(* goserbench.SmallStruct )
35
34
var n int
36
- v .Name , n , err = ord .UnmarshalString (bs )
35
+ v .Name , n , err = ord .UnmarshalString (nil , bs )
37
36
if err != nil {
38
37
return
39
38
}
40
39
var (
41
40
n1 int
42
41
birthDay64 int64
43
42
)
44
- birthDay64 , n1 , err = raw .UnmarshalInt64 (bs [n :])
43
+ birthDay64 , n1 , err = unsafe .UnmarshalInt64 (bs [n :])
45
44
n += n1
46
45
if err != nil {
47
46
return
48
47
}
49
48
v .BirthDay = time .Unix (0 , birthDay64 )
50
- v .Phone , n1 , err = ord .UnmarshalString (bs [n :])
49
+ v .Phone , n1 , err = ord .UnmarshalString (nil , bs [n :])
51
50
n += n1
52
51
if err != nil {
53
52
return
54
53
}
55
54
var siblings32 int32
56
- siblings32 , n1 , err = varint .UnmarshalInt32 (bs [n :])
55
+ siblings32 , n1 , err = unsafe .UnmarshalInt32 (bs [n :])
57
56
n += n1
58
57
if err != nil {
59
58
return
60
59
}
61
60
v .Siblings = int (siblings32 )
62
- v .Spouse , n1 , err = ord .UnmarshalBool (bs [n :])
61
+ v .Spouse , n1 , err = unsafe .UnmarshalBool (bs [n :])
63
62
n += n1
64
63
if err != nil {
65
64
return
66
65
}
67
- v .Money , n1 , err = raw .UnmarshalFloat64 (bs [n :])
66
+ v .Money , n1 , err = unsafe .UnmarshalFloat64 (bs [n :])
68
67
n += n1
69
68
return
70
69
}
@@ -79,9 +78,9 @@ type MUSUnsafeReuseSerializer struct {
79
78
80
79
func (s MUSUnsafeReuseSerializer ) Marshal (o interface {}) ([]byte , error ) {
81
80
v := o .(* goserbench.SmallStruct )
82
- n := unsafe .MarshalString (v .Name , s .buf )
81
+ n := unsafe .MarshalString (v .Name , nil , s .buf )
83
82
n += unsafe .MarshalInt64 (v .BirthDay .UnixNano (), s .buf [n :])
84
- n += unsafe .MarshalString (v .Phone , s .buf [n :])
83
+ n += unsafe .MarshalString (v .Phone , nil , s .buf [n :])
85
84
n += unsafe .MarshalInt32 (int32 (v .Siblings ), s .buf [n :])
86
85
n += unsafe .MarshalBool (v .Spouse , s .buf [n :])
87
86
n += unsafe .MarshalFloat64 (v .Money , s .buf [n :])
@@ -91,7 +90,7 @@ func (s MUSUnsafeReuseSerializer) Marshal(o interface{}) ([]byte, error) {
91
90
func (s MUSUnsafeReuseSerializer ) Unmarshal (bs []byte , o interface {}) (err error ) {
92
91
v := o .(* goserbench.SmallStruct )
93
92
var n int
94
- v .Name , n , err = unsafe .UnmarshalString (bs )
93
+ v .Name , n , err = unsafe .UnmarshalString (nil , bs )
95
94
if err != nil {
96
95
return
97
96
}
@@ -105,7 +104,7 @@ func (s MUSUnsafeReuseSerializer) Unmarshal(bs []byte, o interface{}) (err error
105
104
return
106
105
}
107
106
v .BirthDay = time .Unix (0 , birthDay64 )
108
- v .Phone , n1 , err = unsafe .UnmarshalString (bs [n :])
107
+ v .Phone , n1 , err = unsafe .UnmarshalString (nil , bs [n :])
109
108
n += n1
110
109
if err != nil {
111
110
return
0 commit comments