clang/README | 2 +- clang/rename.cxx | 35 +++++++++++++++++++++++++++++++++++ clang/testmemberfunction.cxx | 20 ++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-)
New commits: commit cd61d6342eea3b028d13670962327af698b5317f Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Jan 11 09:08:59 2016 +0100 clang: also handle member functions diff --git a/clang/README b/clang/README index fc7cd31..948e223 100644 --- a/clang/README +++ b/clang/README @@ -14,7 +14,7 @@ Pros: Cons: -- handles only rename of class members so far +- handles only rename of data members and member functions so far - only tested with clang 3.5/3.7 == Hello world diff --git a/clang/rename.cxx b/clang/rename.cxx index 60bcce7..352a90b 100644 --- a/clang/rename.cxx +++ b/clang/rename.cxx @@ -48,6 +48,8 @@ public: { } + // Data member names. + /* * class C * { @@ -172,6 +174,39 @@ public: } return true; } + + // Member function names. + + /* + * class C + * { + * public: + * foo(); <- Handles this. + * }; + * + * C::foo() <- And this. + * { + * } + * + * ... + * + * aC.foo(); <- And this. + */ + bool VisitCXXMethodDecl(const clang::CXXMethodDecl* pDecl) + { + std::string aName = pDecl->getQualifiedNameAsString(); + const std::map<std::string, std::string>::const_iterator it = mrRewriter.getNameMap().find(aName); + if (it != mrRewriter.getNameMap().end()) + { + clang::SourceLocation aLocation = pDecl->getLocation(); + if (maHandledLocations.find(aLocation) == maHandledLocations.end()) + { + mrRewriter.ReplaceText(aLocation, pDecl->getNameAsString().length(), it->second); + maHandledLocations.insert(aLocation); + } + } + return true; + } }; class RenameASTConsumer : public clang::ASTConsumer diff --git a/clang/testmemberfunction.cxx b/clang/testmemberfunction.cxx new file mode 100644 index 0000000..e307304 --- /dev/null +++ b/clang/testmemberfunction.cxx @@ -0,0 +1,20 @@ +namespace ns +{ +class C +{ +public: + void foo(int x); +}; +} + +void ns::C::foo(int /*x*/) +{ +} + +int main(int /*argc*/, char** /*argv*/) +{ + ns::C aC; + aC.foo(0); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits