union
ΒΆ
A Union is a dynamic byteclass created using the @union
decorator.
@union
class MyUnion:
"""My Union Byteclass."""
var1: UInt64
var2: UInt32
Similar to a C union
, each member of a byteclass union
has an offset of 0 and overlay onto the same underlying data.
The length of a Union byteclass is determined when the class is created based on its members.
A Union byteclass can contain both byteclass primitives and other byteclass collections.
Each Union member has its own byte_order
. However, the union
decorator accepts a byte_order
parameter which is used for any members that rely on a factory
for instantiation.
@union(byte_order=b"@")
class Union1:
"""A union byteclass with one member using default factory."""
a: UInt64 = member(factory=UInt64)
@union
class Union2:
"""A union byteclass with one member using default factory."""
a: UInt64
The Union1
and Union2
defined above are functionally equivalent.