修复了大量存在的问题,增加了假鸭子类型等等机制
This commit is contained in:
@@ -611,7 +611,7 @@ def test_huffman_tree():
|
||||
printf(" All 32 distance codes: 5 bits each\n")
|
||||
|
||||
printf("\n --- Dynamic Huffman tree from frequencies ---\n")
|
||||
freqs: list[t.CInt, 256]
|
||||
freqs: t.CArray[t.CInt, 256]
|
||||
memset(freqs, 0, freqs.__sizeof__())
|
||||
freqs['A'] = 50
|
||||
freqs['B'] = 25
|
||||
@@ -641,8 +641,8 @@ def test_huffman_tree():
|
||||
printf(" Active codes: %d, max code lengthgth: %d\n", total_codes, max_length_found)
|
||||
|
||||
printf(" Code assignments:\n")
|
||||
names: list[str, None] = ["A","B","C","D","E","F"] # ä¸ä¸ªé½æ?char* çæ°ç»?
|
||||
syms: list[t.CInt, None] = ['A','B','C','D','E','F']
|
||||
names: t.CArray[str, None] = ["A","B","C","D","E","F"] # ä¸ä¸ªé½æ?char* çæ°ç»?
|
||||
syms: t.CArray[t.CInt, None] = ['A','B','C','D','E','F']
|
||||
for i in range(6):
|
||||
printf(" '%s' (freq=%3d): code=0x%04X, bits=%d\n",
|
||||
names[i], freqs[syms[i]],
|
||||
@@ -660,7 +660,7 @@ def test_huffman_tree():
|
||||
a_bits, f_bits, "YES" if (a_bits <= f_bits) else "NO")
|
||||
|
||||
printf("\n --- Huffman encode/decode roundtrip ---\n")
|
||||
freqs: list[t.CInt, 288]
|
||||
freqs: t.CArray[t.CInt, 288]
|
||||
memset(freqs, 0, freqs.__sizeof__())
|
||||
freqs['H'] = 10
|
||||
freqs['e'] = 8
|
||||
@@ -681,7 +681,7 @@ def test_huffman_tree():
|
||||
|
||||
writer = zdef.zbit_writer()
|
||||
|
||||
symbols: list[t.CInt, None] = ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', 256]
|
||||
symbols: t.CArray[t.CInt, None] = ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', 256]
|
||||
num_symbols: t.CInt = 13
|
||||
|
||||
for i in range(num_symbols):
|
||||
@@ -707,7 +707,7 @@ def test_huffman_tree():
|
||||
free(writer.buf)
|
||||
|
||||
printf("\n --- Overflow handling (many symbols, limited max_bits) ---\n")
|
||||
freqs: list[t.CInt, 256]
|
||||
freqs: t.CArray[t.CInt, 256]
|
||||
for i in range(256):
|
||||
freqs[i] = 1
|
||||
freqs[256] = 1
|
||||
@@ -722,7 +722,7 @@ def test_huffman_tree():
|
||||
break
|
||||
check("all code lengthgths <= 15 with 257 symbols", overflow_ok, "code lengthgth overflow")
|
||||
|
||||
bl_count: list[t.CInt, 16] = [0]
|
||||
bl_count: t.CArray[t.CInt, 16] = [0]
|
||||
for i in range(257):
|
||||
if tree.codes[i].bits > 0:
|
||||
bl_count[tree.codes[i].bits] += 1
|
||||
@@ -760,7 +760,7 @@ def test_huffman_tree():
|
||||
|
||||
|
||||
printf("\n --- Kraft inequality check ---\n")
|
||||
freqs: list[t.CInt, 256]
|
||||
freqs: t.CArray[t.CInt, 256]
|
||||
memset(freqs, 0, freqs.__sizeof__())
|
||||
freqs['X'] = 100
|
||||
freqs['Y'] = 50
|
||||
|
||||
Reference in New Issue
Block a user