| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files/Android/Android Studio/bin/lldb/helpers/renderers/ |
Upload File : |
import lldb
from renderers.jb_lldb_format_specs import *
from renderers.jb_lldb_utils import get_root_value, get_value_format
def overlay_child_format(child: lldb.SBValue, parent_spec: int):
child_root = get_root_value(child)
child_spec = child_root.GetFormat()
basic_specs = child_spec & eFormatBasicSpecsMask
parent_basic_specs = parent_spec & eFormatBasicSpecsMask
# TODO: more complex logic to merge basic specs
if basic_specs == 0:
basic_specs = parent_basic_specs
flag_specs = (child_spec & eFormatFlagSpecsMask) | \
(parent_spec & eFormatFlagSpecsMask & eFormatInheritedFlagsMask)
custom_view_spec = get_custom_view_id(child_spec)
fmt = set_custom_view_id(basic_specs | flag_specs, custom_view_spec)
child_root.SetFormat(fmt)
def overlay_summary_format(child: lldb.SBValue, parent_non_synth: lldb.SBValue):
child_root = get_root_value(child)
child_spec = child_root.GetFormat()
parent_spec = parent_non_synth.GetFormat()
basic_specs = child_spec & eFormatBasicSpecsMask
parent_basic_specs = parent_spec & eFormatBasicSpecsMask
if basic_specs == 0:
basic_specs = parent_basic_specs
elif basic_specs in FMT_UNQUOTE_MAP and parent_basic_specs in FMT_STRING_NOQUOTES_SET:
# special case for FName
basic_specs = FMT_UNQUOTE_MAP[basic_specs]
flag_specs = (child_spec & eFormatFlagSpecsMask) | \
(parent_spec & eFormatFlagSpecsMask & eFormatInheritedFlagsMask)
custom_view_spec = get_custom_view_id(child_spec)
fmt = set_custom_view_id(basic_specs | flag_specs, custom_view_spec)
if parent_spec & eFormatAsArray != 0 and child_spec & eFormatAsArray == 0:
fmt |= eFormatAsArray
size = parent_non_synth.GetFormatAsArraySize()
child_root.SetFormatAsArraySize(size)
child_root.SetFormat(fmt)
def update_value_dynamic_state(value: lldb.SBValue):
fmt = get_value_format(value)
if fmt & eFormatNoDerived:
value.SetPreferDynamicValue(lldb.eNoDynamicValues)