Как получить операнд DevlRefExpr из UnaryOperator в Clang LLVM AST? - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть этот код здесь:

class MemcpyMatcher : public MatchFinder::MatchCallback
{
  public:
    MemcpyMatcher(map<string, Replacements> * replacements)
        : replacements(replacements) {}
    /* Callback method for the MatchFinder.
     * @param result - Found matching results.
     */
    virtual void run(const MatchFinder::MatchResult& result)
    {
        const CallExpr* call_expr = result.Nodes.getNodeAs<CallExpr>("memcpy_call");
        if (call_expr != NULL) {
            const Expr* voidp_dest = call_expr->getArg(0)->IgnoreImplicit();
            const Expr* voidp_src  = call_expr->getArg(1)->IgnoreImplicit();
            const Expr* size_t_n   = call_expr->getArg(2)->IgnoreImplicit();

            voidp_dest->dump();
    }

  private:
    map<string, Replacements>* replacements;
    // Add other variables here as needed.
};

Это вывод оператора voidp_dest->dump();:

UnaryOperator 0x2148d48 'int *' prefix '&'
`-DeclRefExpr 0x2148cf8 'int' lvalue Var 0x21480c0 'number' 'int'

В исходном коде выражение, которое я беру, выглядит так: &number.

Я хочу получить DeclRefExpr из UnaryOperator, чтобы превратить его в строку и получить имя переменной. Я не знаю, как это сделать.

...