Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/python/lldbutils/lldbutils/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  utils.py   Sprache: Python

 
# Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/


def format_char(c):
    if c == 0:
        return "\\0"
    elif c == 0x07:
        return "\\a"
    elif c == 0x08:
        return "\\b"
    elif c == 0x0C:
        return "\\f"
    elif c == 0x0A:
        return "\\n"
    elif c == 0x0D:
        return "\\r"
    elif c == 0x09:
        return "\\t"
    elif c == 0x0B:
        return "\\v"
    elif c == 0x5C:
        return "\\"
    elif c == 0x22:
        return '\\"'
    elif c == 0x27:
        return "\\'"
    elif c < 0x20 or c >= 0x80 and c <= 0xFF:
        return "\\x%02x" % c
    elif c >= 0x0100:
        return "\\u%04x" % c
    else:
        return chr(c)


# Take an SBValue that is either a char* or char16_t* and formats it like lldb
# would when printing it.
def format_string(lldb_value, length=100):
    ptr = lldb_value.GetValueAsUnsigned(0)
    char_type = lldb_value.GetType().GetPointeeType()
    if char_type.GetByteSize() == 1:
        s = '"'
        size = 1
        mask = 0xFF
    elif char_type.GetByteSize() == 2:
        s = 'u"'
        size = 2
        mask = 0xFFFF
    else:
        return "(cannot format string with char type %s)" % char_type.GetName()
    i = 0
    terminated = False
    while i < length:
        c = (
            lldb_value.CreateValueFromAddress(
                "x", ptr + i * size, char_type
            ).GetValueAsUnsigned(0)
            & mask
        )
        if c == 0:
            terminated = True
            break
        s += format_char(c)
        i = i + 1
    s += '"'
    if not terminated and i != length:
        s += "..."
    return s


# Dereferences a raw pointer, nsCOMPtr, RefPtr, nsAutoPtr, already_AddRefed or
# mozilla::RefPtr; otherwise returns the value unchanged.
def dereference(lldb_value):
    if lldb_value.TypeIsPointerType():
        return lldb_value.Dereference()
    name = lldb_value.GetType().GetUnqualifiedType().GetName()
    if (
        name.startswith("nsCOMPtr<")
        or name.startswith("RefPtr<")
        or name.startswith("nsAutoPtr<")
        or name.startswith("already_AddRefed<")
    ):
        return lldb_value.GetChildMemberWithName("mRawPtr")
    if name.startswith("mozilla::RefPtr<"):
        return lldb_value.GetChildMemberWithName("ptr")
    return lldb_value

93%


¤ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.