summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-11-07 12:50:17 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-11-08 06:50:24 +0100
commit74f884d48ed27e1ce861620a57802ad156a86d15 (patch)
treeb3c467e4add03b7a4d0622c13900df4f3ab39692 /compilerplugins
parentc049ac6503c0f0f6bb7170b68c19ccb400c525f7 (diff)
new loplugin:fieldcast
new plugin to look for class fields that are always cast to some subtype, which indicates that they should probably just be declared to be that subtype. Perform one of the suggested improvements in xmlsecurity/ Change-Id: Ia68df422c37f05cbcf9c02ba5d0853f8eca4f120 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159063 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/fieldcast.cxx199
-rwxr-xr-xcompilerplugins/clang/fieldcast.py71
-rw-r--r--compilerplugins/clang/fieldcast.results1038
-rw-r--r--compilerplugins/clang/test/fieldcast.cxx34
4 files changed, 1342 insertions, 0 deletions
diff --git a/compilerplugins/clang/fieldcast.cxx b/compilerplugins/clang/fieldcast.cxx
new file mode 100644
index 000000000000..7f2b728e8e22
--- /dev/null
+++ b/compilerplugins/clang/fieldcast.cxx
@@ -0,0 +1,199 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#if !defined _WIN32 //TODO, #include <sys/file.h>
+
+#include <cassert>
+#include <string>
+#include <iostream>
+#include <fstream>
+#include <unordered_set>
+#include <vector>
+#include <algorithm>
+#include <sys/file.h>
+#include <unistd.h>
+
+#include "config_clang.h"
+
+#include "plugin.hxx"
+#include "compat.hxx"
+#include "check.hxx"
+
+#include "clang/AST/ParentMapContext.h"
+
+/**
+ Look for class fields that are always cast to some subtype,
+ which indicates that they should probably just be declared to be that subtype.
+
+ TODO add checking for dynamic_cast/static_cast on
+ unique_ptr
+ shared_ptr
+*/
+
+namespace
+{
+struct MyFieldInfo
+{
+ std::string parentClass;
+ std::string fieldName;
+ std::string fieldType;
+ std::string sourceLocation;
+};
+
+// try to limit the voluminous output a little
+static std::unordered_multimap<const FieldDecl*, const CXXRecordDecl*> castMap;
+
+class FieldCast : public loplugin::FilteringPlugin<FieldCast>
+{
+public:
+ explicit FieldCast(loplugin::InstantiationData const& data)
+ : FilteringPlugin(data)
+ {
+ }
+
+ virtual void run() override;
+
+ bool VisitCXXStaticCastExpr(const CXXStaticCastExpr*);
+ bool VisitCXXDynamicCastExpr(const CXXDynamicCastExpr*);
+
+private:
+ MyFieldInfo niceName(const FieldDecl*);
+ void checkCast(const CXXNamedCastExpr*);
+};
+
+void FieldCast::run()
+{
+ handler.enableTreeWideAnalysisMode();
+
+ TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
+
+ if (!isUnitTestMode())
+ {
+ // dump all our output in one write call - this is to try and limit IO "crosstalk" between multiple processes
+ // writing to the same logfile
+ std::string output;
+ output.reserve(64 * 1024);
+ for (const auto& pair : castMap)
+ {
+ MyFieldInfo s = niceName(pair.first);
+ output += "cast:\t" + s.parentClass //
+ + "\t" + s.fieldName //
+ + "\t" + s.fieldType //
+ + "\t" + s.sourceLocation //
+ + "\t" + pair.second->getQualifiedNameAsString() //
+ + "\n";
+ }
+ std::ofstream myfile;
+ myfile.open(WORKDIR "/loplugin.fieldcast.log", std::ios::app | std::ios::out);
+ myfile << output;
+ myfile.close();
+ }
+ else
+ {
+ for (const auto& pair : castMap)
+ report(DiagnosticsEngine::Warning, "cast %0", pair.first->getBeginLoc())
+ << pair.second->getQualifiedNameAsString();
+ }
+}
+
+MyFieldInfo FieldCast::niceName(const FieldDecl* fieldDecl)
+{
+ MyFieldInfo aInfo;
+
+ const RecordDecl* recordDecl = fieldDecl->getParent();
+
+ if (const CXXRecordDecl* cxxRecordDecl = dyn_cast<CXXRecordDecl>(recordDecl))
+ {
+ if (cxxRecordDecl->getTemplateInstantiationPattern())
+ cxxRecordDecl = cxxRecordDecl->getTemplateInstantiationPattern();
+ aInfo.parentClass = cxxRecordDecl->getQualifiedNameAsString();
+ }
+ else
+ {
+ aInfo.parentClass = recordDecl->getQualifiedNameAsString();
+ }
+
+ aInfo.fieldName = fieldDecl->getNameAsString();
+ // sometimes the name (if it's an anonymous thing) contains the full path of the build folder, which we don't need
+ size_t idx = aInfo.fieldName.find(SRCDIR);
+ if (idx != std::string::npos)
+ {
+ aInfo.fieldName = aInfo.fieldName.replace(idx, strlen(SRCDIR), "");
+ }
+ aInfo.fieldType = fieldDecl->getType().getAsString();
+
+ SourceLocation expansionLoc
+ = compiler.getSourceManager().getExpansionLoc(fieldDecl->getLocation());
+ StringRef name = getFilenameOfLocation(expansionLoc);
+ aInfo.sourceLocation
+ = std::string(name.substr(strlen(SRCDIR) + 1)) + ":"
+ + std::to_string(compiler.getSourceManager().getSpellingLineNumber(expansionLoc));
+ loplugin::normalizeDotDotInFilePath(aInfo.sourceLocation);
+
+ return aInfo;
+}
+
+bool FieldCast::VisitCXXDynamicCastExpr(const CXXDynamicCastExpr* expr)
+{
+ checkCast(expr);
+ return true;
+}
+
+bool FieldCast::VisitCXXStaticCastExpr(const CXXStaticCastExpr* expr)
+{
+ checkCast(expr);
+ return true;
+}
+
+void FieldCast::checkCast(const CXXNamedCastExpr* expr)
+{
+ if (ignoreLocation(expr))
+ return;
+ if (isInUnoIncludeFile(compiler.getSourceManager().getSpellingLoc(expr->getBeginLoc())))
+ return;
+ const QualType exprType = expr->getTypeAsWritten();
+ if (!exprType->getPointeeCXXRecordDecl())
+ return;
+ const Expr* subExpr = compat::getSubExprAsWritten(expr);
+ if (const MemberExpr* memberExpr = dyn_cast_or_null<MemberExpr>(subExpr->IgnoreImplicit()))
+ {
+ const FieldDecl* fieldDecl = dyn_cast_or_null<FieldDecl>(memberExpr->getMemberDecl());
+ if (!fieldDecl)
+ return;
+ if (isInUnoIncludeFile(
+ compiler.getSourceManager().getSpellingLoc(fieldDecl->getBeginLoc())))
+ return;
+ castMap.emplace(fieldDecl, exprType->getPointeeCXXRecordDecl());
+ }
+ else if (const CXXMemberCallExpr* memberCallExpr
+ = dyn_cast_or_null<CXXMemberCallExpr>(subExpr->IgnoreImplicit()))
+ {
+ if (!memberCallExpr->getMethodDecl()->getIdentifier()
+ || memberCallExpr->getMethodDecl()->getName() != "get")
+ return;
+ const MemberExpr* memberExpr = dyn_cast_or_null<MemberExpr>(
+ memberCallExpr->getImplicitObjectArgument()->IgnoreImplicit());
+ if (!memberExpr)
+ return;
+ const FieldDecl* fieldDecl = dyn_cast_or_null<FieldDecl>(memberExpr->getMemberDecl());
+ if (!fieldDecl)
+ return;
+ if (isInUnoIncludeFile(
+ compiler.getSourceManager().getSpellingLoc(fieldDecl->getBeginLoc())))
+ return;
+ castMap.emplace(fieldDecl, exprType->getPointeeCXXRecordDecl());
+ }
+}
+
+loplugin::Plugin::Registration<FieldCast> X("fieldcast", false);
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/fieldcast.py b/compilerplugins/clang/fieldcast.py
new file mode 100755
index 000000000000..cc6d3f3e5b3c
--- /dev/null
+++ b/compilerplugins/clang/fieldcast.py
@@ -0,0 +1,71 @@
+#!/usr/bin/python3
+
+import re
+import io
+
+definitionSet = set()
+definitionToSourceLocationMap = dict()
+definitionToTypeMap = dict()
+castMap = dict()
+
+# clang does not always use exactly the same numbers in the type-parameter vars it generates
+# so I need to substitute them to ensure we can match correctly.
+normalizeTypeParamsRegex = re.compile(r"type-parameter-\d+-\d+")
+def normalizeTypeParams( line ):
+ return normalizeTypeParamsRegex.sub("type-parameter-?-?", line)
+
+
+with io.open("workdir/loplugin.fieldcast.log", "r", buffering=1024*1024) as txt:
+ for line in txt:
+ tokens = line.strip().split("\t")
+ if tokens[0] == "cast:":
+ fieldInfo = (normalizeTypeParams(tokens[1]), tokens[2])
+ fieldType = tokens[3]
+ srcLoc = tokens[4]
+ castToType = tokens[5]
+ # ignore external source code
+ if srcLoc.startswith("external/"):
+ continue
+ # ignore build folder
+ if srcLoc.startswith("workdir/"):
+ continue
+ definitionSet.add(fieldInfo)
+ definitionToTypeMap[fieldInfo] = fieldType
+ definitionToSourceLocationMap[fieldInfo] = srcLoc
+
+ if not (fieldInfo in castMap):
+ castMap[fieldInfo] = castToType
+ elif castMap[fieldInfo] != "": # if we are not ignoring it
+ # if it is cast to more than one type, mark it as being ignored
+ if castMap[fieldInfo] != castToType:
+ castMap[fieldInfo] = ""
+ else:
+ print( "unknown line: " + line)
+
+outputSet = set()
+for k, v in castMap.items():
+ if v == "":
+ continue
+ srcLoc = definitionToSourceLocationMap[k]
+ outputSet.add((k[0] + " " + k[1] + " " + definitionToTypeMap[k], srcLoc, v))
+
+# sort the results using a "natural order" so sequences like [item1,item2,item10] sort nicely
+def natural_sort_key(s, _nsre=re.compile('([0-9]+)')):
+ return [int(text) if text.isdigit() else text.lower()
+ for text in re.split(_nsre, s)]
+# sort by both the source-line and the datatype, so the output file ordering is stable
+# when we have multiple fieldds declared on the same source line
+def v_sort_key(v):
+ return natural_sort_key(v[1]) + [v[0]]
+
+# sort results by name and line number
+tmp1list = sorted(outputSet, key=lambda v: v_sort_key(v))
+
+# print out the results
+with open("compilerplugins/clang/fieldcast.results", "wt") as f:
+ for t in tmp1list:
+ f.write( t[1] + "\n" )
+ f.write( " " + t[0] + "\n" )
+ f.write( " " + t[2] + "\n" )
+
+
diff --git a/compilerplugins/clang/fieldcast.results b/compilerplugins/clang/fieldcast.results
new file mode 100644
index 000000000000..a1ef6accb82b
--- /dev/null
+++ b/compilerplugins/clang/fieldcast.results
@@ -0,0 +1,1038 @@
+accessibility/inc/extended/accessibletabbarbase.hxx:53
+ accessibility::AccessibleTabBarBase m_pTabBar VclPtr<TabBar>
+ vcl::Window
+basctl/source/inc/accessibledialogwindow.hxx:67
+ basctl::AccessibleDialogWindow m_pDialogWindow VclPtr<basctl::DialogWindow>
+ vcl::Window
+basctl/source/inc/basidesh.hxx:87
+ basctl::Shell pLayout VclPtr<Layout>
+ basctl::ModulWindowLayout
+basctl/source/inc/basidesh.hxx:97
+ basctl::Shell m_xLibListener css::uno::Reference<css::container::XContainerListener>
+ basctl::ContainerListenerImpl
+basic/source/inc/errobject.hxx:27
+ SbxErrObject m_xErr css::uno::Reference<ooo::vba::XErrObject>
+ ErrObject
+basic/source/inc/runtime.hxx:68
+ SbiForStack refEnd SbxVariableRef
+ BasicCollection
+basic/source/inc/runtime.hxx:220
+ SbiRuntime pMod SbModule *
+ SbClassModuleObject
+bridges/source/jni_uno/jni_info.h:96
+ jni_uno::JNI_compound_type_info m_base const JNI_type_info *
+ jni_uno::JNI_compound_type_info
+bxml/parser.h:258
+ _xmlParserCtxt _private void *
+ DOM::CDocumentBuilder
+bxml/xpath.h:338
+ _xmlXPathContext funcLookupData void *
+ CLibxml2XFormsExtension
+chart2/inc/ChartModel.hxx:133
+ chart::ChartModel mxChartView rtl::Reference<ChartView>
+ cppu::OWeakObject
+chart2/inc/ChartModel.hxx:176
+ chart::ChartModel m_xXMLNamespaceMap rtl::Reference< ::chart::NameContainer>
+ cppu::OWeakObject
+chart2/inc/ChartView.hxx:213
+ chart::ChartView m_xDrawPage rtl::Reference<SvxDrawPage>
+ cppu::OWeakObject
+chart2/source/controller/dialogs/tp_ChartType.hxx:77
+ chart::ChartTypeTabPage m_xChartModel rtl::Reference< ::chart::ChartModel>
+ cppu::OWeakObject
+chart2/source/controller/inc/ChartDocumentWrapper.hxx:165
+ chart::wrapper::ChartDocumentWrapper m_xChartView rtl::Reference<ChartView>
+ cppu::OWeakObject
+chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx:108
+ chart::CreationWizardUnoDlg m_xParentWindow css::uno::Reference<css::awt::XWindow>
+ weld::TransportAsXWindow
+chart2/source/controller/inc/SelectionHelper.hxx:110
+ chart::SelectionHelper m_pMarkObj SdrObject *
+ SdrPathObj
+chart2/source/controller/sidebar/ChartTypePanel.hxx:105
+ chart::sidebar::ChartTypePanel m_xChartModel rtl::Reference< ::chart::ChartModel>
+ cppu::OWeakObject
+chart2/source/inc/Diagram.hxx:312
+ chart::Diagram::tTemplateWithServiceName xChartTypeTemplate rtl::Reference< ::chart::ChartTypeTemplate>
+ cppu::OWeakObject
+chart2/source/view/inc/PlotterBase.hxx:75
+ chart::PlotterBase m_pPosHelper PlottingPositionHelper *
+ chart::PolarPlottingPositionHelper
+comphelper/source/eventattachermgr/eventattachermgr.cxx:143
+ comphelper::(anonymous namespace)::AttacherAllListener_Impl mxManager rtl::Reference<ImplEventAttacherManager>
+ cppu::OWeakObject
+configmgr/source/valueparser.hxx:76
+ configmgr::ValueParser node_ rtl::Reference<Node>
+ configmgr::PropertyNode
+configmgr/source/xcsparser.hxx:80
+ configmgr::XcsParser::Element node rtl::Reference<Node>
+ configmgr::SetNode
+cui/source/inc/cfg.hxx:407
+ SvxConfigPage m_xContentsListBox std::unique_ptr<SvxMenuEntriesListBox>
+ SvxNotebookbarEntriesListBox
+cui/source/inc/cuitabarea.hxx:95
+ SvxAreaTabDialog mpNewColorList XColorListRef
+ XPropertyList
+cui/source/inc/cuitabarea.hxx:97
+ SvxAreaTabDialog mpNewGradientList XGradientListRef
+ XPropertyList
+cui/source/inc/cuitabarea.hxx:99
+ SvxAreaTabDialog mpNewHatchingList XHatchListRef
+ XPropertyList
+cui/source/inc/cuitabarea.hxx:101
+ SvxAreaTabDialog mpNewBitmapList XBitmapListRef
+ XPropertyList
+cui/source/inc/cuitabarea.hxx:103
+ SvxAreaTabDialog mpNewPatternList XPatternListRef
+ XPropertyList
+cui/source/inc/cuitabline.hxx:42
+ SvxLineTabDialog mpNewColorList XColorListRef
+ XPropertyList
+cui/source/inc/cuitabline.hxx:44
+ SvxLineTabDialog pNewDashList XDashListRef
+ XPropertyList
+cui/source/inc/cuitabline.hxx:46
+ SvxLineTabDialog pNewLineEndList XLineEndListRef
+ XPropertyList
+cui/source/inc/cuitabline.hxx:321
+ SvxLineEndDefTabPage pPolyObj const SdrObject *
+ SdrPathObj
+cui/source/inc/newtabledlg.hxx:40
+ SvxNewTableDialogWrapper m_xDlg std::shared_ptr<weld::DialogController>
+ SvxNewTableDialog
+cui/source/options/optcolor.cxx:270
+ (anonymous namespace)::ColorConfigWindow_Impl::Entry m_xText std::unique_ptr<weld::Widget>
+ weld::Toggleable
+cui/source/options/treeopt.cxx:424
+ OptionsPageInfo m_xPage std::unique_ptr<SfxTabPage>
+ SvxDefaultColorOptPage
+dbaccess/source/core/api/resultset.hxx:73
+ dbaccess::OResultSet m_pColumns std::unique_ptr<OColumns>
+ com::sun::star::container::XNameAccess
+dbaccess/source/core/dataaccess/documentdefinition.cxx:158
+ dbaccess::(anonymous namespace)::OEmbedObjectHolder m_pDefinition ODocumentDefinition *
+ cppu::OWeakObject
+dbaccess/source/filter/xml/xmlStyleImport.hxx:35
+ dbaxml::OTableStyleContext pStyles SvXMLStylesContext *
+ dbaxml::OTableStylesContext
+dbaccess/source/ui/app/AppDetailView.hxx:105
+ dbaui::OApplicationDetailView m_xControlHelper std::shared_ptr<OChildWindow>
+ dbaui::OAppDetailPageHelper
+dbaccess/source/ui/inc/brwctrlr.hxx:102
+ dbaui::SbaXDataBrowserController m_xFormControllerImpl rtl::Reference<FormControllerImpl>
+ cppu::OWeakObject
+dbaccess/source/ui/inc/RelationDlg.hxx:34
+ dbaui::ORelationDialog m_pConnData TTableConnectionData::value_type
+ dbaui::ORelationTableConnectionData
+dbaccess/source/ui/inc/RelationDlg.hxx:35
+ dbaui::ORelationDialog m_pOrigConnData TTableConnectionData::value_type
+ dbaui::ORelationTableConnectionData
+dbaccess/source/ui/querydesign/QueryDesignUndoAction.hxx:32
+ dbaui::OQueryDesignUndoAction m_pOwner VclPtr<OJoinTableView>
+ dbaui::OQueryTableView
+dbaccess/source/ui/querydesign/querydlg.hxx:37
+ dbaui::DlgQryJoin m_pConnData TTableConnectionData::value_type
+ dbaui::OQueryTableConnectionData
+editeng/source/editeng/impedit.hxx:268
+ ImpEditView mpViewShell OutlinerViewShell *
+ SfxViewShell
+editeng/source/editeng/impedit.hxx:270
+ ImpEditView mpOtherShell OutlinerViewShell *
+ SfxViewShell
+editeng/source/editeng/impedit.hxx:506
+ ImpEditEngine pEditEngine EditEngine *
+ OutlinerEditEng
+extensions/source/scanner/scanunx.cxx:127
+ (anonymous namespace)::ScannerThread m_pManager ScannerManager *
+ cppu::OWeakObject
+extensions/source/update/check/updatecheck.hxx:164
+ UpdateCheck m_pThread WorkerThread *
+ (anonymous namespace)::UpdateCheckThread
+forms/source/component/EventThread.hxx:60
+ frm::OComponentEventThread m_xComp rtl::Reference< ::cppu::OComponentHelper>
+ com::sun::star::uno::XWeak
+forms/source/xforms/binding.hxx:97
+ xforms::Binding mxModel css::uno::Reference<css::xforms::XModel>
+ xforms::Model
+fpicker/source/office/iodlgimp.hxx:115
+ SvtExpFileDlg_Impl m_xFtFileName std::unique_ptr<weld::Label>
+ weld::Widget
+fpicker/source/office/iodlgimp.hxx:118
+ SvtExpFileDlg_Impl m_xSharedLabel std::unique_ptr<weld::Label>
+ weld::Widget
+fpicker/source/office/iodlgimp.hxx:119
+ SvtExpFileDlg_Impl m_xSharedListBox std::unique_ptr<weld::ComboBox>
+ weld::Widget
+framework/inc/services/layoutmanager.hxx:253
+ framework::LayoutManager m_xMenuBar css::uno::Reference<css::ui::XUIElement>
+ framework::MenuBarWrapper
+framework/inc/services/layoutmanager.hxx:256
+ framework::LayoutManager m_xProgressBarBackup css::uno::Reference<css::ui::XUIElement>
+ framework::ProgressBarWrapper
+framework/inc/uielement/addonstoolbarwrapper.hxx:50
+ framework::AddonsToolBarWrapper m_xToolBarManager css::uno::Reference<css::lang::XComponent>
+ framework::ToolBarManager
+framework/inc/uielement/menubarmanager.hxx:146
+ framework::MenuBarManager::MenuItemHandler xSubMenuManager css::uno::Reference<css::frame::XStatusListener>
+ framework::MenuBarManager
+framework/inc/uielement/menubarwrapper.hxx:67
+ framework::MenuBarWrapper m_xMenuBarManager css::uno::Reference<css::lang::XComponent>
+ framework::MenuBarManager
+framework/inc/uielement/statusbarwrapper.hxx:50
+ framework::StatusBarWrapper m_xStatusBarManager css::uno::Reference<css::lang::XComponent>
+ framework::StatusBarManager
+framework/inc/uielement/toolbarwrapper.hxx:78
+ framework::ToolBarWrapper m_xToolBarManager css::uno::Reference<css::lang::XComponent>
+ framework::ToolBarManager
+framework/inc/uielement/uielement.hxx:89
+ framework::UIElement m_xUIElement css::uno::Reference<css::ui::XUIElement>
+ framework::AddonsToolBarWrapper
+framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx:222
+ (anonymous namespace)::ModuleUIConfigurationManager m_xModuleImageManager rtl::Reference<ImageManager>
+ cppu::OWeakObject
+framework/source/uiconfiguration/uiconfigurationmanager.cxx:199
+ (anonymous namespace)::UIConfigurationManager m_xImageManager rtl::Reference<ImageManager>
+ cppu::OWeakObject
+i18npool/inc/calendarImpl.hxx:103
+ i18npool::CalendarImpl xCalendar css::uno::Reference<css::i18n::XCalendar4>
+ i18npool::Calendar_gregorian
+include/basegfx/DrawCommands.hxx:121
+ gfx::DrawRectangle mpFillGradient std::shared_ptr<GradientInfo>
+ gfx::LinearGradientInfo
+include/basic/modsizeexceeded.hxx:59
+ ModuleSizeExceeded m_xAbort css::uno::Reference<css::task::XInteractionContinuation>
+ comphelper::OInteraction
+include/basic/modsizeexceeded.hxx:60
+ ModuleSizeExceeded m_xApprove css::uno::Reference<css::task::XInteractionContinuation>
+ comphelper::OInteraction
+include/basic/sbmod.hxx:72
+ SbModule pDocObject SbxObjectRef
+ SbUnoObject
+include/basic/sbstar.hxx:47
+ StarBASIC pRtl SbxObjectRef
+ SbiStdObject
+include/basic/sbxvar.hxx:258
+ SbxVariable pParent SbxObject *
+ StarBASIC
+include/comphelper/propertycontainerhelper.hxx:48
+ comphelper::PropertyDescription::LocationAccess pDerivedClassMember void *
+ com::sun::star::uno::Any
+include/connectivity/sdbcx/VTable.hxx:77
+ connectivity::sdbcx::OTable m_xColumns std::unique_ptr<OCollection>
+ dbaccess::OColumns
+include/connectivity/sdbcx/VTable.hxx:79
+ connectivity::sdbcx::OTable m_pTables OCollection *
+ connectivity::mysql::OTables
+include/cppuhelper/interfacecontainer.h:601
+ cppu::OMultiTypeInterfaceContainerHelper m_pMap void *
+ std::vector
+include/cppuhelper/propshlp.hxx:298
+ cppu::OMultiTypeInterfaceContainerHelperInt32 m_pMap void *
+ std::vector
+include/editeng/AccessibleContextBase.hxx:266
+ accessibility::AccessibleContextBase mxRelationSet css::uno::Reference<css::accessibility::XAccessibleRelationSet>
+ utl::AccessibleRelationSetHelper
+include/editeng/editdata.hxx:231
+ HtmlImportInfo pParser SvParser<HtmlTokenId> *
+ HTMLParser
+include/editeng/editdata.hxx:245
+ RtfImportInfo pParser SvParser<int> *
+ SvxRTFParser
+include/filter/msfilter/msdffimp.hxx:219
+ SvxMSDffImportRec pObj rtl::Reference<SdrObject>
+ SdrObjGroup
+include/filter/msfilter/svdfppt.hxx:458
+ SdPageCapsule page SdrPage *
+ SdPage
+include/formula/FormulaCompiler.hxx:394
+ formula::FormulaCompiler mpToken FormulaTokenRef
+ ScTableRefToken
+include/formula/FormulaCompiler.hxx:397
+ formula::FormulaCompiler pArr FormulaTokenArray *
+ ScTokenArray
+include/jvmaccess/unovirtualmachine.hxx:94
+ jvmaccess::UnoVirtualMachine m_classLoader void *
+ _jobject
+include/oox/drawingml/graphicshapecontext.hxx:55
+ oox::drawingml::GraphicalObjectFrameContext mpParent ::oox::core::ContextHandler2Helper *
+ oox::ppt::PPTShapeGroupContext
+include/oox/drawingml/shape.hxx:418
+ oox::drawingml::Shape mpDiagramHelper svx::diagram::IDiagramHelper *
+ oox::drawingml::AdvancedDiagramHelper
+include/oox/drawingml/shapecontext.hxx:46
+ oox::drawingml::ShapeContext mpShapePtr ShapePtr
+ oox::ppt::PPTShape
+include/oox/export/vmlexport.hxx:87
+ oox::vml::VMLExport m_pSdrObject const SdrObject *
+ SdrGrafObj
+include/oox/shape/ShapeContextHandler.hxx:137
+ oox::shape::ShapeContextHandler mxDrawingFragmentHandler rtl::Reference<vml::DrawingFragment>
+ oox::core::ContextHandler
+include/oox/shape/ShapeContextHandler.hxx:140
+ oox::shape::ShapeContextHandler mxLockedCanvasContext rtl::Reference<LockedCanvasContext>
+ oox::core::ContextHandler
+include/oox/shape/ShapeContextHandler.hxx:143
+ oox::shape::ShapeContextHandler mxWpgContext rtl::Reference<WpgContext>
+ oox::core::ContextHandler
+include/oox/vml/vmlshapecontext.hxx:147
+ oox::vml::ShapeContext mrShape ShapeBase &
+ oox::vml::SimpleShape
+include/sfx2/basedlgs.hxx:129
+ SfxSingleTabDialogController m_xSfxPage std::unique_ptr<SfxTabPage>
+ SfxMacroTabPage
+include/sfx2/devtools/DevelopmentToolDockingWindow.hxx:42
+ DevelopmentToolDockingWindow mxSelectionListener css::uno::Reference<css::view::XSelectionChangeListener>
+ SelectionChangeHandler
+include/sfx2/sfxstatuslistener.hxx:69
+ SfxStatusListener m_xDispatch css::uno::Reference<css::frame::XDispatch>
+ SfxOfficeDispatch
+include/sfx2/sidebar/Panel.hxx:102
+ sfx2::sidebar::Panel mxElement css::uno::Reference<css::ui::XUIElement>
+ sfx2::sidebar::SidebarPanelBase
+include/sot/stg.hxx:209
+ UCBStorageStream pImp UCBStorageStream_Impl *
+ SvStream
+include/sot/storage.hxx:52
+ SotStorageStream pOwnStm BaseStorageStream *
+ UCBStorageStream
+include/sot/storage.hxx:77
+ SotStorage m_pOwnStg BaseStorage *
+ UCBStorage
+include/svl/style.hxx:208
+ SfxStyleSheetIterator pBasePool const SfxStyleSheetBasePool *
+ SwDocStyleSheetPool
+include/svl/style.hxx:236
+ SfxStyleSheetBasePool rPool SfxItemPool &
+ ScDocumentPool
+include/svl/undo.hxx:92
+ MarkedUndoAction pAction std::unique_ptr<SfxUndoAction>
+ ScSimpleUndo
+include/svtools/brwbox.hxx:270
+ BrowseBox pDataWin VclPtr<BrowserDataWin>
+ Control
+include/svx/AccessibleShape.hxx:391
+ accessibility::AccessibleShape m_pShape SdrObject *
+ SdrOle2Obj
+include/svx/clipboardctl.hxx:34
+ SvxClipBoardControl pClipboardFmtItem std::unique_ptr<SfxPoolItem>
+ SvxClipboardFormatItem
+include/svx/fmsrcimp.hxx:161
+ FmSearchEngine m_xSearchCursor CursorWrapper
+ com::sun::star::uno::Reference
+include/svx/gridctrl.hxx:255
+ DbGridControl m_pFieldListeners void *
+ std::map
+include/svx/svdhdl.hxx:136
+ SdrHdl m_pObj SdrObject *
+ SdrEdgeObj
+include/svx/svdmodel.hxx:198
+ SdrModel mxStyleSheetPool rtl::Reference<SfxStyleSheetBasePool>
+ SdStyleSheetPool
+include/svx/svdundo.hxx:156
+ SdrUndoAttrObj mxUndoStyleSheet rtl::Reference<SfxStyleSheetBase>
+ SfxStyleSheet
+include/svx/svdundo.hxx:157
+ SdrUndoAttrObj mxRedoStyleSheet rtl::Reference<SfxStyleSheetBase>
+ SfxStyleSheet
+include/svx/svdview.hxx:100
+ SdrViewEvent mpObj SdrObject *
+ sdr::table::SdrTableObj
+include/svx/unomodel.hxx:45
+ SvxUnoDrawingModel mpDoc SdrModel *
+ FmFormModel
+include/svx/unopage.hxx:65
+ SvxDrawPage mpPage SdrPage *
+ SdPage
+include/test/a11y/accessibletestbase.hxx:42
+ test::AccessibleTestBase mxDocument css::uno::Reference<css::lang::XComponent>
+ vcl::ITiledRenderable
+include/toolkit/awt/vclxmenu.hxx:59
+ VCLXMenu mpMenu VclPtr<Menu>
+ PopupMenu
+include/tools/zcodec.hxx:59
+ ZCodec mpsC_Stream void *
+ z_stream_s
+include/uno/dispatcher.hxx:54
+ com::sun::star::uno::UnoInterfaceReference m_pUnoI uno_Interface *
+ binaryurp::Proxy
+include/vbahelper/vbaeventshelperbase.hxx:214
+ VbaEventsHelperBase mpShell SfxObjectShell *
+ ScDocShell
+include/vcl/builder.hxx:144
+ VclBuilder::WinAndId m_pWindow VclPtr<vcl::Window>
+ PushButton
+include/vcl/builder.hxx:158
+ VclBuilder::MenuAndId m_pMenu VclPtr<Menu>
+ PopupMenu
+include/vcl/dockwin.hxx:117
+ DockingWindow mpOldBorderWin VclPtr<vcl::Window>
+ ImplBorderWindow
+include/vcl/event.hxx:353
+ DataChangedEvent mpData void *
+ AllSettings
+include/vcl/menu.hxx:127
+ Menu pStartedFrom VclPtr<Menu>
+ PopupMenu
+include/vcl/sysdata.hxx:68
+ SystemEnvData pDisplay void *
+ _XDisplay
+include/vcl/sysdata.hxx:71
+ SystemEnvData pVisual void *
+ Visual
+include/vcl/sysdata.hxx:161
+ SystemGraphicsData pSurface void *
+ _cairo_surface
+include/vcl/sysdata.hxx:197
+ SystemWindowData pVisual void *
+ Visual
+include/vcl/toolkit/fmtfield.hxx:60
+ FormattedField m_pFormatter Formatter *
+ (anonymous namespace)::DoubleCurrencyFormatter
+include/vcl/toolkit/menubtn.hxx:41
+ MenuButton mpFloatingWindow VclPtr<Window>
+ FloatingWindow
+include/vcl/toolkit/treelistbox.hxx:232
+ SvTreeListBox pEdItem SvLBoxItem *
+ SvLBoxString
+include/vcl/uitest/uiobject.hxx:156
+ ButtonUIObject mxButton VclPtr<Button>
+ PushButton
+include/vcl/virdev.hxx:48
+ VirtualDevice mpVirDev std::unique_ptr<SalVirtualDevice>
+ SvpSalVirtualDevice
+include/xmloff/maptype.hxx:34
+ XMLPropertyMapEntry msApiName OUString
+ rtl::OUString
+include/xmloff/prstylei.hxx:45
+ XMLPropStyleContext mxStyles rtl::Reference<SvXMLStylesContext>
+ SvXMLStylesContext
+include/xmloff/shapeimport.hxx:150
+ XMLShapeImportHelper mrImporter SvXMLImport &
+ ScXMLImport
+include/xmloff/xmlimp.hxx:225
+ SvXMLImport mpStyleMap rtl::Reference<StyleMap>
+ com::sun::star::lang::XTypeProvider
+include/xmloff/XMLPageExport.hxx:61
+ XMLPageExport m_xPageMasterExportPropMapper rtl::Reference<SvXMLExportPropertyMapper>
+ XMLPageMasterExportPropMapper
+lingucomponent/source/languageguessing/simpleguesser.hxx:97
+ SimpleGuesser h void *
+ (anonymous namespace)::textcat_t
+lotuswordpro/source/filter/lwpframelayout.hxx:103
+ LwpFrame m_pLayout LwpPlacableLayout *
+ LwpFrameLayout
+package/source/xstor/owriteablestream.hxx:241
+ OWriteStream m_xOutStream css::uno::Reference<css::io::XOutputStream>
+ comphelper::ByteWriter
+package/source/xstor/xstorage.hxx:114
+ OStorage_Impl m_pAntiImpl OStorage *
+ com::sun::star::util::XModifiable
+package/source/xstor/xstorage.hxx:158
+ OStorage_Impl m_pSwitchStream rtl::Reference<SwitchablePersistenceStream>
+ com::sun::star::io::XStream
+package/source/xstor/xstorage.hxx:286
+ OStorage m_pSubElDispListener ::rtl::Reference<OChildDispListener_Impl>
+ com::sun::star::lang::XEventListener
+reportdesign/source/filter/xml/xmlImportDocumentHandler.hxx:83
+ rptxml::ImportDocumentHandler m_xDocumentHandler css::uno::Reference<css::xml::sax::XFastDocumentHandler>
+ SvXMLImport
+reportdesign/source/filter/xml/xmlStyleImport.hxx:34
+ rptxml::OControlStyleContext pStyles SvXMLStylesContext *
+ rptxml::OReportStylesContext
+reportdesign/source/ui/inc/DesignView.hxx:57
+ rptui::ODesignView m_pTaskPane VclPtr<vcl::Window>
+ rptui::(anonymous namespace)::OTaskWindow
+sal/rtl/bootstrap.cxx:396
+ (anonymous namespace)::FundamentalIniData ini rtlBootstrapHandle
+ (anonymous namespace)::Bootstrap_Impl
+sc/inc/chgtrack.hxx:192
+ ScChangeAction pNext ScChangeAction *
+ ScChangeActionContent
+sc/inc/compiler.hxx:310
+ ScCompiler::TableRefEntry mxToken ScTokenRef
+ ScTableRefToken
+sc/inc/dpfilteredcache.hxx:97
+ ScDPFilteredCache::Criterion mpFilter std::shared_ptr<FilterBase>
+ ScDPFilteredCache::GroupFilter
+sc/inc/dpobject.hxx:95
+ ScDPObject mpTableData std::shared_ptr<ScDPTableData>
+ ScDPGroupTableData
+sc/source/core/opencl/formulagroupcl.cxx:1873
+ sc::opencl::(anonymous namespace)::DynamicKernelSoPArguments mpCodeGen std::shared_ptr<SlidingFunctionBase>
+ sc::opencl::OpSumIfs
+sc/source/core/opencl/opbase.hxx:465
+ sc::opencl::DynamicKernelSlidingArgument mpCodeGen std::shared_ptr<SlidingFunctionBase>
+ sc::opencl::OpSumIfs
+sc/source/filter/excel/xeformula.cxx:60
+ (anonymous namespace)::XclExpScToken mpScToken const FormulaToken *
+ formula::FormulaExternalToken
+sc/source/filter/inc/eeimport.hxx:43
+ ScEEImport mpParser std::unique_ptr<ScEEParser>
+ ScHTMLParser
+sc/source/filter/inc/pivottablebuffer.hxx:382
+ oox::xls::PivotTable mxDPDescriptor css::uno::Reference<css::sheet::XDataPilotDescriptor>
+ ScDataPilotDescriptorBase
+sc/source/filter/inc/xcl97rec.hxx:240
+ XclObjOle rOleObj const SdrObject &
+ SdrOle2Obj
+sc/source/filter/xml/xmlcvali.cxx:52
+ (anonymous namespace)::ScXMLContentValidationContext xEventContext SvXMLImportContextRef
+ XMLEventsImportContext
+sc/source/filter/xml/xmlimprt.hxx:156
+ ScXMLImport xSheetCellRanges css::uno::Reference<css::sheet::XSheetCellRangeContainer>
+ ScCellRangesObj
+sc/source/filter/xml/xmlstyli.hxx:70
+ XMLTableStyleContext pStyles SvXMLStylesContext *
+ XMLTableStylesContext
+sc/source/ui/inc/AccessibleContextBase.hxx:232
+ ScAccessibleContextBase mxParent css::uno::Reference<css::accessibility::XAccessible>
+ ScAccessibleSpreadsheet
+sc/source/ui/vba/vbaaxes.cxx:95
+ (anonymous namespace)::AxisIndexWrapper mxChart uno::Reference<excel::XChart>
+ ScVbaChart
+sc/source/ui/vba/vbaaxis.hxx:29
+ ScVbaAxis moChartParent css::uno::Reference<ov::excel::XChart>
+ ScVbaChart
+sc/source/ui/vba/vbaformat.hxx:42
+ ScVbaFormat mxPropertySet css::uno::Reference<css::beans::XPropertySet>
+ ScCellRangesBase
+sc/source/ui/vba/vbaformatconditions.hxx:37
+ ScVbaFormatConditions mxStyles css::uno::Reference<ov::excel::XStyles>
+ ScVbaStyles
+sc/source/ui/vba/vbaname.hxx:34
+ ScVbaName mxNamedRange css::uno::Reference<css::sheet::XNamedRange>
+ ScNamedRangeObj
+sc/source/ui/vba/vbarange.hxx:79
+ ScVbaRange mxRanges css::uno::Reference<css::sheet::XSheetCellRangeContainer>
+ ScCellRangesBase
+sc/source/ui/vba/vbawindow.cxx:103
+ (anonymous namespace)::SelectedSheetsEnumAccess m_xModel uno::Reference<frame::XModel>
+ ScModelObj
+sd/inc/Outliner.hxx:283
+ SdOutliner mpObj SdrObject *
+ SdrGrafObj
+sd/inc/sdfilter.hxx:53
+ SdFilter mrDocShell ::sd::DrawDocShell &
+ SfxObjectShell
+sd/inc/stlpool.hxx:135
+ SdStyleSheetPool mxGraphicFamily SdStyleFamilyRef
+ com::sun::star::container::XNameAccess
+sd/inc/stlpool.hxx:136
+ SdStyleSheetPool mxCellFamily SdStyleFamilyRef
+ com::sun::star::container::XNameAccess
+sd/source/console/PresenterController.hxx:181
+ sdext::presenter::PresenterController mxController rtl::Reference< ::sd::DrawController>
+ cppu::OWeakObject
+sd/source/console/PresenterCurrentSlideObserver.hxx:73
+ sdext::presenter::PresenterCurrentSlideObserver mpPresenterController ::rtl::Reference<PresenterController>
+ com::sun::star::uno::XWeak
+sd/source/ui/annotations/annotationtag.cxx:171
+ sd::(anonymous namespace)::AnnotationHdl mxAnnotation Reference<XAnnotation>
+ sd::Annotation
+sd/source/ui/annotations/annotationtag.hxx:77
+ sd::AnnotationTag mxAnnotation css::uno::Reference<css::office::XAnnotation>
+ sd::Annotation
+sd/source/ui/dlg/sddlgfact.hxx:165
+ AbstractBulletDialog_Impl m_xDlg std::shared_ptr<SfxTabDialogController>
+ sd::OutlineBulletDlg
+sd/source/ui/inc/DrawViewShell.hxx:497
+ sd::DrawViewShell mxScannerListener css::uno::Reference<css::lang::XEventListener>
+ sd::(anonymous namespace)::ScannerEventListener
+sd/source/ui/inc/framework/FrameworkHelper.hxx:301
+ sd::framework::FrameworkHelper mxConfigurationController css::uno::Reference<css::drawing::framework::XConfigurationController>
+ sd::framework::ConfigurationController
+sd/source/ui/inc/fupoor.hxx:147
+ sd::FuPoor mpDocSh DrawDocShell *
+ sd::GraphicDocShell
+sd/source/ui/inc/fusel.hxx:76
+ sd::FuSelection pHdl SdrHdl *
+ svx::diagram::DiagramFrameHdl
+sd/source/ui/inc/OutlineView.hxx:169
+ sd::OutlineView mrOutliner SdrOutliner &
+ SdOutliner
+sd/source/ui/inc/TextObjectBar.hxx:53
+ sd::TextObjectBar mpView ::sd::View *
+ sd::OutlineView
+sd/source/ui/inc/unchss.hxx:34
+ StyleSheetUndoAction mpStyleSheet SfxStyleSheet *
+ SdStyleSheet
+sd/source/ui/inc/ViewShell.hxx:434
+ sd::ViewShell mpContentWindow VclPtr<sd::Window>
+ vcl::Window
+sd/source/ui/inc/ViewShell.hxx:452
+ sd::ViewShell mpView ::sd::View *
+ SdrView
+sd/source/ui/slideshow/slideshowimpl.hxx:296
+ sd::SlideshowImpl mpViewShell ViewShell *
+ sd::PresentationViewShell
+sd/source/ui/table/tableobjectbar.hxx:51
+ sd::ui::table::TableObjectBar mpViewSh ::sd::ViewShell *
+ sd::DrawViewShell
+sd/source/ui/unoidl/unolayer.hxx:85
+ SdLayer mxLayerManager rtl::Reference<SdLayerManager>
+ cppu::OWeakObject
+sd/source/ui/view/DocumentRenderer.cxx:1319
+ sd::DocumentRenderer::Implementation mrBase ViewShellBase &
+ SfxBroadcaster
+sd/source/ui/view/sdview3.cxx:95
+ sd::(anonymous namespace)::ImpRememberOrigAndClone pOrig SdrObject *
+ SdrEdgeObj
+sd/source/ui/view/sdview3.cxx:96
+ sd::(anonymous namespace)::ImpRememberOrigAndClone pClone SdrObject *
+ SdrEdgeObj
+sd/source/ui/view/ViewShellManager.cxx:56
+ sd::(anonymous namespace)::ShellDescriptor mpShell SfxShell *
+ sd::ViewShell
+sdext/source/pdfimport/pdfparse/pdfentries.cxx:49
+ pdfparse::EmitImplData m_pObjectContainer const PDFContainer *
+ pdfparse::PDFFile
+sdext/source/pdfimport/sax/emitcontext.hxx:36
+ pdfi::SaxEmitter m_xDocHdl css::uno::Reference<css::xml::sax::XDocumentHandler>
+ SvXMLImport
+sfx2/inc/unoctitm.hxx:111
+ SfxDispatchController_Impl pDispatch SfxOfficeDispatch *
+ com::sun::star::frame::XDispatch
+sfx2/source/doc/exoticfileloadexception.hxx:37
+ ExoticFileLoadException m_xApprove css::uno::Reference<css::task::XInteractionContinuation>
+ comphelper::OInteraction
+sfx2/source/inc/objshimp.hxx:66
+ SfxObjectShell_Impl nTime DateTime
+ tools::Time
+sfx2/source/inc/objshimp.hxx:106
+ SfxObjectShell_Impl xHeaderAttributes tools::SvRef<SvRefBase>
+ SvKeyValueIterator
+sfx2/source/inc/statcach.hxx:66
+ SfxStateCache pInternalController SfxControllerItem *
+ SfxDispatchController_Impl
+sfx2/source/inc/StyleList.hxx:234
+ StyleList m_pParentDialog SfxCommonTemplateDialog_Impl *
+ SfxTemplateDialog_Impl
+sfx2/source/inc/workwin.hxx:84
+ SfxChild_Impl pWin VclPtr<vcl::Window>
+ SplitWindow
+sfx2/source/view/impframe.hxx:45
+ SfxFrame_Impl pExternalContainerWindow VclPtr<vcl::Window>
+ SystemWindow
+slideshow/source/inc/slideshowcontext.hxx:106
+ slideshow::internal::SlideShowContext mrCursorManager CursorManager &
+ slideshow::internal::Slide
+sot/source/sdstor/stgavl.hxx:43
+ StgAvlNode m_pLeft StgAvlNode *
+ StgDirEntry
+sot/source/sdstor/stgavl.hxx:43
+ StgAvlNode m_pRight StgAvlNode *
+ StgDirEntry
+sot/source/sdstor/stgcache.hxx:57
+ StgCache m_pStrm SvStream *
+ SvFileStream
+starmath/inc/caret.hxx:26
+ SmCaretPos pSelectedNode SmNode *
+ SmTextNode
+starmath/source/unofilter.cxx:28
+ (anonymous namespace)::MathTypeFilter m_xDstDoc uno::Reference<lang::XComponent>
+ SmModel
+store/source/storbase.hxx:546
+ store::OStorePageObject m_xPage std::shared_ptr<PageData>
+ store::OStoreDirectoryPageData
+svgio/inc/svgvisitor.hxx:23
+ svgio::svgreader::SvgDrawVisitor mpCurrent std::shared_ptr<gfx::DrawBase>
+ gfx::DrawRoot
+svx/source/accessibility/AccessibleTextHelper.cxx:188
+ accessibility::AccessibleTextHelper_Impl mxFrontEnd uno::Reference<XAccessible>
+ accessibility::AccessibleCell
+svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx:459
+ (anonymous namespace)::BinaryFunctionExpression mpFirstArg std::shared_ptr<ExpressionNode>
+ (anonymous namespace)::BinaryFunctionExpression
+svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx:460
+ (anonymous namespace)::BinaryFunctionExpression mpSecondArg std::shared_ptr<ExpressionNode>
+ (anonymous namespace)::BinaryFunctionExpression
+svx/source/inc/fmundo.hxx:187
+ FmXUndoEnvironment m_pPropertySetCache void *
+ std::map
+svx/source/unodraw/UnoGraphicExporter.cxx:172
+ (anonymous namespace)::GraphicExporter mpDoc SdrModel *
+ FmFormModel
+svx/source/unodraw/unoshtxt.cxx:82
+ SvxTextEditSourceImpl mpText SdrText *
+ sdr::table::Cell
+sw/inc/calbck.hxx:184
+ SwModify m_pWriterListeners sw::WriterListener *
+ SwClient
+sw/inc/calbck.hxx:287
+ sw::ClientIteratorBase m_pPosition WriterListener *
+ sw::ListenerEntry
+sw/inc/calc.hxx:146
+ SwCalcExp pFieldType const SwFieldType *
+ SwUserFieldType
+sw/inc/cellatr.hxx:57
+ SwTableBoxFormula m_pDefinedIn sw::BroadcastingModify *
+ SwTableBoxFormat
+sw/inc/contentindex.hxx:51
+ SwContentIndex m_pMark const sw::mark::IMark *
+ sw::mark::CrossRefBookmark
+sw/inc/crsrsh.hxx:115
+ SwContentAtPos pFndTextAttr const SwTextAttr *
+ SwTextFootnote
+sw/inc/doc.hxx:219
+ SwDoc mpMarkManager const std::unique_ptr< ::sw::mark::MarkManager>
+ IDocumentMarkAccess
+sw/inc/docsh.hxx:72
+ SwDocShell m_xBasePool rtl::Reference<SfxStyleSheetBasePool>
+ SwDocStyleSheetPool
+sw/inc/docstyle.hxx:52
+ SwDocStyleSheet m_pColl SwTextFormatColl *
+ SwConditionTextFormatColl
+sw/inc/EnhancedPDFExportHelper.hxx:99
+ Num_Info mrFrame const SwFrame &
+ SwTextFrame
+sw/inc/hints.hxx:61
+ SwPtrMsgPoolItem pObject void *
+ SwFormat
+sw/inc/ndgrf.hxx:40
+ SwGrfNode mxLink tools::SvRef<sfx2::SvBaseLink>
+ SwBaseLink
+sw/inc/OnlineAccessibilityCheck.hxx:30
+ sw::WeakNodeContainer m_pNode SwNode *
+ sw::BroadcastingModify
+sw/inc/section.hxx:152
+ SwSection m_RefLink tools::SvRef<sfx2::SvBaseLink>
+ (anonymous namespace)::SwIntrnlSectRefLink
+sw/inc/swbaslnk.hxx:31
+ SwBaseLink m_pContentNode SwContentNode *
+ SwGrfNode
+sw/inc/swevent.hxx:63
+ SwCallMouseEvent::(unnamed union at /home/noel/libo-plugin/sw/inc/swevent.hxx:60:5) pFormat const SwFrameFormat *
+ sw::SpzFrameFormat
+sw/inc/swevent.hxx:71
+ SwCallMouseEvent::(anonymous union)::(unnamed struct at /home/noel/libo-plugin/sw/inc/swevent.hxx:69:9) pFormat const SwFrameFormat *
+ sw::SpzFrameFormat
+sw/inc/swserv.hxx:37
+ SwServerObject::(unnamed union at /home/noel/libo-plugin/sw/inc/swserv.hxx:36:5) pBkmk ::sw::mark::IMark *
+ sw::mark::DdeBookmark
+sw/inc/undobj.hxx:300
+ SwUndoFlyBase m_pFrameFormat SwFrameFormat *
+ sw::SpzFrameFormat
+sw/inc/unotextcursor.hxx:78
+ SwXTextCursor m_pUnoCursor sw::UnoCursorPointer
+ SwCursor
+sw/inc/view.hxx:197
+ SwView m_pWrtShell std::unique_ptr<SwWrtShell>
+ SwCursorShell
+sw/inc/viscrs.hxx:44
+ SwVisibleCursor m_pCursorShell const SwCursorShell *
+ SwViewShell
+sw/inc/viscrs.hxx:90
+ SwSelPaintRects m_pCursorOverlay std::unique_ptr<sdr::overlay::OverlayObject>
+ sdr::overlay::OverlaySelection
+sw/source/core/access/accfrmobj.hxx:82
+ sw::access::SwAccessibleChild mpDrawObj const SdrObject *
+ SwVirtFlyDrawObj
+sw/source/core/access/accnotexthyperlink.hxx:35
+ SwAccessibleNoTextHyperlink mpFrame const SwFrame *
+ SwLayoutFrame
+sw/source/core/doc/doccomp.cxx:1909
+ (anonymous namespace)::SaveMergeRedline pSrcRedl const SwRangeRedline *
+ SwPaM
+sw/source/core/doc/DocumentRedlineManager.cxx:1110
+ (anonymous namespace)::TemporaryRedlineUpdater m_rRedline SwRangeRedline &
+ SwPaM
+sw/source/core/inc/DocumentContentOperationsManager.hxx:120
+ sw::DocumentContentOperationsManager::ParaRstFormat pFormatColl SwFormatColl *
+ SwTextFormatColl
+sw/source/core/inc/flowfrm.hxx:118
+ SwFlowFrame m_pFollow SwFlowFrame *
+ SwTextFrame
+sw/source/core/inc/frame.hxx:338
+ SwFrame mpNext SwFrame *
+ SwContentFrame
+sw/source/core/inc/MarkManager.hxx:160
+ sw::mark::MarkManager m_pLastActiveFieldmark sw::mark::FieldmarkWithDropDownButton *
+ sw::mark::DropDownFieldmark
+sw/source/core/inc/swcache.hxx:204
+ SwCacheAccess m_pObj SwCacheObj *
+ SwTextLine
+sw/source/core/inc/txmsrt.hxx:51
+ SwTOXSource pNd const SwContentNode *
+ SwTextNode
+sw/source/core/inc/viewimp.hxx:61
+ SwViewShellImp m_pShell SwViewShell *
+ SwFEShell
+sw/source/core/layout/paintfrm.cxx:273
+ (anonymous namespace)::SwPaintProperties pSGlobalShell SwViewShell *
+ SwWrtShell
+sw/source/core/text/inftxt.hxx:692
+ SwTextSlot pInf SwTextSizeInfo *
+ SwTextPaintInfo
+sw/source/core/text/itrtxt.hxx:35
+ SwTextIter m_pInf SwTextInfo *
+ SwTextSizeInfo
+sw/source/core/text/itrtxt.hxx:36
+ SwTextIter m_pCurr SwLineLayout *
+ SwLinePortion
+sw/source/core/text/porfld.hxx:242
+ SwFieldFormDropDownPortion m_pFieldMark sw::mark::IFieldmark *
+ sw::mark::DropDownFieldmark
+sw/source/core/text/porfld.hxx:260
+ SwFieldFormDatePortion m_pFieldMark sw::mark::IFieldmark *
+ sw::mark::DateFieldmark
+sw/source/core/undo/undraw.cxx:48
+ SwUndoGroupObjImpl pFormat SwDrawFrameFormat *
+ sw::SpzFrameFormat
+sw/source/core/unocore/unoobj2.cxx:682
+ SwXTextRange::Impl m_pTableOrSectionFormat const SwFrameFormat *
+ SwSectionFormat
+sw/source/core/unocore/unorefmk.cxx:592
+ SwXMeta::Impl m_pMeta sw::Meta *
+ sw::MetaField
+sw/source/core/unocore/unotbl.cxx:122
+ (anonymous namespace)::FindUnoInstanceHint m_pResult rtl::Reference<SwXTextTableRow>
+ com::sun::star::beans::XPropertySet
+sw/source/filter/html/swhtml.hxx:400
+ SwHTMLParser m_pActionViewShell SwViewShell *
+ SwEditShell
+sw/source/filter/html/swhtml.hxx:406
+ SwHTMLParser m_pMarquee rtl::Reference<SdrObject>
+ SdrTextObj
+sw/source/filter/ww8/ww8par.hxx:1269
+ SwWW8ImplReader m_pCurrentColl SwFormat *
+ SwTextFormatColl
+sw/source/filter/ww8/ww8par.hxx:1294
+ SwWW8ImplReader m_pNumFieldType SwFieldType *
+ SwSetExpFieldType
+sw/source/filter/xml/xmlexp.hxx:54
+ SwXMLExport m_pTableItemMapper std::unique_ptr<SvXMLExportItemMapper>
+ (anonymous namespace)::SwXMLTableItemMapper_Impl
+sw/source/filter/xml/xmlitem.hxx:37
+ SwXMLItemSetContext m_xBackground SvXMLImportContextRef
+ SwXMLBrushItemImportContext
+sw/source/filter/xml/XMLRedlineImportHelper.hxx:45
+ XMLRedlineImportHelper m_rImport SvXMLImport &
+ SwXMLImport
+sw/source/filter/xml/xmltbli.cxx:95
+ SwXMLTableCell_Impl m_xSubTable SvXMLImportContextRef
+ SwXMLTableContext
+sw/source/filter/xml/xmltbli.cxx:305
+ (anonymous namespace)::SwXMLTableCellContext_Impl m_xMyTable SvXMLImportContextRef
+ SwXMLTableContext
+sw/source/filter/xml/xmltbli.cxx:639
+ (anonymous namespace)::SwXMLTableColContext_Impl m_xMyTable SvXMLImportContextRef
+ SwXMLTableContext
+sw/source/filter/xml/xmltbli.cxx:723
+ (anonymous namespace)::SwXMLTableColsContext_Impl m_xMyTable SvXMLImportContextRef
+ SwXMLTableContext
+sw/source/filter/xml/xmltbli.cxx:767
+ (anonymous namespace)::SwXMLTableRowContext_Impl m_xMyTable SvXMLImportContextRef
+ SwXMLTableContext
+sw/source/filter/xml/xmltbli.cxx:878
+ (anonymous namespace)::SwXMLTableRowsContext_Impl m_xMyTable SvXMLImportContextRef
+ SwXMLTableContext
+sw/source/filter/xml/xmltbli.hxx:84
+ SwXMLTableContext m_xParentTable SvXMLImportContextRef
+ SwXMLTableContext
+sw/source/ui/dialog/swdlgfact.hxx:231
+ AbstractSwBreakDlg_Impl m_xDlg std::shared_ptr<weld::DialogController>
+ SwBreakDlg
+sw/source/ui/dialog/swdlgfact.hxx:562
+ AbstractInsTableDlg_Impl m_xDlg std::shared_ptr<weld::DialogController>
+ SwInsTableDlg
+sw/source/uibase/inc/fldmgr.hxx:103
+ SwFieldMgr m_pCurField SwField *
+ SwPageNumberField
+sw/source/uibase/inc/swdtflvr.hxx:81
+ SwTransferable m_xDdeLink tools::SvRef<sfx2::SvBaseLink>
+ (anonymous namespace)::SwTransferDdeLink
+sw/source/uibase/inc/swuiccoll.hxx:35
+ SwCondCollPage m_pFormat SwFormat *
+ SwConditionTextFormatColl
+sw/source/uibase/inc/unotools.hxx:48
+ SwOneExampleFrame m_xCursor css::uno::Reference<css::text::XTextCursor>
+ OTextCursorHelper
+sw/source/uibase/inc/unotxvw.hxx:73
+ SwXTextView mxViewSettings css::uno::Reference<css::beans::XPropertySet>
+ comphelper::ChainablePropertySet
+toolkit/source/awt/vclxwindow.cxx:133
+ VCLXWindowImpl mxWindowStyleSettings css::uno::Reference<css::awt::XStyleSettings>
+ toolkit::WindowStyleSettings
+toolkit/source/controls/tree/treedatamodel.cxx:81
+ (anonymous namespace)::MutableTreeDataModel mxRootNode Reference<XTreeNode>
+ (anonymous namespace)::MutableTreeNode
+unoidl/source/unoidl-read.cxx:151
+ (anonymous namespace)::Entity entity const rtl::Reference<unoidl::Entity>
+ unoidl::PublishableEntity
+vbahelper/source/vbahelper/vbashaperange.cxx:36
+ (anonymous namespace)::VbShapeRangeEnumHelper m_xParent uno::Reference<XCollection>
+ ScVbaShapeRange
+vbahelper/source/vbahelper/vbashapes.cxx:55
+ (anonymous namespace)::VbShapeEnumHelper m_xParent uno::Reference<msforms::XShapes>
+ ScVbaShapes
+vcl/inc/animate/AnimationRenderer.hxx:36
+ AnimationData mpRendererData void *
+ AnimationRenderer
+vcl/inc/animate/AnimationRenderer.hxx:48
+ AnimationRenderer mpRenderContext VclPtr<OutputDevice>
+ vcl::WindowOutputDevice
+vcl/inc/listbox.hxx:503
+ ImplListBoxFloatingWindow mpImplLB VclPtr<ImplListBox>
+ vcl::Window
+vcl/inc/qt5/QtAccessibleWidget.hxx:185
+ QtAccessibleWidget m_pObject QObject *
+ QWidget
+vcl/inc/qt5/QtClipboard.hxx:48
+ QtClipboard m_aContents css::uno::Reference<css::datatransfer::XTransferable>
+ QtClipboardTransferable
+vcl/inc/qt5/QtMenu.hxx:45
+ QtMenu mpVCLMenu VclPtr<Menu>
+ MenuBar
+vcl/inc/salusereventlist.hxx:41
+ SalUserEventList::SalUserEvent m_pFrame SalFrame *
+ SvpSalFrame
+vcl/inc/salusereventlist.hxx:42
+ SalUserEventList::SalUserEvent m_pData void *
+ ImplSVEvent
+vcl/inc/salvtables.hxx:45
+ SalInstanceBuilder m_aOwnedToplevel VclPtr<vcl::Window>
+ VclBuilderContainer
+vcl/inc/salvtables.hxx:414
+ SalInstanceLabel m_xLabel VclPtr<Control>
+ FixedText
+vcl/inc/salwtype.hxx:134
+ SalMenuEvent mpMenu void *
+ Menu
+vcl/inc/svdata.hxx:397
+ ImplSVData mpDefInst SalInstance *
+ QtInstance
+vcl/inc/svimpbox.hxx:185
+ SvImpLBox m_pView VclPtr<SvTreeListBox>
+ IconView
+vcl/inc/unx/cupsmgr.hxx:42
+ psp::CUPSManager m_pDests void *
+ cups_dest_s
+vcl/inc/unx/gendisp.hxx:31
+ SalGenericDisplay m_pCapture SalFrame *
+ GtkSalFrame
+vcl/inc/unx/gtk/gtksalmenu.hxx:55
+ GtkSalMenu mpVCLMenu VclPtr<Menu>
+ MenuBar
+vcl/inc/unx/i18n_cb.hxx:77
+ preedit_data_t pFrame SalFrame *
+ X11SalFrame
+vcl/inc/unx/salgdi.h:128
+ X11SalGraphics m_pFrame SalFrame *
+ SalGeometryProvider
+vcl/inc/unx/salgdi.h:129
+ X11SalGraphics m_pVDev SalVirtualDevice *
+ SalGeometryProvider
+vcl/inc/unx/salgdi.h:136
+ X11SalGraphics mxImpl std::unique_ptr<SalGraphicsImpl>
+ X11GraphicsImpl
+vcl/inc/window.h:230
+ WindowImpl mpSysObj SalObject *
+ QtObject
+vcl/inc/window.h:233
+ WindowImpl mpBorderWindow VclPtr<vcl::Window>
+ ImplBorderWindow
+vcl/inc/window.h:234
+ WindowImpl mpClientWindow VclPtr<vcl::Window>
+ WorkWindow
+vcl/inc/window.h:245
+ WindowImpl mpDlgCtrlDownWindow VclPtr<vcl::Window>
+ PushButton
+vcl/source/control/imivctl.hxx:130
+ SvxIconChoiceCtrl_Impl pView VclPtr<SvtIconChoiceCtrl>
+ vcl::Window
+vcl/source/window/impldockingwrapper.hxx:42
+ ImplDockingWindowWrapper mpDockingWindow VclPtr<vcl::Window>
+ DockingWindow
+vcl/source/window/impldockingwrapper.hxx:46
+ ImplDockingWindowWrapper mpOldBorderWin VclPtr<vcl::Window>
+ ImplBorderWindow
+vcl/source/window/menubarwindow.hxx:71
+ MenuBarWindow m_pMenu VclPtr<Menu>
+ MenuBar
+vcl/source/window/menufloatingwindow.hxx:38
+ MenuFloatingWindow pMenu VclPtr<Menu>
+ PopupMenu
+vcl/source/window/menuitemlist.hxx:38
+ MenuItemData pSubMenu VclPtr<Menu>
+ PopupMenu
+vcl/unx/generic/dtrans/X11_selection.hxx:221
+ x11::SelectionManager::DropTargetEntry m_pTarget DropTarget *
+ com::sun::star::datatransfer::dnd::XDropTarget
+vcl/unx/generic/gdi/cairo_xlib_cairo.hxx:40
+ cairo::X11SysData pDisplay void *
+ _XDisplay
+vcl/unx/generic/gdi/cairo_xlib_cairo.hxx:42
+ cairo::X11SysData pVisual void *
+ Visual
+vcl/unx/generic/gdi/cairo_xlib_cairo.hxx:49
+ cairo::X11Pixmap mpDisplay void *
+ _XDisplay
+writerfilter/source/dmapper/DomainMapper_Impl.hxx:529
+ writerfilter::dmapper::DomainMapper_Impl m_pLastSectionContext PropertyMapPtr
+ writerfilter::dmapper::SectionPropertyMap
+writerfilter/source/dmapper/NumberingManager.hxx:221
+ writerfilter::dmapper::ListsManager m_pCurrentDefinition class AbstractListDef::Pointer
+ writerfilter::dmapper::ListDef
+writerfilter/source/dmapper/StyleSheetTable.cxx:279
+ writerfilter::dmapper::StyleSheetTable_Impl m_pCurrentEntry StyleSheetEntryPtr
+ writerfilter::dmapper::TableStyleSheetEntry
+writerfilter/source/dmapper/TablePropertiesHandler.hxx:38
+ writerfilter::dmapper::TablePropertiesHandler m_pTableManager TableManager *
+ writerfilter::dmapper::DomainMapperTableManager
+writerfilter/source/ooxml/OOXMLFastContextHandler.hxx:365
+ writerfilter::ooxml::OOXMLFastContextHandlerTable mCurrentChild css::uno::Reference<css::xml::sax::XFastContextHandler>
+ writerfilter::ooxml::OOXMLFastContextHandler
+writerfilter/source/ooxml/OOXMLFastContextHandler.hxx:536
+ writerfilter::ooxml::OOXMLFastContextHandlerWrapper mxWrappedContext css::uno::Reference<css::xml::sax::XFastContextHandler>
+ writerfilter::ooxml::OOXMLFastContextHandler
+writerperfect/inc/DocumentHandler.hxx:47
+ writerperfect::DocumentHandler mxHandler css::uno::Reference<css::xml::sax::XDocumentHandler>
+ SvXMLImport
+xmloff/inc/XMLShapePropertySetContext.hxx:26
+ XMLShapePropertySetContext mxBulletStyle SvXMLImportContextRef
+ SvxXMLListStyleContext
+xmloff/source/draw/ximpshap.hxx:555
+ SdXMLFrameShapeContext mxImplContext SvXMLImportContextRef
+ SdXMLShapeContext
+xmloff/source/text/txtparaimphint.hxx:223
+ XMLDrawHint_Impl xContext SvXMLImportContextRef
+ SvXMLShapeContext
+xmloff/source/text/XMLTextFrameContext.hxx:38
+ XMLTextFrameContext m_xImplContext SvXMLImportContextRef
+ (anonymous namespace)::XMLTextFrameContext_Impl
+xmloff/source/transform/ControlOOoTContext.hxx:26
+ XMLControlOOoTransformerContext m_xAttrList css::uno::Reference<css::xml::sax::XAttributeList>
+ XMLMutableAttributeList
+xmloff/source/transform/FormPropOOoTContext.hxx:29
+ XMLFormPropOOoTransformerContext m_xAttrList css::uno::Reference<css::xml::sax::XAttributeList>
+ XMLMutableAttributeList
+xmloff/source/transform/FrameOASISTContext.hxx:26
+ XMLFrameOASISTransformerContext m_xAttrList css::uno::Reference<css::xml::sax::XAttributeList>
+ XMLMutableAttributeList
+xmloff/source/transform/MergeElemTContext.hxx:31
+ XMLMergeElemTransformerContext m_xAttrList css::uno::Reference<css::xml::sax::XAttributeList>
+ XMLMutableAttributeList
+xmloff/source/transform/PersAttrListTContext.hxx:29
+ XMLPersAttrListTContext m_xAttrList css::uno::Reference<css::xml::sax::XAttributeList>
+ XMLMutableAttributeList
+xmloff/source/transform/StyleOASISTContext.cxx:63
+ XMLPropertiesTContext_Impl m_xAttrList css::uno::Reference<css::xml::sax::XAttributeList>
+ XMLMutableAttributeList
+xmloff/source/transform/StyleOOoTContext.cxx:144
+ (anonymous namespace)::XMLTypedPropertiesOOoTContext_Impl m_xAttrList css::uno::Reference<css::xml::sax::XAttributeList>
+ XMLMutableAttributeList
+xmlscript/source/xmldlg_imexp/imp_share.hxx:589
+ xmlscript::ComboBoxElement _popup css::uno::Reference<css::xml::input::XElement>
+ xmlscript::MenuPopupElement
+xmlscript/source/xmldlg_imexp/imp_share.hxx:608
+ xmlscript::MenuListElement _popup css::uno::Reference<css::xml::input::XElement>
+ xmlscript::MenuPopupElement
+xmlscript/source/xmllib_imexp/imp_share.hxx:149
+ xmlscript::LibElementBase mxParent rtl::Reference<LibElementBase>
+ xmlscript::LibrariesElement
+xmlsecurity/inc/xsecctl.hxx:73
+ InternalSignatureInformation xReferenceResolvedListener css::uno::Reference<css::xml::crypto::sax::XReferenceResolvedListener>
+ SignatureVerifierImpl
+xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx:55
+ SecurityEnvironment_NssImpl m_xSigningCertificate css::uno::Reference<css::security::XCertificate>
+ X509Certificate_NssImpl
diff --git a/compilerplugins/clang/test/fieldcast.cxx b/compilerplugins/clang/test/fieldcast.cxx
new file mode 100644
index 000000000000..32792a0a570f
--- /dev/null
+++ b/compilerplugins/clang/test/fieldcast.cxx
@@ -0,0 +1,34 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <rtl/ustring.hxx>
+#include <rtl/ref.hxx>
+
+struct Foo
+{
+ virtual ~Foo();
+};
+struct Bar : public Foo
+{
+};
+
+class Test1
+{
+ // expected-error@+1 {{cast Bar [loplugin:fieldcast]}}
+ Foo* m_p;
+ void test1() { (void)dynamic_cast<Bar*>(m_p); }
+};
+
+class Test2
+{
+ // expected-error@+1 {{cast Bar [loplugin:fieldcast]}}
+ rtl::Reference<Foo> m_p;
+ void test1() { (void)dynamic_cast<Bar*>(m_p.get()); }
+};
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */