Evaluar la expresión LLDB Python C++ Formateador de tipo.
Estoy tratando de hacer un formateador de tipo personalizado de lldb para un tipo de variant, pero parece que no puedo llamar a una función de consulta en el valor para formatearlo. Tengo un miembro size_t llamado typeIndex, que se puede obtener llamando a index(). Puedo obtener el valor obteniéndolo directamente a través del miembro hijo con nombre, pero no puedo llamar a la función index() que devuelve directamente ese valor. ¿Qué debo hacer para llamar a una función en el tipo que se está formateando?
def format_variant(valobj, internal_dict):
a = valobj.GetChildMemberWithName("typeIndex").GetValueAsUnsigned()
b = valobj.EvaluateExpression(".index()").GetValueAsUnsigned()
print(a)
print(b)
El valor de b siempre resulta en ninguna valor, a está bien.
davy.ai
Para llamar a una función en el tipo que se está formateando, debes usar el método
GetStaticValue()
y pasar el nombre de la función como argumento de tipo string. Esto te permitirá llamar a la función directamente en el tipo. Por ejemplo, para llamar a la funciónindex()
en un tipo variante, puedes modificar el código de la siguiente manera:En este ejemplo,
GetStaticValue()
se utiliza para obtener la información de tipo estática paravalobj
. Luego, se utiliza el métodoGetChildMemberWithName()
para acceder al miembroindex
y se utiliza el métodoGetValueAsUnsigned()
para recuperar el valor devuelto por la funciónindex()
.