podman
123 строки · 2.6 Кб
1package jsoniter
2
3import (
4"io"
5"unsafe"
6)
7
8type numberLazyAny struct {
9baseAny
10cfg *frozenConfig
11buf []byte
12err error
13}
14
15func (any *numberLazyAny) ValueType() ValueType {
16return NumberValue
17}
18
19func (any *numberLazyAny) MustBeValid() Any {
20return any
21}
22
23func (any *numberLazyAny) LastError() error {
24return any.err
25}
26
27func (any *numberLazyAny) ToBool() bool {
28return any.ToFloat64() != 0
29}
30
31func (any *numberLazyAny) ToInt() int {
32iter := any.cfg.BorrowIterator(any.buf)
33defer any.cfg.ReturnIterator(iter)
34val := iter.ReadInt()
35if iter.Error != nil && iter.Error != io.EOF {
36any.err = iter.Error
37}
38return val
39}
40
41func (any *numberLazyAny) ToInt32() int32 {
42iter := any.cfg.BorrowIterator(any.buf)
43defer any.cfg.ReturnIterator(iter)
44val := iter.ReadInt32()
45if iter.Error != nil && iter.Error != io.EOF {
46any.err = iter.Error
47}
48return val
49}
50
51func (any *numberLazyAny) ToInt64() int64 {
52iter := any.cfg.BorrowIterator(any.buf)
53defer any.cfg.ReturnIterator(iter)
54val := iter.ReadInt64()
55if iter.Error != nil && iter.Error != io.EOF {
56any.err = iter.Error
57}
58return val
59}
60
61func (any *numberLazyAny) ToUint() uint {
62iter := any.cfg.BorrowIterator(any.buf)
63defer any.cfg.ReturnIterator(iter)
64val := iter.ReadUint()
65if iter.Error != nil && iter.Error != io.EOF {
66any.err = iter.Error
67}
68return val
69}
70
71func (any *numberLazyAny) ToUint32() uint32 {
72iter := any.cfg.BorrowIterator(any.buf)
73defer any.cfg.ReturnIterator(iter)
74val := iter.ReadUint32()
75if iter.Error != nil && iter.Error != io.EOF {
76any.err = iter.Error
77}
78return val
79}
80
81func (any *numberLazyAny) ToUint64() uint64 {
82iter := any.cfg.BorrowIterator(any.buf)
83defer any.cfg.ReturnIterator(iter)
84val := iter.ReadUint64()
85if iter.Error != nil && iter.Error != io.EOF {
86any.err = iter.Error
87}
88return val
89}
90
91func (any *numberLazyAny) ToFloat32() float32 {
92iter := any.cfg.BorrowIterator(any.buf)
93defer any.cfg.ReturnIterator(iter)
94val := iter.ReadFloat32()
95if iter.Error != nil && iter.Error != io.EOF {
96any.err = iter.Error
97}
98return val
99}
100
101func (any *numberLazyAny) ToFloat64() float64 {
102iter := any.cfg.BorrowIterator(any.buf)
103defer any.cfg.ReturnIterator(iter)
104val := iter.ReadFloat64()
105if iter.Error != nil && iter.Error != io.EOF {
106any.err = iter.Error
107}
108return val
109}
110
111func (any *numberLazyAny) ToString() string {
112return *(*string)(unsafe.Pointer(&any.buf))
113}
114
115func (any *numberLazyAny) WriteTo(stream *Stream) {
116stream.Write(any.buf)
117}
118
119func (any *numberLazyAny) GetInterface() interface{} {
120iter := any.cfg.BorrowIterator(any.buf)
121defer any.cfg.ReturnIterator(iter)
122return iter.Read()
123}
124