dissect.cstruct 5.0.dev0__py3-none-any.whl → 5.0.dev7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dissect/cstruct/__init__.py +2 -2
- dissect/cstruct/bitbuffer.py +3 -3
- dissect/cstruct/compiler.py +7 -7
- dissect/cstruct/cstruct.py +192 -65
- dissect/cstruct/expression.py +8 -9
- dissect/cstruct/lexer.py +17 -7
- dissect/cstruct/parser.py +31 -13
- dissect/cstruct/tools/stubgen.py +18 -22
- dissect/cstruct/types/base.py +78 -33
- dissect/cstruct/types/char.py +21 -11
- dissect/cstruct/types/enum.py +33 -13
- dissect/cstruct/types/int.py +9 -7
- dissect/cstruct/types/leb128.py +6 -4
- dissect/cstruct/types/packed.py +19 -10
- dissect/cstruct/types/pointer.py +74 -56
- dissect/cstruct/types/structure.py +130 -30
- dissect/cstruct/types/void.py +6 -4
- dissect/cstruct/types/wchar.py +26 -14
- dissect/cstruct/{utils.py → util.py} +36 -25
- {dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/METADATA +1 -1
- dissect_cstruct-5.0.dev7.dist-info/RECORD +32 -0
- {dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/scm_file_list.json +2 -2
- dissect_cstruct-5.0.dev7.dist-info/scm_version.json +8 -0
- dissect_cstruct-5.0.dev0.dist-info/RECORD +0 -32
- dissect_cstruct-5.0.dev0.dist-info/scm_version.json +0 -8
- /dissect/cstruct/{exceptions.py → exception.py} +0 -0
- {dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/WHEEL +0 -0
- {dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/entry_points.txt +0 -0
- {dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/licenses/COPYRIGHT +0 -0
- {dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/licenses/LICENSE +0 -0
- {dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/top_level.txt +0 -0
dissect/cstruct/types/wchar.py
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import sys
|
|
4
|
-
from typing import Any, BinaryIO, ClassVar
|
|
4
|
+
from typing import TYPE_CHECKING, Any, BinaryIO, ClassVar
|
|
5
5
|
|
|
6
|
+
from dissect.cstruct.exception import ArraySizeError
|
|
6
7
|
from dissect.cstruct.types.base import EOF, BaseArray, BaseType
|
|
7
8
|
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from dissect.cstruct.cstruct import Endianness
|
|
11
|
+
|
|
8
12
|
|
|
9
13
|
class WcharArray(str, BaseArray):
|
|
10
14
|
"""Wide-character array type for reading and writing UTF-16 strings."""
|
|
@@ -16,14 +20,20 @@ class WcharArray(str, BaseArray):
|
|
|
16
20
|
return type.__call__(cls, "\x00" * (0 if cls.dynamic or cls.null_terminated else cls.num_entries))
|
|
17
21
|
|
|
18
22
|
@classmethod
|
|
19
|
-
def _read(cls, stream: BinaryIO, context: dict[str, Any] | None = None) -> WcharArray:
|
|
20
|
-
return type.__call__(cls, super()._read(stream, context))
|
|
23
|
+
def _read(cls, stream: BinaryIO, *, context: dict[str, Any] | None = None, endian: Endianness) -> WcharArray:
|
|
24
|
+
return type.__call__(cls, super()._read(stream, context=context, endian=endian))
|
|
21
25
|
|
|
22
26
|
@classmethod
|
|
23
|
-
def _write(cls, stream: BinaryIO, data: str) -> int:
|
|
27
|
+
def _write(cls, stream: BinaryIO, data: str, *, endian: Endianness) -> int:
|
|
24
28
|
if cls.null_terminated:
|
|
25
29
|
data += "\x00"
|
|
26
|
-
|
|
30
|
+
|
|
31
|
+
if not cls.dynamic and (remaining := cls.num_entries - (actual_size := len(data))):
|
|
32
|
+
if remaining < 0:
|
|
33
|
+
raise ArraySizeError(f"Expected static array size {cls.num_entries}, got {actual_size} instead.")
|
|
34
|
+
data += "\x00" * remaining
|
|
35
|
+
|
|
36
|
+
return stream.write(data.encode(Wchar.__encoding_map__[endian]))
|
|
27
37
|
|
|
28
38
|
|
|
29
39
|
class Wchar(str, BaseType):
|
|
@@ -32,7 +42,7 @@ class Wchar(str, BaseType):
|
|
|
32
42
|
ArrayType = WcharArray
|
|
33
43
|
|
|
34
44
|
__slots__ = ()
|
|
35
|
-
__encoding_map__: ClassVar[dict[
|
|
45
|
+
__encoding_map__: ClassVar[dict[Endianness, str]] = {
|
|
36
46
|
"@": f"utf-16-{sys.byteorder[0]}e",
|
|
37
47
|
"=": f"utf-16-{sys.byteorder[0]}e",
|
|
38
48
|
"<": "utf-16-le",
|
|
@@ -45,11 +55,13 @@ class Wchar(str, BaseType):
|
|
|
45
55
|
return type.__call__(cls, "\x00")
|
|
46
56
|
|
|
47
57
|
@classmethod
|
|
48
|
-
def _read(cls, stream: BinaryIO, context: dict[str, Any] | None = None) -> Wchar:
|
|
49
|
-
return cls._read_array(stream, 1, context)
|
|
58
|
+
def _read(cls, stream: BinaryIO, *, context: dict[str, Any] | None = None, endian: Endianness) -> Wchar:
|
|
59
|
+
return cls._read_array(stream, 1, context=context, endian=endian)
|
|
50
60
|
|
|
51
61
|
@classmethod
|
|
52
|
-
def _read_array(
|
|
62
|
+
def _read_array(
|
|
63
|
+
cls, stream: BinaryIO, count: int, *, context: dict[str, Any] | None = None, endian: Endianness
|
|
64
|
+
) -> Wchar:
|
|
53
65
|
if count == 0:
|
|
54
66
|
return type.__call__(cls, "")
|
|
55
67
|
|
|
@@ -60,10 +72,10 @@ class Wchar(str, BaseType):
|
|
|
60
72
|
if count != EOF and len(data) != count:
|
|
61
73
|
raise EOFError(f"Read {len(data)} bytes, but expected {count}")
|
|
62
74
|
|
|
63
|
-
return type.__call__(cls, data.decode(cls.__encoding_map__[
|
|
75
|
+
return type.__call__(cls, data.decode(cls.__encoding_map__[endian]))
|
|
64
76
|
|
|
65
77
|
@classmethod
|
|
66
|
-
def _read_0(cls, stream: BinaryIO, context: dict[str, Any] | None = None) -> Wchar:
|
|
78
|
+
def _read_0(cls, stream: BinaryIO, *, context: dict[str, Any] | None = None, endian: Endianness) -> Wchar:
|
|
67
79
|
buf = []
|
|
68
80
|
while True:
|
|
69
81
|
point = stream.read(2)
|
|
@@ -75,8 +87,8 @@ class Wchar(str, BaseType):
|
|
|
75
87
|
|
|
76
88
|
buf.append(point)
|
|
77
89
|
|
|
78
|
-
return type.__call__(cls, b"".join(buf).decode(cls.__encoding_map__[
|
|
90
|
+
return type.__call__(cls, b"".join(buf).decode(cls.__encoding_map__[endian]))
|
|
79
91
|
|
|
80
92
|
@classmethod
|
|
81
|
-
def _write(cls, stream: BinaryIO, data: str) -> int:
|
|
82
|
-
return stream.write(data.encode(cls.__encoding_map__[
|
|
93
|
+
def _write(cls, stream: BinaryIO, data: str, *, endian: Endianness) -> int:
|
|
94
|
+
return stream.write(data.encode(cls.__encoding_map__[endian]))
|
|
@@ -11,6 +11,7 @@ if TYPE_CHECKING:
|
|
|
11
11
|
from collections.abc import Iterator
|
|
12
12
|
from typing import Literal
|
|
13
13
|
|
|
14
|
+
from dissect.cstruct.cstruct import AllowedEndianness
|
|
14
15
|
from dissect.cstruct.types.base import BaseType
|
|
15
16
|
from dissect.cstruct.types.structure import Structure
|
|
16
17
|
|
|
@@ -51,13 +52,16 @@ COLOR_CLEAR_BOLD = "\033[1;0m"
|
|
|
51
52
|
|
|
52
53
|
PRINTABLE = string.digits + string.ascii_letters + string.punctuation + " "
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"=": sys.byteorder,
|
|
55
|
+
|
|
56
|
+
ENDIANNESS_TO_BYTEORDER_MAP: dict[AllowedEndianness, Literal["big", "little"]] = {
|
|
57
57
|
"<": "little",
|
|
58
58
|
">": "big",
|
|
59
59
|
"!": "big",
|
|
60
|
+
"@": sys.byteorder,
|
|
61
|
+
"=": sys.byteorder,
|
|
60
62
|
"network": "big",
|
|
63
|
+
"little": "little",
|
|
64
|
+
"big": "big",
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
Palette = list[tuple[int, str]]
|
|
@@ -323,111 +327,118 @@ def dumpstruct(
|
|
|
323
327
|
return _dumpstruct(obj, obj.dumps(), offset, color, output, autoskip)
|
|
324
328
|
|
|
325
329
|
|
|
326
|
-
def pack(value: int, size: int | None = None, endian:
|
|
330
|
+
def pack(value: int, size: int | None = None, endian: AllowedEndianness = "little") -> bytes:
|
|
327
331
|
"""Pack an integer value to a given bit size, endianness.
|
|
328
332
|
|
|
329
333
|
Arguments:
|
|
330
334
|
value: Value to pack.
|
|
331
335
|
size: Integer size in bits.
|
|
332
|
-
endian: Endianness to use (little, big, network, <,
|
|
336
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
333
337
|
"""
|
|
338
|
+
if endian not in ENDIANNESS_TO_BYTEORDER_MAP:
|
|
339
|
+
raise ValueError(f"Invalid endianness: {endian!r} (should be little, big, network, <, >, !, @ or =)")
|
|
340
|
+
|
|
334
341
|
size = ((size or value.bit_length()) + 7) // 8
|
|
335
|
-
return value.to_bytes(size,
|
|
342
|
+
return value.to_bytes(size, ENDIANNESS_TO_BYTEORDER_MAP[endian], signed=value < 0)
|
|
336
343
|
|
|
337
344
|
|
|
338
|
-
def unpack(value: bytes, size: int | None = None, endian:
|
|
345
|
+
def unpack(value: bytes, size: int | None = None, endian: AllowedEndianness = "little", sign: bool = False) -> int:
|
|
339
346
|
"""Unpack an integer value from a given bit size, endianness and sign.
|
|
340
347
|
|
|
341
348
|
Arguments:
|
|
342
349
|
value: Value to unpack.
|
|
343
350
|
size: Integer size in bits.
|
|
344
|
-
endian: Endianness to use (little, big, network, <,
|
|
351
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
345
352
|
sign: Signedness of the integer.
|
|
346
353
|
"""
|
|
347
354
|
if size and len(value) != size // 8:
|
|
348
355
|
raise ValueError(f"Invalid byte value, expected {size // 8} bytes, got {len(value)} bytes")
|
|
349
|
-
|
|
356
|
+
|
|
357
|
+
if endian not in ENDIANNESS_TO_BYTEORDER_MAP:
|
|
358
|
+
raise ValueError(f"Invalid endianness: {endian!r} (should be little, big, network, <, >, !, @ or =)")
|
|
359
|
+
|
|
360
|
+
return int.from_bytes(value, ENDIANNESS_TO_BYTEORDER_MAP[endian], signed=sign)
|
|
350
361
|
|
|
351
362
|
|
|
352
|
-
def p8(value: int, endian:
|
|
363
|
+
def p8(value: int, endian: AllowedEndianness = "little") -> bytes:
|
|
353
364
|
"""Pack an 8 bit integer.
|
|
354
365
|
|
|
355
366
|
Arguments:
|
|
356
367
|
value: Value to pack.
|
|
357
|
-
endian: Endianness to use (little, big, network, <,
|
|
368
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
358
369
|
"""
|
|
359
370
|
return pack(value, 8, endian)
|
|
360
371
|
|
|
361
372
|
|
|
362
|
-
def p16(value: int, endian:
|
|
373
|
+
def p16(value: int, endian: AllowedEndianness = "little") -> bytes:
|
|
363
374
|
"""Pack a 16 bit integer.
|
|
364
375
|
|
|
365
376
|
Arguments:
|
|
366
377
|
value: Value to pack.
|
|
367
|
-
endian: Endianness to use (little, big, network, <,
|
|
378
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
368
379
|
"""
|
|
369
380
|
return pack(value, 16, endian)
|
|
370
381
|
|
|
371
382
|
|
|
372
|
-
def p32(value: int, endian:
|
|
383
|
+
def p32(value: int, endian: AllowedEndianness = "little") -> bytes:
|
|
373
384
|
"""Pack a 32 bit integer.
|
|
374
385
|
|
|
375
386
|
Arguments:
|
|
376
387
|
value: Value to pack.
|
|
377
|
-
endian: Endianness to use (little, big, network, <,
|
|
388
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
378
389
|
"""
|
|
379
390
|
return pack(value, 32, endian)
|
|
380
391
|
|
|
381
392
|
|
|
382
|
-
def p64(value: int, endian:
|
|
393
|
+
def p64(value: int, endian: AllowedEndianness = "little") -> bytes:
|
|
383
394
|
"""Pack a 64 bit integer.
|
|
384
395
|
|
|
385
396
|
Arguments:
|
|
386
397
|
value: Value to pack.
|
|
387
|
-
endian: Endianness to use (little, big, network, <,
|
|
398
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
388
399
|
"""
|
|
389
400
|
return pack(value, 64, endian)
|
|
390
401
|
|
|
391
402
|
|
|
392
|
-
def u8(value: bytes, endian:
|
|
403
|
+
def u8(value: bytes, endian: AllowedEndianness = "little", sign: bool = False) -> int:
|
|
393
404
|
"""Unpack an 8 bit integer.
|
|
394
405
|
|
|
395
406
|
Arguments:
|
|
396
407
|
value: Value to unpack.
|
|
397
|
-
endian: Endianness to use (little, big, network, <,
|
|
408
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
398
409
|
sign: Signedness of the integer.
|
|
399
410
|
"""
|
|
400
411
|
return unpack(value, 8, endian, sign)
|
|
401
412
|
|
|
402
413
|
|
|
403
|
-
def u16(value: bytes, endian:
|
|
414
|
+
def u16(value: bytes, endian: AllowedEndianness = "little", sign: bool = False) -> int:
|
|
404
415
|
"""Unpack a 16 bit integer.
|
|
405
416
|
|
|
406
417
|
Arguments:
|
|
407
418
|
value: Value to unpack.
|
|
408
|
-
endian: Endianness to use (little, big, network, <,
|
|
419
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
409
420
|
sign: Signedness of the integer.
|
|
410
421
|
"""
|
|
411
422
|
return unpack(value, 16, endian, sign)
|
|
412
423
|
|
|
413
424
|
|
|
414
|
-
def u32(value: bytes, endian:
|
|
425
|
+
def u32(value: bytes, endian: AllowedEndianness = "little", sign: bool = False) -> int:
|
|
415
426
|
"""Unpack a 32 bit integer.
|
|
416
427
|
|
|
417
428
|
Arguments:
|
|
418
429
|
value: Value to unpack.
|
|
419
|
-
endian: Endianness to use (little, big, network, <,
|
|
430
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
420
431
|
sign: Signedness of the integer.
|
|
421
432
|
"""
|
|
422
433
|
return unpack(value, 32, endian, sign)
|
|
423
434
|
|
|
424
435
|
|
|
425
|
-
def u64(value: bytes, endian:
|
|
436
|
+
def u64(value: bytes, endian: AllowedEndianness = "little", sign: bool = False) -> int:
|
|
426
437
|
"""Unpack a 64 bit integer.
|
|
427
438
|
|
|
428
439
|
Arguments:
|
|
429
440
|
value: Value to unpack.
|
|
430
|
-
endian: Endianness to use (little, big, network, <,
|
|
441
|
+
endian: Endianness to use (little, big, network, <, >, !, @ or =).
|
|
431
442
|
sign: Signedness of the integer.
|
|
432
443
|
"""
|
|
433
444
|
return unpack(value, 64, endian, sign)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.cstruct
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.dev7
|
|
4
4
|
Summary: A Dissect module implementing a parser for C-like structures: structure parsing in Python made easy
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
dissect/cstruct/__init__.py,sha256=8VNVQfPH4aH5V_kD-jvtLPwQ-ag9ppKHTy3dbxIR6ik,1378
|
|
2
|
+
dissect/cstruct/bitbuffer.py,sha256=lZuLUOluHx4mzFGRp62_FO45_iJwXayyzv9-v8b0Q08,2687
|
|
3
|
+
dissect/cstruct/compiler.py,sha256=vVg2H-pi9ugQ8Xvhs1JQ--4BjA5gtO2tW-1W8jr36V4,14283
|
|
4
|
+
dissect/cstruct/cstruct.py,sha256=bsCesSpbE0H4MUsHwb2iEbeadOBlOSAVENwyoP-UkP8,24929
|
|
5
|
+
dissect/cstruct/exception.py,sha256=RqD08LuBkbMqa3iQ1A05DNN8XgEmQR_SUnguwe9LGo8,316
|
|
6
|
+
dissect/cstruct/expression.py,sha256=MEwqHGgqA2fUk4kYk4lRLDWNTAMhB4-saJ5BgTxl7OA,7956
|
|
7
|
+
dissect/cstruct/lexer.py,sha256=NDUfAWgyxgRNRuVO8ExXQ51LqQXS2mv9bywVa_M7tFQ,19665
|
|
8
|
+
dissect/cstruct/parser.py,sha256=xCK-1O8c86sVFvjaXXSRgTsJWWd0ncKM6KJf2wbyGG8,21348
|
|
9
|
+
dissect/cstruct/util.py,sha256=S__kLEb9HKZg_WZR4CGtXDxkIkERLKbzFTHoU8FT8tU,15313
|
|
10
|
+
dissect/cstruct/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
dissect/cstruct/tools/stubgen.py,sha256=FLQieYE-MeKK31DcrDzwNUropUYHPjwdfcDb1X2L6j4,7651
|
|
12
|
+
dissect/cstruct/types/__init__.py,sha256=6P71Pu94Dv7RNjZpDZ19pqzx-G0QzmQw4q0-3zWALso,911
|
|
13
|
+
dissect/cstruct/types/base.py,sha256=rU1S2FQllx7X7BQG7qMOwNa7waxAJyuTHTNwtkiAz0g,12763
|
|
14
|
+
dissect/cstruct/types/char.py,sha256=s4zDmnbuOjwHgcsnEihjSqgC6H3t1jsfBTYH2ykwvHU,2997
|
|
15
|
+
dissect/cstruct/types/enum.py,sha256=YIWyP3H0tdxmuSI82enoULiN0YevpnU0UaY5ioBCYfI,8518
|
|
16
|
+
dissect/cstruct/types/flag.py,sha256=7xxQjFEDPHSQOxBHgcc75WzPiAxflOquwr7Z7c3erLE,2347
|
|
17
|
+
dissect/cstruct/types/int.py,sha256=Ewejng5pBYnQHPtzL5W0wQMJVUPYyrY8ALES8mFaabI,1324
|
|
18
|
+
dissect/cstruct/types/leb128.py,sha256=V97XTJT_Xbw1LpTwTN1OkjPHuQQAQUxd8OGuA6yEDmE,2387
|
|
19
|
+
dissect/cstruct/types/packed.py,sha256=78nQWm-yylgfK3858nN-XZhO5jiqyO-piGNEyPD2ps4,2458
|
|
20
|
+
dissect/cstruct/types/pointer.py,sha256=eGMrB_tTnKXKmYrcqyA_12IdukXcxRG3WOeQ1dgt7lk,3927
|
|
21
|
+
dissect/cstruct/types/structure.py,sha256=7pBg0moZbszeRomFEp5CbAHZcd1J8IVTmEG9Mo2eKS0,37571
|
|
22
|
+
dissect/cstruct/types/void.py,sha256=LCYnTcxsFPaxln36QEUxWuCZVioHRRckMuqtlm6tH54,1218
|
|
23
|
+
dissect/cstruct/types/wchar.py,sha256=YCYlu91D9AMVpWOLbVMdpvDDURH-EqyppM5UMDU5UQw,3200
|
|
24
|
+
dissect_cstruct-5.0.dev7.dist-info/licenses/COPYRIGHT,sha256=H-18RXfshdH9AdHwW2eO1Xa-5s6tY5eipHh5c0whDu4,316
|
|
25
|
+
dissect_cstruct-5.0.dev7.dist-info/licenses/LICENSE,sha256=PhUqiw6jAh2KbBdVRPBq_hfAvfcTBin7nZ3CK7NQbTM,11341
|
|
26
|
+
dissect_cstruct-5.0.dev7.dist-info/METADATA,sha256=IUF-_jFf7_GABYqAww23JWUTr-f73OKwmaICtDcOGc8,9255
|
|
27
|
+
dissect_cstruct-5.0.dev7.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
28
|
+
dissect_cstruct-5.0.dev7.dist-info/entry_points.txt,sha256=z53zqZqwD2OLrAkRwrP4wTeiU9CQe7xrMly0T2c0_wQ,71
|
|
29
|
+
dissect_cstruct-5.0.dev7.dist-info/scm_file_list.json,sha256=nuFWhDGL6VmjcwOB94CSfjNBblnsa9imUy8X4BLyvhw,2306
|
|
30
|
+
dissect_cstruct-5.0.dev7.dist-info/scm_version.json,sha256=wMGNV4ui6dgAUOW0hK23797wTuOlVvhVvvLFz_dXXFk,162
|
|
31
|
+
dissect_cstruct-5.0.dev7.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
|
|
32
|
+
dissect_cstruct-5.0.dev7.dist-info/RECORD,,
|
{dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/scm_file_list.json
RENAMED
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
".github/workflows/dissect-ci.yml",
|
|
15
15
|
"dissect/cstruct/parser.py",
|
|
16
16
|
"dissect/cstruct/compiler.py",
|
|
17
|
+
"dissect/cstruct/exception.py",
|
|
18
|
+
"dissect/cstruct/util.py",
|
|
17
19
|
"dissect/cstruct/cstruct.py",
|
|
18
20
|
"dissect/cstruct/bitbuffer.py",
|
|
19
|
-
"dissect/cstruct/utils.py",
|
|
20
|
-
"dissect/cstruct/exceptions.py",
|
|
21
21
|
"dissect/cstruct/lexer.py",
|
|
22
22
|
"dissect/cstruct/expression.py",
|
|
23
23
|
"dissect/cstruct/__init__.py",
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
dissect/cstruct/__init__.py,sha256=Z47dU_PpbZyc2ZSyu-ww-ncX6igaTw0ItVHzVgiaiKI,1380
|
|
2
|
-
dissect/cstruct/bitbuffer.py,sha256=bid_N4ZsaTeC3x5Fzs8viUrldT863dMPtEDih20Nt6k,2644
|
|
3
|
-
dissect/cstruct/compiler.py,sha256=uOjteLdoUIVNSX71TsBAusW8U085RRH9dXkbK3dp1vY,14203
|
|
4
|
-
dissect/cstruct/cstruct.py,sha256=Rq7RodLtegSbJzB0fYtSnbdBcx39Oxwm6rKZoKZVIeY,20129
|
|
5
|
-
dissect/cstruct/exceptions.py,sha256=RqD08LuBkbMqa3iQ1A05DNN8XgEmQR_SUnguwe9LGo8,316
|
|
6
|
-
dissect/cstruct/expression.py,sha256=BIqSs-xvCb4WvUb0_xjg2A4hclH8cs_W0lIGydzluIE,8027
|
|
7
|
-
dissect/cstruct/lexer.py,sha256=NEU1Ww29jWjOfhODNXMGhsBR9b-_ITnz5J-4A3kf688,19178
|
|
8
|
-
dissect/cstruct/parser.py,sha256=7F_QmlY7SZRXq-SOnbu7C6M2D8FKN63zvNNfE0D4bvQ,20545
|
|
9
|
-
dissect/cstruct/utils.py,sha256=3ZEeZ_bAZRm7IcyeB6i9h7qrcYB42LW9GJR9BtKTUDg,14650
|
|
10
|
-
dissect/cstruct/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
dissect/cstruct/tools/stubgen.py,sha256=wvl07h3VnJZWe9ygX4QMxjEH1ZcWaI_6_pSdAJoOEXk,7820
|
|
12
|
-
dissect/cstruct/types/__init__.py,sha256=6P71Pu94Dv7RNjZpDZ19pqzx-G0QzmQw4q0-3zWALso,911
|
|
13
|
-
dissect/cstruct/types/base.py,sha256=-NYmoX4vEfaFsnAIwQ0nZCz8X2qKEomgpnef2jB4klQ,9708
|
|
14
|
-
dissect/cstruct/types/char.py,sha256=9XYCjCF0D_5o3EYnmIcjev-5GI2NzxOhd1ct1xF6SAM,2457
|
|
15
|
-
dissect/cstruct/types/enum.py,sha256=vOsD99P7VLhj6vcH_ow1jmyipLP63FmqUQ9GLZ1L8Pc,7565
|
|
16
|
-
dissect/cstruct/types/flag.py,sha256=7xxQjFEDPHSQOxBHgcc75WzPiAxflOquwr7Z7c3erLE,2347
|
|
17
|
-
dissect/cstruct/types/int.py,sha256=MGsdUxJt-lj3nl9wzAgGX8cb_vJOtGLiCHwYZs1j_IA,1156
|
|
18
|
-
dissect/cstruct/types/leb128.py,sha256=kDmsWGXX6vr1bm4uJcilsrQ7JABdQRio16rBZV21pno,2243
|
|
19
|
-
dissect/cstruct/types/packed.py,sha256=tpZpb8tiSMXr1np6p0-nZqT4sY7zieO-4E16lmMmqJA,2128
|
|
20
|
-
dissect/cstruct/types/pointer.py,sha256=PqeJOoNBUfMd5uO2kpF6OHeW7Q6R1N1W1V4q1MakN4I,3912
|
|
21
|
-
dissect/cstruct/types/structure.py,sha256=I9LVeZ81rNE5GDT6wxpUL-PqMO31Ae6TVLLzTGyd6mM,33012
|
|
22
|
-
dissect/cstruct/types/void.py,sha256=Gvh0HqI6jQSj2uesdo3J8-G41brWCz8pmP16l8xTBxE,1074
|
|
23
|
-
dissect/cstruct/types/wchar.py,sha256=N9Y_XX2_hZEe2DwepJjxsB6xuRJ6zINRalcUofR59kY,2608
|
|
24
|
-
dissect_cstruct-5.0.dev0.dist-info/licenses/COPYRIGHT,sha256=H-18RXfshdH9AdHwW2eO1Xa-5s6tY5eipHh5c0whDu4,316
|
|
25
|
-
dissect_cstruct-5.0.dev0.dist-info/licenses/LICENSE,sha256=PhUqiw6jAh2KbBdVRPBq_hfAvfcTBin7nZ3CK7NQbTM,11341
|
|
26
|
-
dissect_cstruct-5.0.dev0.dist-info/METADATA,sha256=ujB3Cdxy5Yc--uXeWI4IIE24zn_t5r70jW_xmC7OBzc,9255
|
|
27
|
-
dissect_cstruct-5.0.dev0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
28
|
-
dissect_cstruct-5.0.dev0.dist-info/entry_points.txt,sha256=z53zqZqwD2OLrAkRwrP4wTeiU9CQe7xrMly0T2c0_wQ,71
|
|
29
|
-
dissect_cstruct-5.0.dev0.dist-info/scm_file_list.json,sha256=K27Mlh84EZbq__O4ajx8gV0dOE5BF81hxo0Hvtrzz1U,2308
|
|
30
|
-
dissect_cstruct-5.0.dev0.dist-info/scm_version.json,sha256=He7zR_9aI3hjUAyokmxGFi-iCH_17nbqSm6K2gebcEo,163
|
|
31
|
-
dissect_cstruct-5.0.dev0.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
|
|
32
|
-
dissect_cstruct-5.0.dev0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_cstruct-5.0.dev0.dist-info → dissect_cstruct-5.0.dev7.dist-info}/licenses/COPYRIGHT
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|