src/zippy/internal

Search:
Group by:
Source   Edit  

Types

BlockMetadata = object
  litLenFreq*: array[maxLitLenCodes, uint32]
  distanceFreq*: array[maxDistanceCodes, uint32]
  numLiterals*: int
Source   Edit  
CompressionConfig = object
  good*, lazy*, nice*, chain*: int
Source   Edit  

Consts

allowSimd = true
Source   Edit  
baseDistanceExtraBits = [0'u, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
                         8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]
Source   Edit  
baseDistances = [1'u, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
                 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193,
                 12289, 16385, 24577]
Source   Edit  
baseLengthIndices = [0'u, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12,
                     12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
                     16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17,
                     17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19,
                     19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
                     20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
                     21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
                     22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
                     23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24,
                     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
                     24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25,
                     25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
                     25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26,
                     26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
                     26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27,
                     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
                     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28]
Source   Edit  
baseLengths = [3'u, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35,
               43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258]
Source   Edit  
baseLengthsExtraBits = [0'u, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3,
                        3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]
Source   Edit  
baseMatchLen = 3
Source   Edit  
clclOrder = [16'u, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]
Source   Edit  
configurationTable = [(good: 0, lazy: 0, nice: 0, chain: 0),
                      (good: 4, lazy: 4, nice: 8, chain: 4),
                      (good: 4, lazy: 5, nice: 16, chain: 8),
                      (good: 4, lazy: 6, nice: 32, chain: 32),
                      (good: 4, lazy: 4, nice: 16, chain: 16),
                      (good: 8, lazy: 16, nice: 32, chain: 32),
                      (good: 8, lazy: 16, nice: 128, chain: 128),
                      (good: 8, lazy: 32, nice: 256, chain: 256),
                      (good: 32, lazy: 128, nice: 258, chain: 1024),
                      (good: 32, lazy: 258, nice: 258, chain: 4096)]
Source   Edit  
fixedDistanceCodeLengths = [5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u,
                            5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u,
                            5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u, 5'u]
Source   Edit  
fixedDistanceCodes = [0'u, 16'u, 8'u, 24'u, 4'u, 20'u, 12'u, 28'u, 2'u, 18'u,
                      10'u, 26'u, 6'u, 22'u, 14'u, 30'u, 1'u, 17'u, 9'u, 25'u,
                      5'u, 21'u, 13'u, 29'u, 3'u, 19'u, 11'u, 27'u, 7'u, 23'u]
Source   Edit  
fixedLitLenCodeLengths = [8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u, 9'u,
                          9'u, 9'u, 9'u, 7'u, 7'u, 7'u, 7'u, 7'u, 7'u, 7'u, 7'u,
                          7'u, 7'u, 7'u, 7'u, 7'u, 7'u, 7'u, 7'u, 7'u, 7'u, 7'u,
                          7'u, 7'u, 7'u, 7'u, 7'u, 8'u, 8'u, 8'u, 8'u, 8'u, 8'u,
                          8'u, 8'u]
Source   Edit  
fixedLitLenCodes = [12'u, 140'u, 76'u, 204'u, 44'u, 172'u, 108'u, 236'u, 28'u,
                    156'u, 92'u, 220'u, 60'u, 188'u, 124'u, 252'u, 2'u, 130'u,
                    66'u, 194'u, 34'u, 162'u, 98'u, 226'u, 18'u, 146'u, 82'u,
                    210'u, 50'u, 178'u, 114'u, 242'u, 10'u, 138'u, 74'u, 202'u,
                    42'u, 170'u, 106'u, 234'u, 26'u, 154'u, 90'u, 218'u, 58'u,
                    186'u, 122'u, 250'u, 6'u, 134'u, 70'u, 198'u, 38'u, 166'u,
                    102'u, 230'u, 22'u, 150'u, 86'u, 214'u, 54'u, 182'u, 118'u,
                    246'u, 14'u, 142'u, 78'u, 206'u, 46'u, 174'u, 110'u, 238'u,
                    30'u, 158'u, 94'u, 222'u, 62'u, 190'u, 126'u, 254'u, 1'u,
                    129'u, 65'u, 193'u, 33'u, 161'u, 97'u, 225'u, 17'u, 145'u,
                    81'u, 209'u, 49'u, 177'u, 113'u, 241'u, 9'u, 137'u, 73'u,
                    201'u, 41'u, 169'u, 105'u, 233'u, 25'u, 153'u, 89'u, 217'u,
                    57'u, 185'u, 121'u, 249'u, 5'u, 133'u, 69'u, 197'u, 37'u,
                    165'u, 101'u, 229'u, 21'u, 149'u, 85'u, 213'u, 53'u, 181'u,
                    117'u, 245'u, 13'u, 141'u, 77'u, 205'u, 45'u, 173'u, 109'u,
                    237'u, 29'u, 157'u, 93'u, 221'u, 61'u, 189'u, 125'u, 253'u,
                    19'u, 275'u, 147'u, 403'u, 83'u, 339'u, 211'u, 467'u, 51'u,
                    307'u, 179'u, 435'u, 115'u, 371'u, 243'u, 499'u, 11'u,
                    267'u, 139'u, 395'u, 75'u, 331'u, 203'u, 459'u, 43'u, 299'u,
                    171'u, 427'u, 107'u, 363'u, 235'u, 491'u, 27'u, 283'u,
                    155'u, 411'u, 91'u, 347'u, 219'u, 475'u, 59'u, 315'u, 187'u,
                    443'u, 123'u, 379'u, 251'u, 507'u, 7'u, 263'u, 135'u, 391'u,
                    71'u, 327'u, 199'u, 455'u, 39'u, 295'u, 167'u, 423'u, 103'u,
                    359'u, 231'u, 487'u, 23'u, 279'u, 151'u, 407'u, 87'u, 343'u,
                    215'u, 471'u, 55'u, 311'u, 183'u, 439'u, 119'u, 375'u,
                    247'u, 503'u, 15'u, 271'u, 143'u, 399'u, 79'u, 335'u, 207'u,
                    463'u, 47'u, 303'u, 175'u, 431'u, 111'u, 367'u, 239'u,
                    495'u, 31'u, 287'u, 159'u, 415'u, 95'u, 351'u, 223'u, 479'u,
                    63'u, 319'u, 191'u, 447'u, 127'u, 383'u, 255'u, 511'u, 0'u,
                    64'u, 32'u, 96'u, 16'u, 80'u, 48'u, 112'u, 8'u, 72'u, 40'u,
                    104'u, 24'u, 88'u, 56'u, 120'u, 4'u, 68'u, 36'u, 100'u,
                    20'u, 84'u, 52'u, 116'u, 3'u, 131'u, 67'u, 195'u, 35'u,
                    163'u, 99'u, 227'u]
Source   Edit  
maxBlockSize = 4194304
Source   Edit  
maxCodeLength = 15
Source   Edit  
maxLiteralLength = 32767
Source   Edit  
maxLitLenCodes = 286
Source   Edit  
maxMatchLen = 258
Source   Edit  
maxWindowSize = 32768
Source   Edit  
minMatchLen = 4
Source   Edit  
S_IFDIR = 0o000000040000
Source   Edit  
TGEXEC = 0o000000000010
Source   Edit  
TGREAD = 0o000000000040
Source   Edit  
TGWRITE = 0o000000000020
Source   Edit  
TOEXEC = 0o000000000001
Source   Edit  
TOREAD = 0o000000000004
Source   Edit  
TOWRITE = 0o000000000002
Source   Edit  
TUEXEC = 0o000000000100
Source   Edit  
TUREAD = 0o000000000400
Source   Edit  
TUWRITE = 0o000000000200
Source   Edit  

Procs

proc copy64(dst, src: ptr UncheckedArray[uint8]; op, ip: int) {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc cpuid(eaxi, ecxi: int32): tuple[eax, ebx, ecx, edx: int32] {....raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc determineMatchLength(src: ptr UncheckedArray[uint8]; s1, s2, limit: int): int {.
    inline, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc distanceCodeIndex(value: uint16): uint16 {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc parseFilePermissions(permissions: int): set[FilePermission] {....raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc read16(s: string; pos: int): uint16 {.inline, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc read16(src: ptr UncheckedArray[uint8]; ip: int): uint16 {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc read32(s: string; pos: int): uint32 {.inline, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc read32(src: ptr UncheckedArray[uint8]; ip: int): uint32 {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc read64(src: ptr UncheckedArray[uint8]; ip: int): uint64 {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc toUnixPath(path: string): string {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc verifyPathIsSafeToExtract(path: string) {....raises: [ZippyError], tags: [],
    forbids: [].}
Source   Edit  
proc write64(dst: ptr UncheckedArray[uint8]; op: int; v: uint64) {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc writeFile(filename: string; content: openArray[char]) {....raises: [IOError],
    tags: [WriteIOEffect], forbids: [].}
Opens a file named filename for writing. Then writes the content completely to the file and closes the file afterwards. Raises an IO exception in case of an error. Source   Edit  

Templates

template currentExceptionAsZippyError(): untyped
Gets the current exception and returns it as a ZippyError with stack trace. Source   Edit  
template failArchiveEOF()
Source   Edit  
template failCompress()
Source   Edit  
template failUncompress()
Source   Edit