Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,63 @@
|
|||
include "cowgol.coh";
|
||||
|
||||
sub VLQEncode(number: uint32, buf: [uint8]) is
|
||||
var step := number;
|
||||
while step > 0 loop
|
||||
step := step >> 7;
|
||||
buf := @next buf;
|
||||
end loop;
|
||||
|
||||
var mark: uint8 := 0;
|
||||
while number > 0 loop
|
||||
buf := @prev buf;
|
||||
[buf] := mark | (number as uint8 & 0x7F);
|
||||
mark := 0x80;
|
||||
number := number >> 7;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub VLQDecode(buf: [uint8]): (result: uint32) is
|
||||
result := 0;
|
||||
loop
|
||||
var byte := [buf];
|
||||
buf := @next buf;
|
||||
result := (result << 7) | (byte & 0x7F) as uint32;
|
||||
|
||||
if byte & 0x80 == 0 then
|
||||
return;
|
||||
end if;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub VLQPrint(buf: [uint8]) is
|
||||
loop
|
||||
print_hex_i8([buf]);
|
||||
if [buf] & 0x80 == 0 then
|
||||
break;
|
||||
end if;
|
||||
buf := @next buf;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
sub VLQTest(value: uint32) is
|
||||
var buf: uint8[8];
|
||||
|
||||
print("Input: ");
|
||||
print_hex_i32(value);
|
||||
print_nl();
|
||||
|
||||
print("Encoded: ");
|
||||
VLQEncode(value, &buf[0]);
|
||||
VLQPrint(&buf[0]);
|
||||
print_nl();
|
||||
|
||||
print("Decoded: ");
|
||||
value := VLQDecode(&buf[0]);
|
||||
print_hex_i32(value);
|
||||
print_nl();
|
||||
end sub;
|
||||
|
||||
VLQTest(0x200000);
|
||||
print_nl();
|
||||
VLQTest(0x1FFFFF);
|
||||
print_nl();
|
||||
Loading…
Add table
Add a link
Reference in a new issue