唯一标识功能定义节点

时间:2019-03-19 18:18:18

标签: eclipse-plugin eclipse-cdt

有没有一种方法可以唯一地标识CDT AST中的功能定义节点?

void g() { ... }

void f() {
    g();
}

我需要以某种结构存储fg的函数定义节点,然后,当我来到g的函数调用节点时,我需要检查是否节点对应于g的函数定义节点。

现在,我通过存储函数的名称来做到这一点。 问题是我无法正确处理以下情况:

void f() {}

class F {
    void f() {}
}; 

1 个答案:

答案 0 :(得分:1)

我建议以下内容:

  • 通过IASTName.resolveBinding()
  • 将名称解析为函数绑定
  • 绑定将是ICPPFunction的实例,该实例扩展了ICPPBinding。 (我假设您提到class时,这是C ++代码。)
  • 使用ICPPBinding.getQualifiedName()作为函数的唯一标识符。在您的示例中,两个函数将具有不同的限定名称,fF::f