diff options
author | Rutger Broekhoff | 2023-12-29 21:31:53 +0100 |
---|---|---|
committer | Rutger Broekhoff | 2023-12-29 21:31:53 +0100 |
commit | 404aeae4545d2426c089a5f8d5e82dae56f5212b (patch) | |
tree | 2d84e00af272b39fc04f3795ae06bc48970e57b5 /vendor/github.com/json-iterator/go/stream_int.go | |
parent | 209d8b0187ed025dec9ac149ebcced3462877bff (diff) | |
download | gitolfs3-404aeae4545d2426c089a5f8d5e82dae56f5212b.tar.gz gitolfs3-404aeae4545d2426c089a5f8d5e82dae56f5212b.zip |
Make Nix builds work
Diffstat (limited to 'vendor/github.com/json-iterator/go/stream_int.go')
-rw-r--r-- | vendor/github.com/json-iterator/go/stream_int.go | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/vendor/github.com/json-iterator/go/stream_int.go b/vendor/github.com/json-iterator/go/stream_int.go new file mode 100644 index 0000000..d1059ee --- /dev/null +++ b/vendor/github.com/json-iterator/go/stream_int.go | |||
@@ -0,0 +1,190 @@ | |||
1 | package jsoniter | ||
2 | |||
3 | var digits []uint32 | ||
4 | |||
5 | func init() { | ||
6 | digits = make([]uint32, 1000) | ||
7 | for i := uint32(0); i < 1000; i++ { | ||
8 | digits[i] = (((i / 100) + '0') << 16) + ((((i / 10) % 10) + '0') << 8) + i%10 + '0' | ||
9 | if i < 10 { | ||
10 | digits[i] += 2 << 24 | ||
11 | } else if i < 100 { | ||
12 | digits[i] += 1 << 24 | ||
13 | } | ||
14 | } | ||
15 | } | ||
16 | |||
17 | func writeFirstBuf(space []byte, v uint32) []byte { | ||
18 | start := v >> 24 | ||
19 | if start == 0 { | ||
20 | space = append(space, byte(v>>16), byte(v>>8)) | ||
21 | } else if start == 1 { | ||
22 | space = append(space, byte(v>>8)) | ||
23 | } | ||
24 | space = append(space, byte(v)) | ||
25 | return space | ||
26 | } | ||
27 | |||
28 | func writeBuf(buf []byte, v uint32) []byte { | ||
29 | return append(buf, byte(v>>16), byte(v>>8), byte(v)) | ||
30 | } | ||
31 | |||
32 | // WriteUint8 write uint8 to stream | ||
33 | func (stream *Stream) WriteUint8(val uint8) { | ||
34 | stream.buf = writeFirstBuf(stream.buf, digits[val]) | ||
35 | } | ||
36 | |||
37 | // WriteInt8 write int8 to stream | ||
38 | func (stream *Stream) WriteInt8(nval int8) { | ||
39 | var val uint8 | ||
40 | if nval < 0 { | ||
41 | val = uint8(-nval) | ||
42 | stream.buf = append(stream.buf, '-') | ||
43 | } else { | ||
44 | val = uint8(nval) | ||
45 | } | ||
46 | stream.buf = writeFirstBuf(stream.buf, digits[val]) | ||
47 | } | ||
48 | |||
49 | // WriteUint16 write uint16 to stream | ||
50 | func (stream *Stream) WriteUint16(val uint16) { | ||
51 | q1 := val / 1000 | ||
52 | if q1 == 0 { | ||
53 | stream.buf = writeFirstBuf(stream.buf, digits[val]) | ||
54 | return | ||
55 | } | ||
56 | r1 := val - q1*1000 | ||
57 | stream.buf = writeFirstBuf(stream.buf, digits[q1]) | ||
58 | stream.buf = writeBuf(stream.buf, digits[r1]) | ||
59 | return | ||
60 | } | ||
61 | |||
62 | // WriteInt16 write int16 to stream | ||
63 | func (stream *Stream) WriteInt16(nval int16) { | ||
64 | var val uint16 | ||
65 | if nval < 0 { | ||
66 | val = uint16(-nval) | ||
67 | stream.buf = append(stream.buf, '-') | ||
68 | } else { | ||
69 | val = uint16(nval) | ||
70 | } | ||
71 | stream.WriteUint16(val) | ||
72 | } | ||
73 | |||
74 | // WriteUint32 write uint32 to stream | ||
75 | func (stream *Stream) WriteUint32(val uint32) { | ||
76 | q1 := val / 1000 | ||
77 | if q1 == 0 { | ||
78 | stream.buf = writeFirstBuf(stream.buf, digits[val]) | ||
79 | return | ||
80 | } | ||
81 | r1 := val - q1*1000 | ||
82 | q2 := q1 / 1000 | ||
83 | if q2 == 0 { | ||
84 | stream.buf = writeFirstBuf(stream.buf, digits[q1]) | ||
85 | stream.buf = writeBuf(stream.buf, digits[r1]) | ||
86 | return | ||
87 | } | ||
88 | r2 := q1 - q2*1000 | ||
89 | q3 := q2 / 1000 | ||
90 | if q3 == 0 { | ||
91 | stream.buf = writeFirstBuf(stream.buf, digits[q2]) | ||
92 | } else { | ||
93 | r3 := q2 - q3*1000 | ||
94 | stream.buf = append(stream.buf, byte(q3+'0')) | ||
95 | stream.buf = writeBuf(stream.buf, digits[r3]) | ||
96 | } | ||
97 | stream.buf = writeBuf(stream.buf, digits[r2]) | ||
98 | stream.buf = writeBuf(stream.buf, digits[r1]) | ||
99 | } | ||
100 | |||
101 | // WriteInt32 write int32 to stream | ||
102 | func (stream *Stream) WriteInt32(nval int32) { | ||
103 | var val uint32 | ||
104 | if nval < 0 { | ||
105 | val = uint32(-nval) | ||
106 | stream.buf = append(stream.buf, '-') | ||
107 | } else { | ||
108 | val = uint32(nval) | ||
109 | } | ||
110 | stream.WriteUint32(val) | ||
111 | } | ||
112 | |||
113 | // WriteUint64 write uint64 to stream | ||
114 | func (stream *Stream) WriteUint64(val uint64) { | ||
115 | q1 := val / 1000 | ||
116 | if q1 == 0 { | ||
117 | stream.buf = writeFirstBuf(stream.buf, digits[val]) | ||
118 | return | ||
119 | } | ||
120 | r1 := val - q1*1000 | ||
121 | q2 := q1 / 1000 | ||
122 | if q2 == 0 { | ||
123 | stream.buf = writeFirstBuf(stream.buf, digits[q1]) | ||
124 | stream.buf = writeBuf(stream.buf, digits[r1]) | ||
125 | return | ||
126 | } | ||
127 | r2 := q1 - q2*1000 | ||
128 | q3 := q2 / 1000 | ||
129 | if q3 == 0 { | ||
130 | stream.buf = writeFirstBuf(stream.buf, digits[q2]) | ||
131 | stream.buf = writeBuf(stream.buf, digits[r2]) | ||
132 | stream.buf = writeBuf(stream.buf, digits[r1]) | ||
133 | return | ||
134 | } | ||
135 | r3 := q2 - q3*1000 | ||
136 | q4 := q3 / 1000 | ||
137 | if q4 == 0 { | ||
138 | stream.buf = writeFirstBuf(stream.buf, digits[q3]) | ||
139 | stream.buf = writeBuf(stream.buf, digits[r3]) | ||
140 | stream.buf = writeBuf(stream.buf, digits[r2]) | ||
141 | stream.buf = writeBuf(stream.buf, digits[r1]) | ||
142 | return | ||
143 | } | ||
144 | r4 := q3 - q4*1000 | ||
145 | q5 := q4 / 1000 | ||
146 | if q5 == 0 { | ||
147 | stream.buf = writeFirstBuf(stream.buf, digits[q4]) | ||
148 | stream.buf = writeBuf(stream.buf, digits[r4]) | ||
149 | stream.buf = writeBuf(stream.buf, digits[r3]) | ||
150 | stream.buf = writeBuf(stream.buf, digits[r2]) | ||
151 | stream.buf = writeBuf(stream.buf, digits[r1]) | ||
152 | return | ||
153 | } | ||
154 | r5 := q4 - q5*1000 | ||
155 | q6 := q5 / 1000 | ||
156 | if q6 == 0 { | ||
157 | stream.buf = writeFirstBuf(stream.buf, digits[q5]) | ||
158 | } else { | ||
159 | stream.buf = writeFirstBuf(stream.buf, digits[q6]) | ||
160 | r6 := q5 - q6*1000 | ||
161 | stream.buf = writeBuf(stream.buf, digits[r6]) | ||
162 | } | ||
163 | stream.buf = writeBuf(stream.buf, digits[r5]) | ||
164 | stream.buf = writeBuf(stream.buf, digits[r4]) | ||
165 | stream.buf = writeBuf(stream.buf, digits[r3]) | ||
166 | stream.buf = writeBuf(stream.buf, digits[r2]) | ||
167 | stream.buf = writeBuf(stream.buf, digits[r1]) | ||
168 | } | ||
169 | |||
170 | // WriteInt64 write int64 to stream | ||
171 | func (stream *Stream) WriteInt64(nval int64) { | ||
172 | var val uint64 | ||
173 | if nval < 0 { | ||
174 | val = uint64(-nval) | ||
175 | stream.buf = append(stream.buf, '-') | ||
176 | } else { | ||
177 | val = uint64(nval) | ||
178 | } | ||
179 | stream.WriteUint64(val) | ||
180 | } | ||
181 | |||
182 | // WriteInt write int to stream | ||
183 | func (stream *Stream) WriteInt(val int) { | ||
184 | stream.WriteInt64(int64(val)) | ||
185 | } | ||
186 | |||
187 | // WriteUint write uint to stream | ||
188 | func (stream *Stream) WriteUint(val uint) { | ||
189 | stream.WriteUint64(uint64(val)) | ||
190 | } | ||