eclipse CDT插件开发:如何获取具有声明的类名

时间:2013-06-12 07:36:54

标签: eclipse-plugin eclipse-cdt

我正在开发一个基于CDT API的eclipse插件。

假设我已经遵循C ++代码

   class EventEnum
   {
   public:
      enum e { 
         E_CompleteDisconnectSuccess = 1, 
         E_CreateBtAdapterNoSuccess = 2, 
         E_CreateBtAdapterSuccess = 3, 
      };
   };

使用以下ASTVisitor访问者方法,我可以找到枚举声明

public int visit(IASTDeclaration declaration) {
    if (declaration instanceof IASTSimpleDeclaration) {

        IASTDeclSpecifier specifier = ((IASTSimpleDeclaration)declaration).getDeclSpecifier();

        if (specifier instanceof IASTEnumerationSpecifier) {
            IASTEnumerationSpecifier enumSpecifier = (IASTEnumerationSpecifier)specifier;
            // Get the current enumeration name
            String enumerationName = enumSpecifier.getName().toString();

            System.out.println("Found enum : " + enumerationName);
        }
    }
    return PROCESS_CONTINUE;
}

问题:如何获取包含找到的枚举声明的类名,在我的情况下它将是EventEnum

1 个答案:

答案 0 :(得分:1)

我自己找到答案,可能对某人有用,所以我在这里发帖

if (enumSpecifier.getParent() instanceof CPPASTSimpleDeclaration)
{
    if (enumSpecifier.getParent().getParent() instanceof CPPASTCompositeTypeSpecifier)
    {
        CPPASTCompositeTypeSpecifier firstLevelClass = (CPPASTCompositeTypeSpecifier)enumSpecifier.getParent().getParent();
        return firstLevelClass.getName().toString();
    }
}