summaryrefslogtreecommitdiff
path: root/compilerplugins/clang/staticmethods.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'compilerplugins/clang/staticmethods.cxx')
-rw-r--r--compilerplugins/clang/staticmethods.cxx23
1 files changed, 19 insertions, 4 deletions
diff --git a/compilerplugins/clang/staticmethods.cxx b/compilerplugins/clang/staticmethods.cxx
index e59a48f60072..aaa4f6b798d6 100644
--- a/compilerplugins/clang/staticmethods.cxx
+++ b/compilerplugins/clang/staticmethods.cxx
@@ -103,7 +103,8 @@ bool StaticMethods::TraverseCXXMethodDecl(const CXXMethodDecl * pCXXMethodDecl)
return true;
}
// the DDE has a dummy implementation on Linux and a real one on Windows
- if (getFilename(pCXXMethodDecl->getCanonicalDecl()->getLocStart()) == SRCDIR "/include/svl/svdde.hxx") {
+ std::string aFilename = getFilename(pCXXMethodDecl->getCanonicalDecl()->getLocStart());
+ if (aFilename == SRCDIR "/include/svl/svdde.hxx") {
return true;
}
std::string aParentName = pCXXMethodDecl->getParent()->getQualifiedNameAsString();
@@ -127,10 +128,17 @@ bool StaticMethods::TraverseCXXMethodDecl(const CXXMethodDecl * pCXXMethodDecl)
return true;
}
// the unotools and svl config code stuff is doing weird stuff with a reference-counted statically allocated pImpl class
- if (startsWith(getFilename(pCXXMethodDecl->getCanonicalDecl()->getLocStart()), SRCDIR "/include/unotools")) {
+ if (startsWith(aFilename, SRCDIR "/include/unotools")) {
return true;
}
- if (startsWith(getFilename(pCXXMethodDecl->getCanonicalDecl()->getLocStart()), SRCDIR "/include/svl")) {
+ if (startsWith(aFilename, SRCDIR "/include/svl")) {
+ return true;
+ }
+ if (startsWith(aFilename, SRCDIR "/include/framework") || startsWith(aFilename, SRCDIR "/framework")) {
+ return true;
+ }
+ // there is some odd stuff happening here I don't fully understand, leave it for now
+ if (startsWith(aFilename, SRCDIR "/include/canvas") || startsWith(aFilename, SRCDIR "/canvas")) {
return true;
}
// classes that have static data and some kind of weird reference-counting trick in it's constructor
@@ -145,7 +153,14 @@ bool StaticMethods::TraverseCXXMethodDecl(const CXXMethodDecl * pCXXMethodDecl)
std::string fqn = aParentName + "::" + pCXXMethodDecl->getNameAsString();
// only empty on Linux, not on windows
if (fqn == "OleEmbeddedObject::GetVisualRepresentationInNativeFormat_Impl"
- || fqn == "OleEmbeddedObject::GetRidOfComponent") {
+ || fqn == "OleEmbeddedObject::GetRidOfComponent"
+ || fqn == "connectivity::mozab::ProfileAccess::isProfileLocked"
+ || startsWith(fqn, "SbxDecimal::")
+ || fqn == "SbiDllMgr::Call" || fqn == "SbiDllMgr::FreeDll") {
+ return true;
+ }
+ // used in a function-pointer-table
+ if (startsWith(fqn, "SbiRuntime::Step")) {
return true;
}