2013-06-12 58 views
2

我正在開發基於CDT API的eclipse插件。eclipse CDT插件開發:如何獲取具有聲明的類名稱

假設我下面的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

發現我自己的答案,可能是有人將是有用的,所以我在這裏張貼

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