dissect.cstruct.compiler
#
Module Contents#
Classes#
Compiler for cstruct structures. Creates somewhat optimized parsing code. |
- class dissect.cstruct.compiler.Compiler(cstruct: Compiler.__init__.cstruct)#
Compiler for cstruct structures. Creates somewhat optimized parsing code.
- TYPES = ()#
- COMPILE_TEMPLATE = Multiline-String#
Show Value
""" class {name}(Structure): def __init__(self, cstruct, structure, source=None): self.structure = structure self.source = source super().__init__(cstruct, structure.name, structure.fields, anonymous=structure.anonymous) def _read(self, stream, context=None): r = OrderedDict() sizes = {{}} bitreader = BitBuffer(stream, self.cstruct.endian) {read_code} return Instance(self, r, sizes) def add_field(self, name, type_, offset=None): raise NotImplementedError("Can't add fields to a compiled structure") def __repr__(self): return '<Structure {name} +compiled>' """
- compile(structure: dissect.cstruct.types.Structure) dissect.cstruct.types.Structure #
- gen_struct_class(name: str, structure: dissect.cstruct.types.Structure) str #
- gen_read_block(size: int, block: List[str]) str #
- gen_dynamic_block(field: dissect.cstruct.types.Field) str #