Generic Primitive Examples

[1]:
from byteclasses.print import byteclass_info, byteclass_inspect
from byteclasses.types.primitives.generics import Bit, Byte, DWord, QWord, Word
[2]:
generic_types = [Byte, Word, DWord, QWord]
for i, generic_type in enumerate(generic_types):
    var = generic_type(b"\xFF" * 2**i)
    byteclass_info(var)
    byteclass_inspect(var)
                          Byteclass Info                          
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Property                 ┃ Value                               ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ type()                   │ Byte                                │
│ is_byteclass()           │ True                                │
│ is_collection_instance() │ False                               │
│ is_primitive_instance()  │ True                                │
│ mro                      │ Byte -> _Primitive -> object        │
│ len()                    │ 1                                   │
│ str()                    │ b'\xff'                             │
│ repr()                   │ Byte(data=b'\xff', byte_order=b'@') │
│ .data                    │ b'\xff'                             │
│ .value                   │ b'\xff'                             │
└──────────────────────────┴─────────────────────────────────────┘
╭────────────────── Byteclass Inspect ───────────────────╮
│      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f   │
│ ----------------------------------------------------   │
│ 0x0 |ff                                                │
╰────────────────────────────────────────────────────────╯
  Legend   
┏━━━━━━━━━┓
┃ Value   ┃
┡━━━━━━━━━┩
│ b'\xff' │
└─────────┘
                            Byteclass Info                            
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Property                 ┃ Value                                   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ type()                   │ Word                                    │
│ is_byteclass()           │ True                                    │
│ is_collection_instance() │ False                                   │
│ is_primitive_instance()  │ True                                    │
│ mro                      │ Word -> _Primitive -> object            │
│ len()                    │ 2                                       │
│ str()                    │ b'\xff\xff'                             │
│ repr()                   │ Word(data=b'\xff\xff', byte_order=b'@') │
│ .data                    │ b'\xff\xff'                             │
│ .value                   │ b'\xff\xff'                             │
└──────────────────────────┴─────────────────────────────────────────┘
╭────────────────── Byteclass Inspect ───────────────────╮
│      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f   │
│ ----------------------------------------------------   │
│ 0x0 |ff ff                                             │
╰────────────────────────────────────────────────────────╯
    Legend     
┏━━━━━━━━━━━━━┓
┃ Value       ┃
┡━━━━━━━━━━━━━┩
│ b'\xff\xff' │
└─────────────┘
                                Byteclass Info                                 
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Property                 ┃ Value                                            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ type()                   │ DWord                                            │
│ is_byteclass()           │ True                                             │
│ is_collection_instance() │ False                                            │
│ is_primitive_instance()  │ True                                             │
│ mro                      │ DWord -> _Primitive -> object                    │
│ len()                    │ 4                                                │
│ str()                    │ b'\xff\xff\xff\xff'                              │
│ repr()                   │ DWord(data=b'\xff\xff\xff\xff', byte_order=b'@') │
│ .data                    │ b'\xff\xff\xff\xff'                              │
│ .value                   │ b'\xff\xff\xff\xff'                              │
└──────────────────────────┴──────────────────────────────────────────────────┘
╭────────────────── Byteclass Inspect ───────────────────╮
│      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f   │
│ ----------------------------------------------------   │
│ 0x0 |ff ff ff ff                                       │
╰────────────────────────────────────────────────────────╯
        Legend         
┏━━━━━━━━━━━━━━━━━━━━━┓
┃ Value               ┃
┡━━━━━━━━━━━━━━━━━━━━━┩
│ b'\xff\xff\xff\xff' │
└─────────────────────┘
                                        Byteclass Info                                         
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Property                 ┃ Value                                                            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ type()                   │ QWord                                                            │
│ is_byteclass()           │ True                                                             │
│ is_collection_instance() │ False                                                            │
│ is_primitive_instance()  │ True                                                             │
│ mro                      │ QWord -> _Primitive -> object                                    │
│ len()                    │ 8                                                                │
│ str()                    │ b'\xff\xff\xff\xff\xff\xff\xff\xff'                              │
│ repr()                   │ QWord(data=b'\xff\xff\xff\xff\xff\xff\xff\xff', byte_order=b'@') │
│ .data                    │ b'\xff\xff\xff\xff\xff\xff\xff\xff'                              │
│ .value                   │ b'\xff\xff\xff\xff\xff\xff\xff\xff'                              │
└──────────────────────────┴──────────────────────────────────────────────────────────────────┘
╭────────────────── Byteclass Inspect ───────────────────╮
│      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f   │
│ ----------------------------------------------------   │
│ 0x0 |ff ff ff ff ff ff ff ff                           │
╰────────────────────────────────────────────────────────╯
                Legend                 
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Value                               ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ b'\xff\xff\xff\xff\xff\xff\xff\xff' │
└─────────────────────────────────────┘
[3]:
bit = Bit(True)  # Bit is a convenience class and is not considered a byteclass
[4]:
try:
    byteclass_info(bit)
except TypeError as err:
    print(err)
Object is not a byteclass instance.
[5]:
try:
    byteclass_inspect(bit)
except TypeError as err:
    print(err)
Object is not a byteclass instance.
[6]:
print(bit)
print(bit.value)
# Bit has no data attribute
Bit.TRUE
1