Rev 8097 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8097 | Rev 8859 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | BSD 2-Clause License |
2 | BSD 2-Clause License |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | Copyright (c) 2018-2020, Anton Krotov |
4 | Copyright (c) 2018-2021, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 44... | Line 44... | ||
44 | END; |
44 | END; |
Line 45... | Line 45... | ||
45 | 45 | ||
46 | 46 | ||
47 | PROCEDURE SetByte* (list: BYTELIST; idx: INTEGER; byte: BYTE); |
- | |
48 | VAR |
47 | PROCEDURE SetByte* (list: BYTELIST; idx: INTEGER; byte: BYTE); |
- | 48 | VAR |
|
Line 49... | Line 49... | ||
49 | ChunkNum: INTEGER; |
49 | chunk: BYTECHUNK; |
50 | chunk: BYTECHUNK; |
50 | item: LISTS.ITEM; |
51 | 51 | ||
Line -... | Line 52... | ||
- | 52 | BEGIN |
|
- | 53 | ASSERT(idx >= 0); |
|
52 | BEGIN |
54 | ASSERT(list # NIL); |
53 | ASSERT(idx >= 0); |
55 | |
54 | ASSERT(list # NIL); |
- | |
55 | - | ||
56 | ChunkNum := idx DIV LENOFBYTECHUNK; |
- | |
57 | idx := idx MOD LENOFBYTECHUNK; |
- | |
58 | - | ||
59 | chunk := list.first(BYTECHUNK); |
- | |
60 | - | ||
61 | WHILE (chunk # NIL) & (ChunkNum > 0) DO |
- | |
62 | chunk := chunk.next(BYTECHUNK); |
- | |
63 | DEC(ChunkNum) |
56 | item := LISTS.getidx(list, idx DIV LENOFBYTECHUNK); |
64 | END; |
- | |
65 | 57 | ASSERT(item # NIL); |
|
66 | ASSERT(chunk # NIL); |
58 | chunk := item(BYTECHUNK); |
Line 67... | Line 59... | ||
67 | ASSERT(idx < chunk.count); |
59 | idx := idx MOD LENOFBYTECHUNK; |
68 | 60 | ASSERT(idx < chunk.count); |
|
69 | chunk.data[idx] := byte |
- | |
70 | END SetByte; |
61 | chunk.data[idx] := byte |
- | 62 | END SetByte; |
|
Line 71... | Line 63... | ||
71 | 63 | ||
72 | 64 | ||
73 | PROCEDURE GetByte* (list: BYTELIST; idx: INTEGER): BYTE; |
65 | PROCEDURE GetByte* (list: BYTELIST; idx: INTEGER): BYTE; |
Line -... | Line 66... | ||
- | 66 | VAR |
|
- | 67 | chunk: BYTECHUNK; |
|
74 | VAR |
68 | item: LISTS.ITEM; |
75 | ChunkNum: INTEGER; |
69 | |
76 | chunk: BYTECHUNK; |
- | |
77 | - | ||
78 | BEGIN |
- | |
79 | ASSERT(idx >= 0); |
- | |
80 | ASSERT(list # NIL); |
- | |
81 | - | ||
82 | ChunkNum := idx DIV LENOFBYTECHUNK; |
- | |
83 | idx := idx MOD LENOFBYTECHUNK; |
- | |
84 | - | ||
85 | chunk := list.first(BYTECHUNK); |
70 | BEGIN |
86 | - | ||
87 | WHILE (chunk # NIL) & (ChunkNum > 0) DO |
71 | ASSERT(idx >= 0); |
88 | chunk := chunk.next(BYTECHUNK); |
72 | ASSERT(list # NIL); |
Line 89... | Line 73... | ||
89 | DEC(ChunkNum) |
73 | |
Line 185... | Line 169... | ||
185 | END CreateByteList; |
169 | END CreateByteList; |
Line 186... | Line 170... | ||
186 | 170 | ||
187 | 171 | ||
188 | PROCEDURE SetInt* (list: INTLIST; idx: INTEGER; int: INTEGER); |
- | |
189 | VAR |
172 | PROCEDURE SetInt* (list: INTLIST; idx: INTEGER; int: INTEGER); |
- | 173 | VAR |
|
Line 190... | Line 174... | ||
190 | ChunkNum: INTEGER; |
174 | chunk: INTCHUNK; |
191 | chunk: INTCHUNK; |
175 | item: LISTS.ITEM; |
192 | 176 | ||
Line -... | Line 177... | ||
- | 177 | BEGIN |
|
- | 178 | ASSERT(idx >= 0); |
|
193 | BEGIN |
179 | ASSERT(list # NIL); |
194 | ASSERT(idx >= 0); |
180 | |
195 | ASSERT(list # NIL); |
- | |
196 | - | ||
197 | ChunkNum := idx DIV LENOFINTCHUNK; |
- | |
198 | idx := idx MOD LENOFINTCHUNK; |
- | |
199 | - | ||
200 | chunk := list.first(INTCHUNK); |
- | |
201 | - | ||
202 | WHILE (chunk # NIL) & (ChunkNum > 0) DO |
- | |
203 | chunk := chunk.next(INTCHUNK); |
- | |
204 | DEC(ChunkNum) |
181 | item := LISTS.getidx(list, idx DIV LENOFINTCHUNK); |
205 | END; |
- | |
206 | 182 | ASSERT(item # NIL); |
|
207 | ASSERT(chunk # NIL); |
183 | chunk := item(INTCHUNK); |
Line 208... | Line 184... | ||
208 | ASSERT(idx < chunk.count); |
184 | idx := idx MOD LENOFINTCHUNK; |
- | 185 | ASSERT(idx < chunk.count); |
|
209 | 186 | chunk.data[idx] := int |
|
210 | chunk.data[idx] := int |
- | |
211 | END SetInt; |
187 | END SetInt; |
- | 188 | ||
Line 212... | Line 189... | ||
212 | 189 | ||
213 | 190 | PROCEDURE GetInt* (list: INTLIST; idx: INTEGER): INTEGER; |
|
214 | PROCEDURE GetInt* (list: INTLIST; idx: INTEGER): INTEGER; |
191 | |
Line -... | Line 192... | ||
- | 192 | VAR |
|
- | 193 | chunk: INTCHUNK; |
|
215 | VAR |
194 | item: LISTS.ITEM; |
216 | ChunkNum: INTEGER; |
195 | |
217 | chunk: INTCHUNK; |
- | |
218 | - | ||
219 | BEGIN |
- | |
220 | ASSERT(idx >= 0); |
- | |
221 | ASSERT(list # NIL); |
- | |
222 | - | ||
223 | ChunkNum := idx DIV LENOFINTCHUNK; |
- | |
224 | idx := idx MOD LENOFINTCHUNK; |
- | |
225 | - | ||
226 | chunk := list.first(INTCHUNK); |
196 | BEGIN |
227 | - | ||
228 | WHILE (chunk # NIL) & (ChunkNum > 0) DO |
197 | ASSERT(idx >= 0); |
229 | chunk := chunk.next(INTCHUNK); |
198 | ASSERT(list # NIL); |
Line 230... | Line 199... | ||
230 | DEC(ChunkNum) |
199 |