es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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ón index() en un tipo variante, puedes modificar el código de la siguiente manera:

    def format_variant(valobj, internal_dict):
        a = valobj.GetChildMemberWithName("typeIndex").GetValueAsUnsigned()
        b = valobj.GetStaticValue().GetChildMemberWithName("index").GetValueAsUnsigned()
    
        print(a)
        print(b)
    

    En este ejemplo, GetStaticValue() se utiliza para obtener la información de tipo estática para valobj. Luego, se utiliza el método GetChildMemberWithName() para acceder al miembro index y se utiliza el método GetValueAsUnsigned() para recuperar el valor devuelto por la función index().

Comments are closed.