Union Collection¶
[1]:
from byteclasses.print import byteclass_info, byteclass_inspect
from byteclasses.types.collections import ByteclassCollection, String, member, union
from byteclasses.types.primitives.integers import Int8, Int16, UInt8, UInt16, UInt32, UInt64
Basic Union
[2]:
@union
class BasicUnion:
"""A basic union byteclass."""
var1: UInt8
var2: UInt16
[3]:
bu = BasicUnion()
byteclass_info(bu)
byteclass_inspect(bu)
Byteclass Info ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ type() │ BasicUnion │ │ is_byteclass() │ True │ │ is_collection_instance() │ True │ │ is_primitive_instance() │ False │ │ mro │ BasicUnion -> object │ │ len() │ 2 │ │ str() │ BasicUnion(var1=UInt8(0), var2=UInt16(0)) │ │ repr() │ BasicUnion(byte_order=b'@',data=bytearray(b'\x00\x00')) │ │ .data │ bytearray(b'\x00\x00') │ └──────────────────────────┴─────────────────────────────────────────────────────────┘
╭───────────────── Byteclass Inspect ──────────────────╮ │ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f │ │ ---------------------------------------------------- │ │ 0x0 |00 │ │ 0x0 |00 00 │ ╰──────────────────────────────────────────────────────╯
Legend ┏━━━━━━━━┳━━━━━━━┓ ┃ Member ┃ Value ┃ ┡━━━━━━━━╇━━━━━━━┩ │ var1 │ 0 │ │ var2 │ 0 │ └────────┴───────┘
Large Union Byteclass
[4]:
@union(byte_order=b">")
class LargeUnion:
"""A large union class."""
uint64: UInt64
uint32: UInt32
uint16: UInt16
int16: Int16
uint8: UInt8
int8: Int8
string: String = member(
factory=lambda byte_order: String(64, value="The quick brown fox jumped over the lazy dog.")
)
[5]:
lu: ByteclassCollection = LargeUnion()
lu.uint64 = 2
lu.uint32 = 4
lu.uint16 = 8
lu.int16 = 16
lu.uint8 = 32
lu.int8 = 64
byteclass_info(lu)
byteclass_inspect(lu)
Byteclass Info ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ type() │ LargeUnion │ │ is_byteclass() │ True │ │ is_collection_instance() │ True │ │ is_primitive_instance() │ False │ │ mro │ LargeUnion -> object │ │ len() │ 64 │ │ str() │ LargeUnion(uint64=UInt64(4616189635234627586), uint32=UInt32(1074790404), │ │ │ uint16=UInt16(16400), int16=Int16(16400), uint8=UInt8(64), int8=Int8(64), │ │ │ string=String(64, value='@\x10\x00\x04\x00\x00\x00\x02k brown fox jumped over the │ │ │ lazy dog.')) │ │ repr() │ LargeUnion(byte_order=b'>',data=bytearray(b'@\x10\x00\x04\x00\x00\x00\x02k brown fox │ │ │ jumped over the lazy │ │ │ dog.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')) │ │ .data │ bytearray(b'@\x10\x00\x04\x00\x00\x00\x02k brown fox jumped over the lazy │ │ │ dog.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') │ └──────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
╭────────────────── Byteclass Inspect ──────────────────╮ │ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f │ │ ----------------------------------------------------- │ │ 0x0 |40 10 00 04 00 00 00 02 │ │ 0x0 |40 10 00 04 │ │ 0x0 |40 10 │ │ 0x0 |40 10 │ │ 0x0 |40 │ │ 0x0 |40 │ │ 0x0 |40 10 00 04 00 00 00 02 6b 20 62 72 6f 77 6e 20 │ │ 0x10 │ │ 0x10 │ │ 0x10 │ │ 0x10 │ │ 0x10 │ │ 0x10 │ │ 0x10 66 6f 78 20 6a 75 6d 70 65 64 20 6f 76 65 72 20 │ │ 0x20 │ │ 0x20 │ │ 0x20 │ │ 0x20 │ │ 0x20 │ │ 0x20 │ │ 0x20 74 68 65 20 6c 61 7a 79 20 64 6f 67 2e 00 00 00 │ │ 0x30 │ │ 0x30 │ │ 0x30 │ │ 0x30 │ │ 0x30 │ │ 0x30 │ │ 0x30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ╰───────────────────────────────────────────────────────╯
Legend ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Member ┃ Value ┃ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ uint64 │ 4616189635234627586 │ │ uint32 │ 1074790404 │ │ uint16 │ 16400 │ │ int16 │ 16400 │ │ uint8 │ 64 │ │ int8 │ 64 │ │ string │ @k brown fox jumped over the lazy dog. │ └────────┴────────────────────────────────────────┘
[6]:
lu.uint64 = 0xFFFFFFFF00
[7]:
byteclass_inspect(lu)
╭────────────────── Byteclass Inspect ──────────────────╮ │ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f │ │ ----------------------------------------------------- │ │ 0x0 |00 00 00 ff ff ff ff 00 │ │ 0x0 |00 00 00 ff │ │ 0x0 |00 00 │ │ 0x0 |00 00 │ │ 0x0 |00 │ │ 0x0 |00 │ │ 0x0 |00 00 00 ff ff ff ff 00 6b 20 62 72 6f 77 6e 20 │ │ 0x10 │ │ 0x10 │ │ 0x10 │ │ 0x10 │ │ 0x10 │ │ 0x10 │ │ 0x10 66 6f 78 20 6a 75 6d 70 65 64 20 6f 76 65 72 20 │ │ 0x20 │ │ 0x20 │ │ 0x20 │ │ 0x20 │ │ 0x20 │ │ 0x20 │ │ 0x20 74 68 65 20 6c 61 7a 79 20 64 6f 67 2e 00 00 00 │ │ 0x30 │ │ 0x30 │ │ 0x30 │ │ 0x30 │ │ 0x30 │ │ 0x30 │ │ 0x30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ╰───────────────────────────────────────────────────────╯
Legend ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Member ┃ Value ┃ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ uint64 │ 1099511627520 │ │ uint32 │ 255 │ │ uint16 │ 0 │ │ int16 │ 0 │ │ uint8 │ 0 │ │ int8 │ 0 │ │ string │ ÿÿÿÿk brown fox jumped over the lazy dog. │ └────────┴───────────────────────────────────────────┘