add some code
This commit is contained in:
32
managed_components/lvgl__lvgl/scripts/gdb/lvglgdb/value.py
Normal file
32
managed_components/lvgl__lvgl/scripts/gdb/lvglgdb/value.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import gdb
|
||||
|
||||
from typing import Optional, Union
|
||||
|
||||
|
||||
class Value(gdb.Value):
|
||||
def __init__(self, value: Union[gdb.Value, 'Value']):
|
||||
super().__init__(value)
|
||||
|
||||
def __getitem__(self, key):
|
||||
try:
|
||||
value = super().__getitem__(key)
|
||||
except gdb.error:
|
||||
value = super().__getattr__(key)
|
||||
return Value(value)
|
||||
|
||||
def __getattr__(self, key):
|
||||
if hasattr(super(), key):
|
||||
return Value(super().__getattribute__(key))
|
||||
return Value(super().__getitem__(key))
|
||||
|
||||
def cast(self, type_name: str | gdb.Type, ptr: bool = False) -> Optional['Value']:
|
||||
try:
|
||||
gdb_type = gdb.lookup_type(type_name) if isinstance(type_name, str) else type_name
|
||||
if ptr:
|
||||
gdb_type = gdb_type.pointer()
|
||||
return Value(super().cast(gdb_type))
|
||||
except gdb.error:
|
||||
return None
|
||||
|
||||
def super_value(self, attr: str) -> 'Value':
|
||||
return self[attr]
|
||||
Reference in New Issue
Block a user