2017-03-20 9 views
0

CXXMethodDecloverrideまたはfinalのキーワードで指定されているかどうかを確認する「邪魔」がありますか?Clang tooling、finalまたはoverrideを確認する

CXXMethodDeclを表す文字列はstd::string::find(" override")で確認できますが、この方法は少し醜いです。

答えて

1

finaloverrideclang::Declの属性には表示されません。そのため、基礎となるコードはメソッドfinalをチェックします。

bool FinalReplacer::VisitCXXMethodDecl(CXXMethodDecl *methodDecl) { 
    auto pos = find_if(methodDecl->attr_begin(), methodDecl->attr_end(), [](Attr *a) { 
     return (a->getKind() == attr::Kind::Final); 
    }); 
    if (pos != methodDecl->attr_end()) { 
     //Do something here. 
    } 
    return true; 
} 

は同様override属性のattr::Kind::Overrideです。

clang::Declの完全な属性リストは、clang/Basic/AttrList.inc

です。
関連する問題