0
CXXMethodDecl
がoverride
またはfinal
のキーワードで指定されているかどうかを確認する「邪魔」がありますか?Clang tooling、finalまたはoverrideを確認する
CXXMethodDecl
を表す文字列はstd::string::find(" override")
で確認できますが、この方法は少し醜いです。
CXXMethodDecl
がoverride
またはfinal
のキーワードで指定されているかどうかを確認する「邪魔」がありますか?Clang tooling、finalまたはoverrideを確認する
CXXMethodDecl
を表す文字列はstd::string::find(" override")
で確認できますが、この方法は少し醜いです。
final
とoverride
はclang::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