sc/inc/addincol.hxx           |    6 +-
 sc/inc/cellsuno.hxx           |   26 +++++-----
 sc/inc/chartlis.hxx           |   16 +++---
 sc/inc/colorscale.hxx         |   34 +++++++-------
 sc/inc/dapiuno.hxx            |    2 
 sc/inc/detfunc.hxx            |    8 +--
 sc/inc/docuno.hxx             |   12 ++---
 sc/inc/dpcache.hxx            |   34 +++++++-------
 sc/inc/dpdimsave.hxx          |   26 +++++-----
 sc/inc/dpitemdata.hxx         |   16 +++---
 sc/inc/dpobject.hxx           |   58 ++++++++++++------------
 sc/inc/dpsave.hxx             |   36 +++++++--------
 sc/inc/dptabdat.hxx           |    6 +-
 sc/inc/drwlayer.hxx           |   28 +++++------
 sc/inc/externalrefmgr.hxx     |   38 +++++++--------
 sc/inc/formulacell.hxx        |   68 ++++++++++++++--------------
 sc/inc/markarr.hxx            |    8 +--
 sc/inc/markdata.hxx           |   44 +++++++++---------
 sc/inc/miscuno.hxx            |    4 -
 sc/inc/nameuno.hxx            |    4 -
 sc/inc/olinetab.hxx           |   14 ++---
 sc/inc/scmatrix.hxx           |   26 +++++-----
 sc/inc/tokenarray.hxx         |   46 +++++++++----------
 sc/inc/validat.hxx            |   26 +++++-----
 sc/source/ui/inc/docsh.hxx    |  100 +++++++++++++++++++++---------------------
 sc/source/ui/inc/prevwsh.hxx  |    8 +--
 sc/source/ui/inc/tabvwsh.hxx  |   34 +++++++-------
 sc/source/ui/inc/viewdata.hxx |   48 ++++++++++----------
 28 files changed, 388 insertions(+), 388 deletions(-)

New commits:
commit a7094c815628c70ac0430cd2ddc21f13b0b316d2
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Mon Feb 26 15:36:48 2024 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Thu Mar 7 07:03:17 2024 +0100

    make more symbols private in calc
    
    Change-Id: Id36a104e9d016dfc72477000c3899cf8682ad102
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164007
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sc/inc/addincol.hxx b/sc/inc/addincol.hxx
index 67e24e2c16a6..cf2dde8e18c6 100644
--- a/sc/inc/addincol.hxx
+++ b/sc/inc/addincol.hxx
@@ -141,7 +141,7 @@ public:
     void    SetEnglishName( const OUString& rEnglishName );
 };
 
-class SC_DLLPUBLIC ScUnoAddInCollection
+class ScUnoAddInCollection
 {
 private:
     tools::Long                    nFuncCount;
@@ -187,9 +187,9 @@ public:
     static bool         FillFunctionDescFromData( const ScUnoAddInFuncData& 
rFuncData, ScFuncDesc& rDesc,
                                                   bool bEnglishFunctionNames );
                   /// leave rRetExcelName unchanged, if no matching name is 
found
-    bool                GetExcelName( const OUString& rCalcName, LanguageType 
eDestLang, OUString& rRetExcelName );
+    SC_DLLPUBLIC bool   GetExcelName( const OUString& rCalcName, LanguageType 
eDestLang, OUString& rRetExcelName );
                   /// leave rRetCalcName unchanged, if no matching name is 
found
-    bool                GetCalcName( const OUString& rExcelName, OUString& 
rRetCalcName );
+    SC_DLLPUBLIC bool   GetCalcName( const OUString& rExcelName, OUString& 
rRetCalcName );
 };
 
 class ScUnoAddInCall
diff --git a/sc/inc/cellsuno.hxx b/sc/inc/cellsuno.hxx
index e64c1065d5c7..9764f3947f56 100644
--- a/sc/inc/cellsuno.hxx
+++ b/sc/inc/cellsuno.hxx
@@ -154,7 +154,7 @@ namespace ooo::vba::excel {
     class ScVbaCellRangeAccess;  // Vba Helper class
 }
 
-class SC_DLLPUBLIC SAL_LOPLUGIN_ANNOTATE("crosscast") ScCellRangesBase :
+class SAL_DLLPUBLIC_RTTI SAL_LOPLUGIN_ANNOTATE("crosscast") ScCellRangesBase :
                          public cppu::WeakImplHelper<
                             css::beans::XPropertySet,
                              css::beans::XMultiPropertySet,
@@ -191,7 +191,7 @@ private:
     bool                    bGotDataChangedHint;
     XModifyListenerArr_Impl aValueListeners;
 
-    DECL_DLLPRIVATE_LINK( ValueListenerHdl, const SfxHint&, void );
+    DECL_LINK( ValueListenerHdl, const SfxHint&, void );
 
 private:
     void            PaintGridRanges_Impl();
@@ -201,7 +201,7 @@ private:
 
     const ScPatternAttr*    GetCurrentAttrsFlat();
     const ScPatternAttr*    GetCurrentAttrsDeep();
-    SfxItemSet*             GetCurrentDataSet(bool bNoDflt = false);
+    SC_DLLPUBLIC SfxItemSet* GetCurrentDataSet(bool bNoDflt = false);
     void                    ForgetMarkData();
     void                    ForgetCurrentAttrs();
 
@@ -216,15 +216,15 @@ protected:
     const ScMarkData*       GetMarkData();
 
     // GetItemPropertyMap for derived classes must contain all entries, 
including base class
-    virtual const SfxItemPropertyMap& GetItemPropertyMap();
+    SC_DLLPUBLIC virtual const SfxItemPropertyMap& GetItemPropertyMap();
     css::beans::PropertyState GetOnePropertyState(
                                 sal_uInt16 nItemWhich, const 
SfxItemPropertyMapEntry* pEntry );
     /// @throws css::uno::RuntimeException
-    virtual void            GetOnePropertyValue( const 
SfxItemPropertyMapEntry* pEntry,
+    SC_DLLPUBLIC virtual void GetOnePropertyValue( const 
SfxItemPropertyMapEntry* pEntry,
                                 css::uno::Any& );
     /// @throws css::lang::IllegalArgumentException
     /// @throws css::uno::RuntimeException
-    virtual void            SetOnePropertyValue( const 
SfxItemPropertyMapEntry* pEntry,
+    SC_DLLPUBLIC virtual void SetOnePropertyValue( const 
SfxItemPropertyMapEntry* pEntry,
                                                 const css::uno::Any& aValue );
 
 public:
@@ -232,7 +232,7 @@ public:
                             ScCellRangesBase(ScDocShell* pDocSh, ScRangeList 
aR);
     virtual                 ~ScCellRangesBase() override;
 
-    virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint 
) override;
+    SC_DLLPUBLIC virtual void Notify( SfxBroadcaster& rBC, const SfxHint& 
rHint ) override;
     virtual void            RefChanged();
 
                             // from derived classes and by getImplementation
@@ -455,7 +455,7 @@ public:
     virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() 
override;
 };
 
-class SC_DLLPUBLIC ScCellRangeObj : public ScCellRangesBase,
+class SAL_DLLPUBLIC_RTTI ScCellRangeObj : public ScCellRangesBase,
                        public css::sheet::XCellRangeAddressable,
                        public css::sheet::XSheetCellRange,
                        public css::sheet::XArrayFormulaRange,
@@ -496,7 +496,7 @@ protected:
                                 const formula::FormulaGrammar::Grammar 
eGrammar );
 
 public:
-                            ScCellRangeObj(ScDocShell* pDocSh, const ScRange& 
rR);
+    SC_DLLPUBLIC            ScCellRangeObj(ScDocShell* pDocSh, const ScRange& 
rR);
     virtual                 ~ScCellRangeObj() override;
 
                             // uses ObjectShell from document, if set (returns 
NULL otherwise)
@@ -628,7 +628,7 @@ public:
 
 //! really derive cell from range?
 
-class SC_DLLPUBLIC ScCellObj final : public ScCellRangeObj,
+class SAL_DLLPUBLIC_RTTI ScCellObj final : public ScCellRangeObj,
                     public css::text::XText,
                     public css::container::XEnumerationAccess,
                     public css::table::XCell2,
@@ -678,7 +678,7 @@ public:
                             // not meant for any other purpose.
     const ScAddress&        GetPosition() const { return aCellPos; }
 
-    void                    InputEnglishString( const OUString& rText );
+    SC_DLLPUBLIC void       InputEnglishString( const OUString& rText );
 
                             // XText
     virtual void SAL_CALL   insertTextContent( const css::uno::Reference< 
css::text::XTextRange >& xRange,
@@ -762,7 +762,7 @@ public:
     virtual sal_Int16 SAL_CALL resetActionLocks() override;
 };
 
-class SC_DLLPUBLIC ScTableSheetObj final : public ScCellRangeObj,
+class SAL_DLLPUBLIC_RTTI ScTableSheetObj final : public ScCellRangeObj,
                         public css::sheet::XSpreadsheet,
                         public css::container::XNamed,
                         public css::sheet::XSheetPageBreak,
@@ -866,7 +866,7 @@ public:
                             getScenarios() override;
 
                             // XSheetAnnotationsSupplier
-    virtual css::uno::Reference< css::sheet::XSheetAnnotations > SAL_CALL
+    SC_DLLPUBLIC virtual css::uno::Reference< css::sheet::XSheetAnnotations > 
SAL_CALL
                             getAnnotations() override;
 
                             // XDrawPageSupplier
diff --git a/sc/inc/chartlis.hxx b/sc/inc/chartlis.hxx
index 24368a30d8c0..aec202c1b18f 100644
--- a/sc/inc/chartlis.hxx
+++ b/sc/inc/chartlis.hxx
@@ -119,7 +119,7 @@ public:
     virtual void notify() = 0;
 };
 
-class SC_DLLPUBLIC ScChartListenerCollection final
+class ScChartListenerCollection final
 {
 public:
     typedef std::map<OUString, std::unique_ptr<ScChartListener>> ListenersType;
@@ -140,21 +140,21 @@ private:
     Idle            aIdle;
     ScDocument&     rDoc;
 
-                    DECL_DLLPRIVATE_LINK(TimerHdl, Timer *, void);
+    DECL_LINK(TimerHdl, Timer *, void);
 
     ScChartListenerCollection& operator=( const ScChartListenerCollection& ) = 
delete;
 
     void Init();
 
 public:
-    ScChartListenerCollection( ScDocument& rDoc );
+    SC_DLLPUBLIC ScChartListenerCollection( ScDocument& rDoc );
     ScChartListenerCollection( const ScChartListenerCollection& );
-    ~ScChartListenerCollection();
+    SC_DLLPUBLIC ~ScChartListenerCollection();
 
                     // only needed after copy-ctor, if newly added to doc
     void            StartAllListeners();
 
-    bool insert(ScChartListener* pListener);
+    SC_DLLPUBLIC bool insert(ScChartListener* pListener);
     ScChartListener* findByName(const OUString& rName);
     const ScChartListener* findByName(const OUString& rName) const;
     bool hasListeners() const;
@@ -183,7 +183,7 @@ public:
     void            SetDiffDirty( const ScChartListenerCollection&,
                         bool bSetChartRangeLists );
 
-    void            SetRangeDirty( const ScRange& rRange );     // for example 
rows/columns
+    SC_DLLPUBLIC void SetRangeDirty( const ScRange& rRange );     // for 
example rows/columns
 
     void            UpdateChartsContainingTab( SCTAB nTab );
 
@@ -197,7 +197,7 @@ public:
      * Note that the caller is responsible for managing the life-cycle of the
      * listener instance.
      */
-    void            StartListeningHiddenRange( const ScRange& rRange,
+    SC_DLLPUBLIC void StartListeningHiddenRange( const ScRange& rRange,
                                                ScChartHiddenRangeListener* 
pListener );
 
     /**
@@ -205,7 +205,7 @@ public:
      * list of hidden range listeners.  This does not delete the passed
      * listener instance.
      */
-    void            EndListeningHiddenRange( ScChartHiddenRangeListener* 
pListener );
+    SC_DLLPUBLIC void EndListeningHiddenRange( ScChartHiddenRangeListener* 
pListener );
 };
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx
index 6c1165670603..2bb2c8ea5f6a 100644
--- a/sc/inc/colorscale.hxx
+++ b/sc/inc/colorscale.hxx
@@ -244,7 +244,7 @@ protected:
 
 typedef std::vector<std::unique_ptr<ScColorScaleEntry, 
o3tl::default_delete<ScColorScaleEntry>>> ScColorScaleEntries;
 
-class SC_DLLPUBLIC ScColorScaleFormat final : public ScColorFormat
+class SAL_DLLPUBLIC_RTTI ScColorScaleFormat final : public ScColorFormat
 {
 private:
     ScColorScaleEntries maColorScales;
@@ -255,7 +255,7 @@ private:
     void calcMinMax(double& nMin, double& nMax) const;
     double CalcValue(double nMin, double nMax, const 
ScColorScaleEntries::const_iterator& rItr) const;
 public:
-    ScColorScaleFormat(ScDocument* pDoc);
+    SC_DLLPUBLIC ScColorScaleFormat(ScDocument* pDoc);
     ScColorScaleFormat(ScDocument* pDoc, const ScColorScaleFormat& rFormat);
     ScColorScaleFormat(const ScColorScaleFormat&) = delete;
     virtual ~ScColorScaleFormat() override;
@@ -265,8 +265,8 @@ public:
 
     virtual void SetParent(ScConditionalFormat* pParent) override;
 
-    std::optional<Color> GetColor(const ScAddress& rAddr) const;
-    void AddEntry(ScColorScaleEntry* pEntry);
+    SC_DLLPUBLIC std::optional<Color> GetColor(const ScAddress& rAddr) const;
+    SC_DLLPUBLIC void AddEntry(ScColorScaleEntry* pEntry);
 
     bool IsEqual(const ScFormatEntry& r, bool bIgnoreSrcPos) const override;
 
@@ -277,14 +277,14 @@ public:
 
     virtual Type GetType() const override;
     ScColorScaleEntries::iterator begin();
-    ScColorScaleEntries::const_iterator begin() const;
+    SC_DLLPUBLIC ScColorScaleEntries::const_iterator begin() const;
     ScColorScaleEntries::iterator end();
-    ScColorScaleEntries::const_iterator end() const;
+    SC_DLLPUBLIC ScColorScaleEntries::const_iterator end() const;
 
     ScColorScaleEntry* GetEntry(size_t nPos);
-    const ScColorScaleEntry* GetEntry(size_t nPos) const;
+    SC_DLLPUBLIC const ScColorScaleEntry* GetEntry(size_t nPos) const;
 
-    size_t size() const;
+    SC_DLLPUBLIC size_t size() const;
 
     /**
      * Makes sure that the maColorScales contain at least 2 entries.
@@ -356,20 +356,20 @@ struct ScIconSetFormatData
     ScIconSetFormatData& operator=(ScIconSetFormatData const&) = delete; 
//TODO?
 };
 
-class SC_DLLPUBLIC ScIconSetFormat final : public ScColorFormat
+class SAL_DLLPUBLIC_RTTI ScIconSetFormat final : public ScColorFormat
 {
 public:
-    ScIconSetFormat(ScDocument* pDoc);
+    SC_DLLPUBLIC ScIconSetFormat(ScDocument* pDoc);
     ScIconSetFormat(ScDocument* pDoc, const ScIconSetFormat& rFormat);
 
     virtual ScColorFormat* Clone(ScDocument* pDoc) const override;
 
     virtual void SetParent(ScConditionalFormat* pParent) override;
 
-    std::unique_ptr<ScIconSetInfo> GetIconSetInfo(const ScAddress& rAddr) 
const;
+    SC_DLLPUBLIC std::unique_ptr<ScIconSetInfo> GetIconSetInfo(const 
ScAddress& rAddr) const;
 
-    void SetIconSetData( ScIconSetFormatData* pData );
-    const ScIconSetFormatData* GetIconSetData() const;
+    SC_DLLPUBLIC void SetIconSetData( ScIconSetFormatData* pData );
+    SC_DLLPUBLIC const ScIconSetFormatData* GetIconSetData() const;
     ScIconSetFormatData* GetIconSetData();
 
     virtual void UpdateReference( sc::RefUpdateContext& rCxt ) override;
@@ -379,8 +379,8 @@ public:
 
     virtual Type GetType() const override;
 
-    static const ScIconSetMap g_IconSetMap[];
-    static const char* getIconSetName( ScIconSetType eType );
+    SC_DLLPUBLIC static const ScIconSetMap g_IconSetMap[];
+    SC_DLLPUBLIC static const char* getIconSetName( ScIconSetType eType );
     static sal_Int32 getIconSetElements( ScIconSetType eType );
     static OUString getIconName(ScIconSetType eType, sal_Int32 nIndex);
     static BitmapEx& getBitmap(sc::IconSetBitmapMap& rBitmapMap, ScIconSetType 
eType, sal_Int32 nIndex);
@@ -389,9 +389,9 @@ public:
     typedef ScIconSetFormatData::Entries_t::const_iterator const_iterator;
 
     iterator begin();
-    const_iterator begin() const;
+    SC_DLLPUBLIC const_iterator begin() const;
     iterator end();
-    const_iterator end() const;
+    SC_DLLPUBLIC const_iterator end() const;
 
     size_t size() const;
 
diff --git a/sc/inc/dapiuno.hxx b/sc/inc/dapiuno.hxx
index 88c24ce1a4dc..c3f504dfe894 100644
--- a/sc/inc/dapiuno.hxx
+++ b/sc/inc/dapiuno.hxx
@@ -127,7 +127,7 @@ public:
 };
 
 //  ScDataPilotDescriptorBase is never instantiated directly
-class SC_DLLPUBLIC ScDataPilotDescriptorBase : public cppu::WeakImplHelper<
+class SAL_DLLPUBLIC_RTTI ScDataPilotDescriptorBase : public 
cppu::WeakImplHelper<
                                     css::sheet::XDataPilotDescriptor,
                                     css::beans::XPropertySet,
                                     
css::sheet::XDataPilotDataLayoutFieldSupplier,
diff --git a/sc/inc/detfunc.hxx b/sc/inc/detfunc.hxx
index cb5758fd3f57..9f59c97fa059 100644
--- a/sc/inc/detfunc.hxx
+++ b/sc/inc/detfunc.hxx
@@ -45,7 +45,7 @@ enum ScDetectiveObjType
     SC_DETOBJ_RECTANGLE
 };
 
-class SC_DLLPUBLIC ScDetectiveFunc
+class ScDetectiveFunc
 {
     static Color     nArrowColor;
     static Color     nErrorColor;
@@ -125,9 +125,9 @@ public:
     bool        DeleteSucc( SCCOL nCol, SCROW nRow );
     bool        DeletePred( SCCOL nCol, SCROW nRow );
     bool        DeleteAll( ScDetectiveDelete eWhat );
-    bool        DeleteCirclesAt( SCCOL nCol, SCROW nRow );
+    SC_DLLPUBLIC bool DeleteCirclesAt( SCCOL nCol, SCROW nRow );
 
-    bool        MarkInvalid(bool& rOverflow);
+    SC_DLLPUBLIC bool MarkInvalid(bool& rOverflow);
 
     void        GetAllPreds(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW 
nRow2, ::std::vector<ScTokenRef>& rRefTokens);
     void        GetAllSuccs(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW 
nRow2, ::std::vector<ScTokenRef>& rRefTokens);
@@ -137,7 +137,7 @@ public:
 
     static bool IsNonAlienArrow( const SdrObject* pObject );
 
-    ScDetectiveObjType GetDetectiveObjectType( SdrObject* pObject, SCTAB 
nObjTab,
+    SC_DLLPUBLIC ScDetectiveObjType GetDetectiveObjectType( SdrObject* 
pObject, SCTAB nObjTab,
                                 ScAddress& rPosition, ScRange& rSource, bool& 
rRedLine );
     void        InsertObject( ScDetectiveObjType eType, const ScAddress& 
rPosition,
                                 const ScRange& rSource, bool bRedLine );
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index bc4608efbc3f..df37c0cef33e 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -72,7 +72,7 @@ class ScPrintUIOptions;
 class ScSheetSaveData;
 struct ScFormatSaveData;
 
-class SC_DLLPUBLIC ScModelObj : public SfxBaseModel,
+class SAL_DLLPUBLIC_RTTI ScModelObj : public SfxBaseModel,
                     public vcl::ITiledRenderable,
                     public css::sheet::XSpreadsheetDocument,
                     public css::document::XActionLockable,
@@ -138,10 +138,10 @@ public:
     /// create ScModelObj and set at pDocSh (SetBaseModel)
     static void             CreateAndSet(ScDocShell* pDocSh);
 
-    ScDocument*             GetDocument() const;
-    SfxObjectShell*         GetEmbeddedObject() const;
+    SC_DLLPUBLIC ScDocument*     GetDocument() const;
+    SC_DLLPUBLIC SfxObjectShell* GetEmbeddedObject() const;
 
-    void UpdateAllRowHeights();
+    SC_DLLPUBLIC void UpdateAllRowHeights();
 
     void                    BeforeXMLLoading();
     void                    AfterXMLLoading();
@@ -260,7 +260,7 @@ public:
                             /// XUnoTunnel
     virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< 
sal_Int8 >& aIdentifier ) override;
 
-    static const css::uno::Sequence<sal_Int8>& getUnoTunnelId();
+    SC_DLLPUBLIC static const css::uno::Sequence<sal_Int8>& getUnoTunnelId();
 
                             /// XTypeProvider
     virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override;
@@ -308,7 +308,7 @@ public:
                             tools::Long nTileHeight ) override;
 
     /// @see vcl::ITiledRenderable::getDocumentSize().
-    virtual Size getDocumentSize() final override;
+    SC_DLLPUBLIC virtual Size getDocumentSize() final override;
 
     /// @see vcl::ITiledRenderable::getDataArea().
     virtual Size getDataArea(long nPart) override;
diff --git a/sc/inc/dpcache.hxx b/sc/inc/dpcache.hxx
index e46e38f66a52..7db605b85800 100644
--- a/sc/inc/dpcache.hxx
+++ b/sc/inc/dpcache.hxx
@@ -44,7 +44,7 @@ enum class SvNumFormatType : sal_Int16;
  * This class represents the cached data part of the datapilot cache table
  * implementation.
  */
-class SC_DLLPUBLIC ScDPCache
+class ScDPCache
 {
 public:
     typedef std::unordered_set<OUString> StringSetType;
@@ -53,7 +53,7 @@ public:
     typedef o3tl::sorted_vector<ScDPObject*> ScDPObjectSet;
     typedef std::vector<SCROW> IndexArrayType;
 
-    struct SAL_DLLPRIVATE GroupItems
+    struct GroupItems
     {
         ScDPItemDataVec maItems;
         ScDPNumGroupInfo maInfo;
@@ -65,7 +65,7 @@ public:
         GroupItems(const ScDPNumGroupInfo& rInfo, sal_Int32 nGroupType);
     };
 
-    struct SAL_DLLPRIVATE Field
+    struct Field
     {
         /**
          * Optional items for grouped field.
@@ -134,23 +134,23 @@ public:
     rtl_uString* InternString( size_t nDim, const OUString& rStr );
     void AddReference(ScDPObject* pObj) const;
     void RemoveReference(ScDPObject* pObj) const;
-    const ScDPObjectSet& GetAllReferences() const;
+    SC_DLLPUBLIC const ScDPObjectSet& GetAllReferences() const;
 
     SCROW GetIdByItemData(tools::Long nDim, const ScDPItemData& rItem) const;
 
     static sal_uInt32 GetLocaleIndependentFormat( SvNumberFormatter& 
rFormatter, sal_uInt32 nNumFormat );
     static OUString GetLocaleIndependentFormattedNumberString( double fValue );
     static OUString GetLocaleIndependentFormattedString( double fValue, 
SvNumberFormatter& rFormatter, sal_uInt32 nNumFormat );
-    OUString GetFormattedString(tools::Long nDim, const ScDPItemData& rItem, 
bool bLocaleIndependent) const;
+    SC_DLLPUBLIC OUString GetFormattedString(tools::Long nDim, const 
ScDPItemData& rItem, bool bLocaleIndependent) const;
     SvNumberFormatter* GetNumberFormatter() const;
 
     tools::Long AppendGroupField();
     void ResetGroupItems(tools::Long nDim, const ScDPNumGroupInfo& rNumInfo, 
sal_Int32 nGroupType);
     SCROW SetGroupItem(tools::Long nDim, const ScDPItemData& rData);
-    void GetGroupDimMemberIds(tools::Long nDim, std::vector<SCROW>& rIds) 
const;
+    SC_DLLPUBLIC void GetGroupDimMemberIds(tools::Long nDim, 
std::vector<SCROW>& rIds) const;
     void ClearGroupFields();
     void ClearAllFields();
-    const ScDPNumGroupInfo* GetNumGroupInfo(tools::Long nDim) const;
+    SC_DLLPUBLIC const ScDPNumGroupInfo* GetNumGroupInfo(tools::Long nDim) 
const;
 
     /**
      * Return a group type identifier.  The values correspond with
@@ -160,15 +160,15 @@ public:
      *
      * @return group type identifier, or 0 on failure.
      */
-    sal_Int32 GetGroupType(tools::Long nDim) const;
+    SC_DLLPUBLIC sal_Int32 GetGroupType(tools::Long nDim) const;
 
-    SCCOL GetDimensionIndex(std::u16string_view sName) const;
+    SC_DLLPUBLIC SCCOL GetDimensionIndex(std::u16string_view sName) const;
     sal_uInt32 GetNumberFormat( tools::Long nDim ) const;
-    bool  IsDateDimension( tools::Long nDim ) const ;
+    SC_DLLPUBLIC bool IsDateDimension( tools::Long nDim ) const ;
     tools::Long GetDimMemberCount(tools::Long nDim) const;
 
-    const IndexArrayType* GetFieldIndexArray( size_t nDim ) const;
-    const ScDPItemDataVec& GetDimMemberValues( SCCOL nDim ) const;
+    SC_DLLPUBLIC const IndexArrayType* GetFieldIndexArray( size_t nDim ) const;
+    SC_DLLPUBLIC const ScDPItemDataVec& GetDimMemberValues( SCCOL nDim ) const;
     void InitFromDoc(ScDocument& rDoc, const ScRange& rRange);
     bool InitFromDataBase(DBConnector& rDB);
 
@@ -183,19 +183,19 @@ public:
      * sheet source data.  For any other source type, this should equal the
      * row count.
      */
-    SCROW GetDataSize() const;
+    SC_DLLPUBLIC SCROW GetDataSize() const;
     SCROW GetItemDataId( sal_uInt16 nDim, SCROW nRow, bool bRepeatIfEmpty ) 
const;
-    OUString GetDimensionName(std::vector<OUString>::size_type nDim) const;
+    SC_DLLPUBLIC OUString GetDimensionName(std::vector<OUString>::size_type 
nDim) const;
     bool IsRowEmpty(SCROW nRow) const;
     bool ValidQuery(SCROW nRow, const ScQueryParam& rQueryParam) const;
 
     ScDocument& GetDoc() const;
     tools::Long GetColumnCount() const;
 
-    const ScDPItemData* GetItemDataById( tools::Long nDim, SCROW nId ) const;
+    SC_DLLPUBLIC const ScDPItemData* GetItemDataById( tools::Long nDim, SCROW 
nId ) const;
 
-    size_t GetFieldCount() const;
-    size_t GetGroupFieldCount() const;
+    SC_DLLPUBLIC size_t GetFieldCount() const;
+    SC_DLLPUBLIC size_t GetGroupFieldCount() const;
 
     ScDPCache(const ScDPCache&) = delete;
     const ScDPCache& operator=(const ScDPCache&) = delete;
diff --git a/sc/inc/dpdimsave.hxx b/sc/inc/dpdimsave.hxx
index 400d53260939..95496783a157 100644
--- a/sc/inc/dpdimsave.hxx
+++ b/sc/inc/dpdimsave.hxx
@@ -87,7 +87,7 @@ typedef ::std::vector<ScDPSaveGroupItem> ScDPSaveGroupItemVec;
  * Represents a new group dimension whose dimension ID is higher than the
  * highest source dimension ID.
  */
-class SC_DLLPUBLIC ScDPSaveGroupDimension
+class ScDPSaveGroupDimension
 {
     OUString           aSourceDim;     ///< always the real source from the 
original data
     OUString           aGroupDimName;
@@ -96,14 +96,14 @@ class SC_DLLPUBLIC ScDPSaveGroupDimension
     sal_Int32               nDatePart;
 
 public:
-                ScDPSaveGroupDimension( OUString aSource, OUString aName );
+    SC_DLLPUBLIC ScDPSaveGroupDimension( OUString aSource, OUString aName );
                 ScDPSaveGroupDimension( OUString aSource, OUString aName, 
const ScDPNumGroupInfo& rDateInfo, sal_Int32 nPart );
 
     void    AddToData( ScDPGroupTableData& rData ) const;
     void AddToCache(ScDPCache& rCache) const;
-    void    SetDateInfo( const ScDPNumGroupInfo& rInfo, sal_Int32 nPart );
+    SC_DLLPUBLIC void SetDateInfo( const ScDPNumGroupInfo& rInfo, sal_Int32 
nPart );
 
-    void    AddGroupItem( const ScDPSaveGroupItem& rItem );
+    SC_DLLPUBLIC void AddGroupItem( const ScDPSaveGroupItem& rItem );
     const OUString& GetGroupDimName() const { return aGroupDimName; }
     const OUString& GetSourceDimName() const { return aSourceDim; }
 
@@ -118,8 +118,8 @@ public:
     bool    IsEmpty() const;
     bool HasOnlyHidden(const ScDPUniqueStringSet& rVisible);
 
-    tools::Long    GetGroupCount() const;
-    const ScDPSaveGroupItem& GetGroupByIndex( tools::Long nIndex ) const;
+    SC_DLLPUBLIC tools::Long GetGroupCount() const;
+    SC_DLLPUBLIC const ScDPSaveGroupItem& GetGroupByIndex( tools::Long nIndex 
) const;
 
     void    Rename( const OUString& rNewName );
 
@@ -160,7 +160,7 @@ public:
  * This class has to do with handling exclusively grouped dimensions?  TODO:
  * Find out what this class does and document it here.
  */
-class SC_DLLPUBLIC ScDPDimensionSaveData
+class ScDPDimensionSaveData
 {
 public:
             ScDPDimensionSaveData();
@@ -180,19 +180,19 @@ public:
         sal_Int32 nDatePart, const ScDPObject& rObject, bool bAllowSource,
         const ::std::vector<OUString>* pDeletedNames );
 
-    void    AddGroupDimension( const ScDPSaveGroupDimension& rGroupDim );
+    SC_DLLPUBLIC void AddGroupDimension( const ScDPSaveGroupDimension& 
rGroupDim );
     void    ReplaceGroupDimension( const ScDPSaveGroupDimension& rGroupDim );
     void    RemoveGroupDimension( const OUString& rGroupDimName );
 
-    void    AddNumGroupDimension( const ScDPSaveNumGroupDimension& rGroupDim );
+    SC_DLLPUBLIC void AddNumGroupDimension( const ScDPSaveNumGroupDimension& 
rGroupDim );
     void    ReplaceNumGroupDimension( const ScDPSaveNumGroupDimension& 
rGroupDim );
     void    RemoveNumGroupDimension( const OUString& rGroupDimName );
 
-    const ScDPSaveGroupDimension* GetGroupDimForBase( const OUString& 
rBaseDimName ) const;
-    const ScDPSaveGroupDimension* GetNamedGroupDim( const OUString& 
rGroupDimName ) const;
+    SC_DLLPUBLIC const ScDPSaveGroupDimension* GetGroupDimForBase( const 
OUString& rBaseDimName ) const;
+    SC_DLLPUBLIC const ScDPSaveGroupDimension* GetNamedGroupDim( const 
OUString& rGroupDimName ) const;
     const ScDPSaveGroupDimension* GetFirstNamedGroupDim( const OUString& 
rBaseDimName ) const;
     const ScDPSaveGroupDimension* GetNextNamedGroupDim( const OUString& 
rGroupDimName ) const;
-    const ScDPSaveNumGroupDimension* GetNumGroupDim( const OUString& 
rGroupDimName ) const;
+    SC_DLLPUBLIC const ScDPSaveNumGroupDimension* GetNumGroupDim( const 
OUString& rGroupDimName ) const;
 
     ScDPSaveGroupDimension* GetGroupDimAccForBase( const OUString& 
rBaseDimName );
     ScDPSaveGroupDimension* GetNamedGroupDimAcc( const OUString& rGroupDimName 
);
@@ -201,7 +201,7 @@ public:
 
     ScDPSaveNumGroupDimension* GetNumGroupDimAcc( const OUString& 
rGroupDimName );
 
-    bool    HasGroupDimensions() const;
+    SC_DLLPUBLIC bool HasGroupDimensions() const;
 
     sal_Int32 CollectDateParts( const OUString& rBaseDimName ) const;
 
diff --git a/sc/inc/dpitemdata.hxx b/sc/inc/dpitemdata.hxx
index 8f76264438ff..c09da5fed5b5 100644
--- a/sc/inc/dpitemdata.hxx
+++ b/sc/inc/dpitemdata.hxx
@@ -25,15 +25,15 @@
  * <p>Do make sure that an item with an interned string won't persist after
  * the pivot cache has been destroyed or reloaded.</p>
  */
-class SC_DLLPUBLIC ScDPItemData
+class ScDPItemData
 {
     friend class ScDPCache;
 
 public:
     enum Type { GroupValue = 0, RangeStart = 1, Value = 2, String = 3, Error = 
4, Empty = 5 };
 
-    static const sal_Int32 DateFirst;
-    static const sal_Int32 DateLast;
+    SC_DLLPUBLIC static const sal_Int32 DateFirst;
+    SC_DLLPUBLIC static const sal_Int32 DateLast;
 
     struct GroupValueAttr
     {
@@ -81,12 +81,12 @@ public:
 
     ScDPItemData& operator= (const ScDPItemData& r);
 
-    bool IsEmpty() const;
+    SC_DLLPUBLIC bool IsEmpty() const;
     bool IsValue() const;
-    OUString GetString() const;
-    double GetValue() const;
-    GroupValueAttr GetGroupValue() const;
-    bool HasStringData() const ;
+    SC_DLLPUBLIC OUString GetString() const;
+    SC_DLLPUBLIC double GetValue() const;
+    SC_DLLPUBLIC GroupValueAttr GetGroupValue() const;
+    SC_DLLPUBLIC bool HasStringData() const ;
 
     ScDPValue::Type GetCellType() const;
 
diff --git a/sc/inc/dpobject.hxx b/sc/inc/dpobject.hxx
index 0e4cf882b529..bb608197c7bb 100644
--- a/sc/inc/dpobject.hxx
+++ b/sc/inc/dpobject.hxx
@@ -80,7 +80,7 @@ struct ScDPServiceDesc
     bool operator== ( const ScDPServiceDesc& rOther ) const;
 };
 
-class SC_DLLPUBLIC ScDPObject
+class ScDPObject
 {
 private:
     ScDocument*             pDoc;
@@ -107,18 +107,18 @@ private:
     bool                    bSettingsChanged:1;
     bool                    mbEnableGetPivotData:1;
 
-    SAL_DLLPRIVATE ScDPTableData*    GetTableData();
-    SAL_DLLPRIVATE void              CreateObjects();
-    SAL_DLLPRIVATE void              CreateOutput();
-    SAL_DLLPRIVATE void ClearSource();
-    SAL_DLLPRIVATE void FillLabelDataForDimension(
+    ScDPTableData*    GetTableData();
+    void              CreateObjects();
+    void              CreateOutput();
+    void ClearSource();
+    void FillLabelDataForDimension(
         const css::uno::Reference< css::container::XIndexAccess>& xDims,
         sal_Int32 nDim, ScDPLabelData& rLabelData);
 
 public:
-    ScDPObject(ScDocument* pD);
+    SC_DLLPUBLIC ScDPObject(ScDocument* pD);
     ScDPObject(const ScDPObject& r);
-    ~ScDPObject();
+    SC_DLLPUBLIC ~ScDPObject();
 
     ScDPObject& operator= (const ScDPObject& r);
 
@@ -129,24 +129,24 @@ public:
     void                InvalidateData();
     void Clear();
     void ClearTableData();
-    void ReloadGroupTableData();
+    SC_DLLPUBLIC void ReloadGroupTableData();
 
-    void                Output( const ScAddress& rPos );
+    SC_DLLPUBLIC void   Output( const ScAddress& rPos );
     ScRange             GetNewOutputRange( bool& rOverflow );
 
-    ScRange GetOutputRangeByType( sal_Int32 nType );
-    ScRange GetOutputRangeByType( sal_Int32 nType ) const;
+    SC_DLLPUBLIC ScRange GetOutputRangeByType( sal_Int32 nType );
+    SC_DLLPUBLIC ScRange GetOutputRangeByType( sal_Int32 nType ) const;
 
-    void                SetSaveData(const ScDPSaveData& rData);
+    SC_DLLPUBLIC void SetSaveData(const ScDPSaveData& rData);
     ScDPSaveData*       GetSaveData() const     { return pSaveData.get(); }
 
-    void                SetOutRange(const ScRange& rRange);
-    const ScRange&      GetOutRange() const;
+    SC_DLLPUBLIC void SetOutRange(const ScRange& rRange);
+    SC_DLLPUBLIC const ScRange& GetOutRange() const;
 
-    void                SetHeaderLayout(bool bUseGrid);
+    SC_DLLPUBLIC void   SetHeaderLayout(bool bUseGrid);
     bool                GetHeaderLayout() const { return mbHeaderLayout;}
 
-    void                SetSheetDesc(const ScSheetSourceDesc& rDesc);
+    SC_DLLPUBLIC void   SetSheetDesc(const ScSheetSourceDesc& rDesc);
     void                SetImportDesc(const ScImportSourceDesc& rDesc);
     void                SetServiceData(const ScDPServiceDesc& rDesc);
 
@@ -157,13 +157,13 @@ public:
     const ScImportSourceDesc* GetImportSourceDesc() const   { return 
pImpDesc.get(); }
     const ScDPServiceDesc* GetDPServiceDesc() const { return pServDesc.get(); }
 
-    css::uno::Reference<css::sheet::XDimensionsSupplier> const & GetSource();
+    SC_DLLPUBLIC css::uno::Reference<css::sheet::XDimensionsSupplier> const & 
GetSource();
 
     bool                IsSheetData() const;
     bool                IsImportData() const { return(pImpDesc != nullptr); }
     bool                IsServiceData() const { return(pServDesc != nullptr); }
 
-    void SetName(const OUString& rNew);
+    SC_DLLPUBLIC void SetName(const OUString& rNew);
     const OUString& GetName() const { return aTableName; }
     void SetTag(const OUString& rNew);
     const OUString& GetTag() const { return aTableTag; }
@@ -176,17 +176,17 @@ public:
     bool                IsDataDescriptionCell(const ScAddress& rPos);
 
     bool                IsDimNameInUse(std::u16string_view rName) const;
-    OUString GetDimName( tools::Long nDim, bool& rIsDataLayout, sal_Int32* 
pFlags = nullptr );
-    bool                IsDuplicated( tools::Long nDim );
-    tools::Long                GetDimCount();
+    SC_DLLPUBLIC OUString GetDimName( tools::Long nDim, bool& rIsDataLayout, 
sal_Int32* pFlags = nullptr );
+    SC_DLLPUBLIC bool   IsDuplicated( tools::Long nDim );
+    SC_DLLPUBLIC tools::Long GetDimCount();
     void                GetHeaderPositionData(const ScAddress& rPos, 
css::sheet::DataPilotTableHeaderData& rData);
-    tools::Long                GetHeaderDim( const ScAddress& rPos, 
css::sheet::DataPilotFieldOrientation& rOrient );
+    SC_DLLPUBLIC tools::Long GetHeaderDim( const ScAddress& rPos, 
css::sheet::DataPilotFieldOrientation& rOrient );
     bool                GetHeaderDrag( const ScAddress& rPos, bool bMouseLeft, 
bool bMouseTop,
                                        tools::Long nDragDim,
                                        tools::Rectangle& rPosRect, 
css::sheet::DataPilotFieldOrientation& rOrient, tools::Long& rDimPos );
     bool                IsFilterButton( const ScAddress& rPos );
 
-    OUString            GetFormattedString( std::u16string_view rDimName, 
const double fValue );
+    SC_DLLPUBLIC OUString GetFormattedString( std::u16string_view rDimName, 
const double fValue );
 
     double GetPivotData(
         const OUString& rDataFieldName,
@@ -212,13 +212,13 @@ public:
     bool                GetHierarchiesNA( sal_Int32 nDim, css::uno::Reference< 
css::container::XNameAccess >& xHiers );
     void                GetHierarchies( sal_Int32 nDim, css::uno::Sequence< 
OUString >& rHiers );
 
-    sal_Int32           GetUsedHierarchy( sal_Int32 nDim );
+    SC_DLLPUBLIC sal_Int32 GetUsedHierarchy( sal_Int32 nDim );
 
     bool                GetMembersNA( sal_Int32 nDim, css::uno::Reference< 
css::sheet::XMembersAccess >& xMembers );
     bool                GetMembersNA( sal_Int32 nDim, sal_Int32 nHier, 
css::uno::Reference< css::sheet::XMembersAccess >& xMembers );
 
     bool                GetMemberNames( sal_Int32 nDim, css::uno::Sequence< 
OUString >& rNames );
-    bool                GetMembers( sal_Int32 nDim, sal_Int32 nHier, 
::std::vector<ScDPLabelData::Member>& rMembers );
+    SC_DLLPUBLIC bool   GetMembers( sal_Int32 nDim, sal_Int32 nHier, 
::std::vector<ScDPLabelData::Member>& rMembers );
 
     void                UpdateReference( UpdateRefMode eUpdateRefMode,
                                          const ScRange& r, SCCOL nDx, SCROW 
nDy, SCTAB nDz );
@@ -238,13 +238,13 @@ public:
     // (button attribute must be present)
     void                RefreshAfterLoad();
 
-    void                BuildAllDimensionMembers();
+    SC_DLLPUBLIC void BuildAllDimensionMembers();
 
     /**
      * Remove in the save data entries for members that don't exist anymore.
      * This is called during pivot table refresh.
      */
-    bool SyncAllDimensionMembers();
+    SC_DLLPUBLIC bool SyncAllDimensionMembers();
 
     static bool         HasRegisteredSources();
     static std::vector<OUString> GetRegisteredSources();
@@ -260,7 +260,7 @@ public:
         const ScPivotFieldVector* pRefRowFields = nullptr,
         const ScPivotFieldVector* pRefPageFields = nullptr );
 
-    static bool         IsOrientationAllowed( 
css::sheet::DataPilotFieldOrientation nOrient, sal_Int32 nDimFlags );
+    SC_DLLPUBLIC static bool IsOrientationAllowed( 
css::sheet::DataPilotFieldOrientation nOrient, sal_Int32 nDimFlags );
 
     void PutInteropGrabBag(std::map<OUString, css::uno::Any>&& val)
     {
diff --git a/sc/inc/dpsave.hxx b/sc/inc/dpsave.hxx
index f5d50db97dbb..70937b48a57f 100644
--- a/sc/inc/dpsave.hxx
+++ b/sc/inc/dpsave.hxx
@@ -90,7 +90,7 @@ public:
 #endif
 };
 
-class SC_DLLPUBLIC ScDPSaveDimension
+class ScDPSaveDimension
 {
 private:
     OUString aName;
@@ -144,16 +144,16 @@ public:
 
     void SetName( const OUString& rNew ); // used if the source dim was 
renamed (groups)
 
-    void SetOrientation(css::sheet::DataPilotFieldOrientation nNew);
-    void SetSubTotals(std::vector<ScGeneralFunction> && rFuncs);
+    SC_DLLPUBLIC void SetOrientation(css::sheet::DataPilotFieldOrientation 
nNew);
+    SC_DLLPUBLIC void SetSubTotals(std::vector<ScGeneralFunction> && rFuncs);
     tools::Long GetSubTotalsCount() const
         { return maSubTotalFuncs.size(); }
 
     ScGeneralFunction GetSubTotalFunc(tools::Long nIndex) const
         { return maSubTotalFuncs[nIndex]; }
 
-    bool HasShowEmpty() const;
-    void SetShowEmpty(bool bSet);
+    SC_DLLPUBLIC bool HasShowEmpty() const;
+    SC_DLLPUBLIC void SetShowEmpty(bool bSet);
     bool GetShowEmpty() const
         { return bool(nShowEmptyMode); }
 
@@ -161,7 +161,7 @@ public:
     bool GetRepeatItemLabels() const
         { return bRepeatItemLabels; }
 
-    void SetFunction(ScGeneralFunction nNew);
+    SC_DLLPUBLIC void SetFunction(ScGeneralFunction nNew);
     ScGeneralFunction GetFunction() const
         { return nFunction; }
 
@@ -169,11 +169,11 @@ public:
     tools::Long GetUsedHierarchy() const
         { return nUsedHierarchy; }
 
-    void SetLayoutName(const OUString& rName);
-    const std::optional<OUString> & GetLayoutName() const;
+    SC_DLLPUBLIC void SetLayoutName(const OUString& rName);
+    SC_DLLPUBLIC const std::optional<OUString> & GetLayoutName() const;
     void RemoveLayoutName();
-    void SetSubtotalName(const OUString& rName);
-    const std::optional<OUString> & GetSubtotalName() const;
+    SC_DLLPUBLIC void SetSubtotalName(const OUString& rName);
+    SC_DLLPUBLIC const std::optional<OUString> & GetSubtotalName() const;
     void RemoveSubtotalName();
 
     bool IsMemberNameInUse(const OUString& rName) const;
@@ -181,28 +181,28 @@ public:
     const css::sheet::DataPilotFieldReference* GetReferenceValue() const
         { return pReferenceValue.get(); }
 
-    void SetReferenceValue(const css::sheet::DataPilotFieldReference* pNew);
+    SC_DLLPUBLIC void SetReferenceValue(const 
css::sheet::DataPilotFieldReference* pNew);
 
     const css::sheet::DataPilotFieldSortInfo* GetSortInfo() const
         { return pSortInfo.get(); }
 
-    void SetSortInfo(const css::sheet::DataPilotFieldSortInfo* pNew);
+    SC_DLLPUBLIC void SetSortInfo(const css::sheet::DataPilotFieldSortInfo* 
pNew);
     const css::sheet::DataPilotFieldAutoShowInfo* GetAutoShowInfo() const
         { return pAutoShowInfo.get(); }
 
-    void SetAutoShowInfo(const css::sheet::DataPilotFieldAutoShowInfo* pNew);
+    SC_DLLPUBLIC void SetAutoShowInfo(const 
css::sheet::DataPilotFieldAutoShowInfo* pNew);
     const css::sheet::DataPilotFieldLayoutInfo* GetLayoutInfo() const
         { return pLayoutInfo.get(); }
 
-    void SetLayoutInfo(const css::sheet::DataPilotFieldLayoutInfo* pNew);
+    SC_DLLPUBLIC void SetLayoutInfo(const 
css::sheet::DataPilotFieldLayoutInfo* pNew);
 
-    void SetCurrentPage( const OUString* pPage ); // NULL = no selection (all)
+    SC_DLLPUBLIC void SetCurrentPage( const OUString* pPage ); // NULL = no 
selection (all)
     OUString GetCurrentPage() const; // only for ODF compatibility
 
     css::sheet::DataPilotFieldOrientation GetOrientation() const
         { return nOrientation; }
 
-    ScDPSaveMember* GetExistingMemberByName(const OUString& rName);
+    SC_DLLPUBLIC ScDPSaveMember* GetExistingMemberByName(const OUString& 
rName);
 
     /**
      * Get a member object by its name.  If one doesn't exist, create a new
@@ -213,7 +213,7 @@ public:
      *
      * @return pointer to the member object.
      */
-    ScDPSaveMember* GetMemberByName(const OUString& rName);
+    SC_DLLPUBLIC ScDPSaveMember* GetMemberByName(const OUString& rName);
 
     void SetMemberPosition( const OUString& rName, sal_Int32 nNewPos );
 
@@ -221,7 +221,7 @@ public:
 
     void UpdateMemberVisibility(const std::unordered_map< OUString, bool>& 
rData);
 
-    bool HasInvisibleMember() const;
+    SC_DLLPUBLIC bool HasInvisibleMember() const;
 
     void RemoveObsoleteMembers(const MemberSetType& rMembers);
 
diff --git a/sc/inc/dptabdat.hxx b/sc/inc/dptabdat.hxx
index 4f1a46379584..74830406aa31 100644
--- a/sc/inc/dptabdat.hxx
+++ b/sc/inc/dptabdat.hxx
@@ -53,7 +53,7 @@ class ScDocument;
  * Base class that abstracts different data source types of a datapilot
  * table.
  */
-class SC_DLLPUBLIC ScDPTableData
+class SAL_DLLPUBLIC_RTTI ScDPTableData
 {
     //  cached data for GetDatePart
     tools::Long    nLastDateVal;
@@ -66,7 +66,7 @@ public:
     /** This structure stores dimension information used when calculating
         results.  These data are read only during result calculation, so it
         should be passed as a const instance. */
-    struct SAL_DLLPRIVATE CalcInfo
+    struct CalcInfo
     {
         ::std::vector<sal_Int32>        aColLevelDims;
         ::std::vector<ScDPDimension*>   aColDims;
@@ -128,7 +128,7 @@ public:
 
     virtual sal_Int32               GetMembersCount( sal_Int32 nDim );
     const ScDPItemData*   GetMemberByIndex( sal_Int32 nDim, sal_Int32 nIndex );
-    virtual const ScDPItemData*   GetMemberById( sal_Int32 nDim, sal_Int32 
nId);
+    SC_DLLPUBLIC virtual const ScDPItemData*   GetMemberById( sal_Int32 nDim, 
sal_Int32 nId);
     virtual sal_Int32                GetSourceDim( sal_Int32 nDim );
     virtual sal_Int32                Compare( sal_Int32 nDim, sal_Int32 
nDataId1, sal_Int32 nDataId2);
 
diff --git a/sc/inc/drwlayer.hxx b/sc/inc/drwlayer.hxx
index 6bad650fd445..bad1b35a3657 100644
--- a/sc/inc/drwlayer.hxx
+++ b/sc/inc/drwlayer.hxx
@@ -94,7 +94,7 @@ enum class ScObjectHandling
     MirrorRTLMode // used for switch between RTL and LTR by 
.uno:SheetRightToLeft
 };
 
-class SC_DLLPUBLIC ScDrawLayer final : public FmFormModel
+class SAL_DLLPUBLIC_RTTI ScDrawLayer final : public FmFormModel
 {
 private:
     OUString        aName;
@@ -146,11 +146,11 @@ public:
     void            MoveArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1, SCCOL 
nCol2,SCROW nRow2,
                                 SCCOL nDx,SCROW nDy, bool bInsDel, bool 
bUpdateNoteCaptionPos );
     void InitializeCellAnchoredObj(SdrObject* pObj, ScDrawObjData& rData);
-    void            RecalcPos( SdrObject* pObj, ScDrawObjData& rData, bool 
bNegativePage, bool bUpdateNoteCaptionPos );
+    SC_DLLPUBLIC void RecalcPos( SdrObject* pObj, ScDrawObjData& rData, bool 
bNegativePage, bool bUpdateNoteCaptionPos );
 
-    bool            HasObjectsInRows( SCTAB nTab, SCROW nStartRow, SCROW 
nEndRow );
+    SC_DLLPUBLIC bool HasObjectsInRows( SCTAB nTab, SCROW nStartRow, SCROW 
nEndRow );
 
-    void            DeleteObjectsInArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1,
+    SC_DLLPUBLIC void DeleteObjectsInArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1,
                                             SCCOL nCol2,SCROW nRow2, bool 
bAnchored = false );
     void            DeleteObjectsInSelection( const ScMarkData& rMark );
 
@@ -182,9 +182,9 @@ public:
     OUString        GetNewGraphicName( tools::Long* pnCounter = nullptr ) 
const;
     void            EnsureGraphicNames();
 
-    static bool IsCellAnchored( const SdrObject& rObj );
-    static bool IsResizeWithCell( const SdrObject& rObj );
-    static void             SetPageAnchored( SdrObject& );
+    SC_DLLPUBLIC static bool IsCellAnchored( const SdrObject& rObj );
+    SC_DLLPUBLIC static bool IsResizeWithCell( const SdrObject& rObj );
+    SC_DLLPUBLIC static void SetPageAnchored( SdrObject& );
     static void             SetCellAnchored( SdrObject&, const ScDrawObjData 
&rAnchor );
     static void             SetNonRotatedAnchor( SdrObject&, const 
ScDrawObjData &rAnchor );
 
@@ -196,18 +196,18 @@ public:
         SCTAB nTab,
         bool bHiddenAsZero = true);
 
-    static void             SetCellAnchoredFromPosition( SdrObject &rObj, 
const ScDocument &rDoc, SCTAB nTab, bool bResizeWithCell );
+    SC_DLLPUBLIC static void SetCellAnchoredFromPosition( SdrObject &rObj, 
const ScDocument &rDoc, SCTAB nTab, bool bResizeWithCell );
     static void             UpdateCellAnchorFromPositionEnd( const SdrObject 
&rObj, ScDrawObjData &rAnchor, const ScDocument &rDoc, SCTAB nTab, bool 
bUseLogicRect = true );
-    static ScAnchorType     GetAnchorType( const SdrObject& );
+    SC_DLLPUBLIC static ScAnchorType GetAnchorType( const SdrObject& );
     std::vector<SdrObject*> GetObjectsAnchoredToRows(SCTAB nTab, SCROW 
nStartRow, SCROW nEndRow);
-    std::map<SCROW, std::vector<SdrObject*>> GetObjectsAnchoredToRange(SCTAB 
nTab, SCCOL nCol, SCROW nStartRow, SCROW nEndRow);
+    SC_DLLPUBLIC std::map<SCROW, std::vector<SdrObject*>> 
GetObjectsAnchoredToRange(SCTAB nTab, SCCOL nCol, SCROW nStartRow, SCROW 
nEndRow);
     bool HasObjectsAnchoredInRange(const ScRange& rRange);
     std::vector<SdrObject*> GetObjectsAnchoredToCols(SCTAB nTab, SCCOL 
nStartCol, SCCOL nEndCol);
     void MoveObject(SdrObject* pObj, const ScAddress& rNewPosition);
 
     // positions for detective lines
-    static ScDrawObjData* GetObjData( SdrObject* pObj, bool bCreate=false );
-    static ScDrawObjData* GetNonRotatedObjData( SdrObject* pObj, bool 
bCreate=false );
+    SC_DLLPUBLIC static ScDrawObjData* GetObjData( SdrObject* pObj, bool 
bCreate=false );
+    SC_DLLPUBLIC static ScDrawObjData* GetNonRotatedObjData( SdrObject* pObj, 
bool bCreate=false );
 
     // The sheet information in ScDrawObjData isn't updated when sheets are 
inserted/deleted.
     // Use this method to get an object with positions on the specified sheet 
(should be the
@@ -215,13 +215,13 @@ public:
     static ScDrawObjData* GetObjDataTab( SdrObject* pObj, SCTAB nTab );
 
     /** Returns true, if the passed object is the caption of a cell note. */
-    static bool IsNoteCaption(const ScDrawObjData* pData);
+    SC_DLLPUBLIC static bool IsNoteCaption(const ScDrawObjData* pData);
     static bool IsNoteCaption(SdrObject* pObj) { return 
IsNoteCaption(GetObjData(pObj)); }
 
     /** Returns the object data, if the passed object is a cell note caption. 
*/
     static ScDrawObjData* GetNoteCaptionData( SdrObject* pObj, SCTAB nTab );
 
-    static ScMacroInfo* GetMacroInfo( SdrObject* pObj, bool bCreate = false );
+    SC_DLLPUBLIC static ScMacroInfo* GetMacroInfo( SdrObject* pObj, bool 
bCreate = false );
 
 private:
     static SfxObjectShell* pGlobalDrawPersist;          // for AllocModel
diff --git a/sc/inc/externalrefmgr.hxx b/sc/inc/externalrefmgr.hxx
index 238c4a1d0f57..82441073cfd0 100644
--- a/sc/inc/externalrefmgr.hxx
+++ b/sc/inc/externalrefmgr.hxx
@@ -290,7 +290,7 @@ private:
     void addCacheDocToReferenced( sal_uInt16 nFileId );
 public:
 
-    ScExternalRefCache::TableTypeRef getCacheTable(sal_uInt16 nFileId, size_t 
nTabIndex) const;
+    SC_DLLPUBLIC ScExternalRefCache::TableTypeRef getCacheTable(sal_uInt16 
nFileId, size_t nTabIndex) const;
     ScExternalRefCache::TableTypeRef getCacheTable(sal_uInt16 nFileId, const 
OUString& rTabName, bool bCreateNew,
             size_t* pnIndex, const OUString* pExtUrl);
 
@@ -369,7 +369,7 @@ private:
     const ScDocument& mrDoc;
 };
 
-class SC_DLLPUBLIC ScExternalRefManager final : public 
formula::ExternalReferenceHelper, public SfxListener
+class SAL_DLLPUBLIC_RTTI ScExternalRefManager final : public 
formula::ExternalReferenceHelper, public SfxListener
 {
 public:
 
@@ -383,7 +383,7 @@ public:
      * link to a certain external file is updated, the notify() method gets
      * called.
      */
-    class SAL_DLLPRIVATE LinkListener
+    class LinkListener
     {
     public:
         LinkListener();
@@ -426,7 +426,7 @@ private:
 
 public:
     /** Source document meta-data container. */
-    struct SAL_DLLPRIVATE SrcFileData
+    struct SrcFileData
     {
         OUString maFileName;      /// original file name as loaded from the 
file.
         OUString maRealFileName;  /// file name created from the relative name.
@@ -453,7 +453,7 @@ public:
      *
      * @return shared_ptr to the cache table instance
      */
-    ScExternalRefCache::TableTypeRef getCacheTable(sal_uInt16 nFileId, size_t 
nTabIndex) const;
+    SC_DLLPUBLIC ScExternalRefCache::TableTypeRef getCacheTable(sal_uInt16 
nFileId, size_t nTabIndex) const;
 
     /**
      * Get a cache table instance for specified file and table name.  If the
@@ -479,7 +479,7 @@ public:
      *
      * @return shared_ptr to the cache table instance
      */
-    ScExternalRefCache::TableTypeRef getCacheTable(sal_uInt16 nFileId, const 
OUString& rTabName, bool bCreateNew,
+    SC_DLLPUBLIC ScExternalRefCache::TableTypeRef getCacheTable(sal_uInt16 
nFileId, const OUString& rTabName, bool bCreateNew,
             size_t* pnIndex = nullptr, const OUString* pExtUrl = nullptr);
 
     /** Returns a vector containing all (real) table names and cache tables of
@@ -488,7 +488,7 @@ public:
         The index in the returned vector corresponds to the table index used to
         access the cache table, e.g. in getCacheTable().
      */
-    void getAllCachedTableNames(sal_uInt16 nFileId, ::std::vector<OUString>& 
rTabNames) const;
+    SC_DLLPUBLIC void getAllCachedTableNames(sal_uInt16 nFileId, 
::std::vector<OUString>& rTabNames) const;
 
     /**
      * Get the span (distance+sign(distance)) of two sheets of a specified
@@ -539,7 +539,7 @@ public:
      */
     bool isInReferenceMarking() const   { return mbInReferenceMarking; }
 
-    void storeRangeNameTokens(sal_uInt16 nFileId, const OUString& rName, const 
ScTokenArray& rArray);
+    SC_DLLPUBLIC void storeRangeNameTokens(sal_uInt16 nFileId, const OUString& 
rName, const ScTokenArray& rArray);
 
     ScExternalRefCache::TokenRef getSingleRefToken(
         sal_uInt16 nFileId, const OUString& rTabName, const ScAddress& rCell,
@@ -558,7 +558,7 @@ public:
      * @return shared_ptr to a token array instance.  <i>The caller must not
      *         delete the instance returned by this method.</i>
      */
-    ScExternalRefCache::TokenArrayRef getDoubleRefTokens(
+    SC_DLLPUBLIC ScExternalRefCache::TokenArrayRef getDoubleRefTokens(
         sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange, 
const ScAddress* pCurPos);
 
     /**
@@ -572,7 +572,7 @@ public:
      *
      * @return shared_ptr to array of tokens composing the name
      */
-    ScExternalRefCache::TokenArrayRef getRangeNameTokens(
+    SC_DLLPUBLIC ScExternalRefCache::TokenArrayRef getRangeNameTokens(
         sal_uInt16 nFileId, const OUString& rName, const ScAddress* pCurPos = 
nullptr);
 
     bool isValidRangeName(sal_uInt16 nFileId, const OUString& rName);
@@ -586,8 +586,8 @@ public:
      *
      * @param rFile file name to convert
      */
-    void convertToAbsName(OUString& rFile) const;
-    sal_uInt16 getExternalFileId(const OUString& rFile);
+    SC_DLLPUBLIC void convertToAbsName(OUString& rFile) const;
+    SC_DLLPUBLIC sal_uInt16 getExternalFileId(const OUString& rFile);
 
     /**
      * It returns a pointer to the name of the URI associated with a given
@@ -602,14 +602,14 @@ public:
      *
      * @return const OUString* external document URI.
      */
-    const OUString* getExternalFileName(sal_uInt16 nFileId, bool 
bForceOriginal = false);
+    SC_DLLPUBLIC const OUString* getExternalFileName(sal_uInt16 nFileId, bool 
bForceOriginal = false);
 
     /**
      * Reindex external file references to skip unused files, if skipping is 
enabled.
      */
-    sal_uInt16 convertFileIdToUsedFileId(sal_uInt16 nFileId);
-    void setSkipUnusedFileIds(std::vector<sal_uInt16>& pExternFileIds);
-    void disableSkipUnusedFileIds();
+    SC_DLLPUBLIC sal_uInt16 convertFileIdToUsedFileId(sal_uInt16 nFileId);
+    SC_DLLPUBLIC void setSkipUnusedFileIds(std::vector<sal_uInt16>& 
pExternFileIds);
+    SC_DLLPUBLIC void disableSkipUnusedFileIds();
 
     /**
      * Get all cached external file names as an array. Array indices of the
@@ -718,12 +718,12 @@ public:
      */
     void insertRefCellFromTemplate( ScFormulaCell* pTemplateCell, 
ScFormulaCell* pCell );
 
-    bool hasCellExternalReference(const ScAddress& rCell);
+    SC_DLLPUBLIC bool hasCellExternalReference(const ScAddress& rCell);
 
     void enableDocTimer( bool bEnable );
 
     /** Add all known external files to the LinkManager. */
-    void addFilesToLinkManager();
+    SC_DLLPUBLIC void addFilesToLinkManager();
 
 private:
     ScExternalRefManager(const ScExternalRefManager&) = delete;
@@ -865,7 +865,7 @@ private:
     bool mbDocTimerEnabled:1;
 
     AutoTimer maSrcDocTimer;
-    DECL_DLLPRIVATE_LINK(TimeOutHdl, Timer*, void);
+    DECL_LINK(TimeOutHdl, Timer*, void);
 };
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/formulacell.hxx b/sc/inc/formulacell.hxx
index 70f113d50715..28a3ff981e20 100644
--- a/sc/inc/formulacell.hxx
+++ b/sc/inc/formulacell.hxx
@@ -117,7 +117,7 @@ enum class ScMatrixMode : sal_uInt8 {
     Reference = 2                    // Remaining cells, via ocMatRef 
reference token
 };
 
-class SC_DLLPUBLIC ScFormulaCell final : public SvtListener
+class SAL_DLLPUBLIC_RTTI ScFormulaCell final : public SvtListener
 {
 private:
     ScFormulaCellGroupRef mxGroup;       // Group of formulae we're part of
@@ -189,27 +189,27 @@ public:
 
     ScAddress       aPos;
 
-                    virtual ~ScFormulaCell() override;
+    SC_DLLPUBLIC virtual ~ScFormulaCell() override;
 
     ScFormulaCell* Clone() const;
     ScFormulaCell* Clone( const ScAddress& rPos ) const;
 
-    ScFormulaCell( ScDocument& rDoc, const ScAddress& rPos );
+    SC_DLLPUBLIC ScFormulaCell( ScDocument& rDoc, const ScAddress& rPos );
 
     /**
      * Transfer the ownership of the passed token array instance to the
      * formula cell being constructed.  The caller <i>must not</i> pass a NULL
      * token array pointer.
      */
-    ScFormulaCell( ScDocument& rDoc, const ScAddress& rPos, 
std::unique_ptr<ScTokenArray> pArray,
+    SC_DLLPUBLIC ScFormulaCell( ScDocument& rDoc, const ScAddress& rPos, 
std::unique_ptr<ScTokenArray> pArray,
                    const formula::FormulaGrammar::Grammar eGrammar = 
formula::FormulaGrammar::GRAM_DEFAULT,
                    ScMatrixMode cMatInd = ScMatrixMode::NONE );
 
-    ScFormulaCell( ScDocument& rDoc, const ScAddress& rPos, const 
ScTokenArray& rArray,
+    SC_DLLPUBLIC ScFormulaCell( ScDocument& rDoc, const ScAddress& rPos, const 
ScTokenArray& rArray,
                    const formula::FormulaGrammar::Grammar eGrammar = 
formula::FormulaGrammar::GRAM_DEFAULT,
                    ScMatrixMode cMatInd = ScMatrixMode::NONE );
 
-    ScFormulaCell( ScDocument& rDoc, const ScAddress& rPos, const 
ScFormulaCellGroupRef& xGroup,
+    SC_DLLPUBLIC ScFormulaCell( ScDocument& rDoc, const ScAddress& rPos, const 
ScFormulaCellGroupRef& xGroup,
                    const formula::FormulaGrammar::Grammar = 
formula::FormulaGrammar::GRAM_DEFAULT,
                    ScMatrixMode = ScMatrixMode::NONE );
 
@@ -228,11 +228,11 @@ public:
 
     size_t GetHash() const;
 
-    OUString GetFormula( const formula::FormulaGrammar::Grammar = 
formula::FormulaGrammar::GRAM_DEFAULT,
+    SC_DLLPUBLIC OUString GetFormula( const formula::FormulaGrammar::Grammar = 
formula::FormulaGrammar::GRAM_DEFAULT,
                          const ScInterpreterContext* pContext = nullptr ) 
const;
-    OUString GetFormula( sc::CompileFormulaContext& rCxt, const 
ScInterpreterContext* pContext = nullptr ) const;
+    SC_DLLPUBLIC OUString GetFormula( sc::CompileFormulaContext& rCxt, const 
ScInterpreterContext* pContext = nullptr ) const;
 
-    void            SetDirty( bool bDirtyFlag=true );
+    SC_DLLPUBLIC void SetDirty( bool bDirtyFlag=true );
     void            SetDirtyVar();
     // If setting entire document dirty after load, no broadcasts but still 
append to FormulaTree.
     void            SetDirtyAfterLoad();
@@ -245,11 +245,11 @@ public:
     }
 
     bool GetDirty() const { return bDirty; }
-    void ResetDirty();
+    SC_DLLPUBLIC void ResetDirty();
     bool NeedsListening() const { return bNeedListening; }
     void SetNeedsListening( bool bVar );
     void SetNeedsDirty( bool bVar );
-    void SetNeedNumberFormat( bool bVal );
+    SC_DLLPUBLIC void SetNeedNumberFormat( bool bVal );
     bool NeedsNumberFormat() const { return mbNeedsNumberFormat;}
     SvNumFormatType GetFormatType() const { return nFormatType; }
     void            Compile(const OUString& rFormula,
@@ -325,15 +325,15 @@ public:
     void            FindRangeNamesInUse(sc::UpdatedRangeNames& rIndexes) const;
     bool            IsSubTotal() const { return bSubTotal;}
     bool            IsChanged() const { return bChanged;}
-    void            SetChanged(bool b);
+    SC_DLLPUBLIC void SetChanged(bool b);
     bool            IsEmpty();      // formula::svEmptyCell result
                     // display as empty string if formula::svEmptyCell result
     bool            IsEmptyDisplayedAsString();
-    bool            IsValue();      // also true if formula::svEmptyCell
+    SC_DLLPUBLIC bool IsValue();      // also true if formula::svEmptyCell
     bool            IsValueNoError();
     bool            IsValueNoError() const;
-    double          GetValue();
-    const svl::SharedString & GetString();
+    SC_DLLPUBLIC double GetValue();
+    SC_DLLPUBLIC const svl::SharedString & GetString();
 
     /**
      * Get a numeric value without potentially triggering re-calculation.
@@ -345,14 +345,14 @@ public:
      */
     const svl::SharedString & GetRawString() const;
     const ScMatrix* GetMatrix();
-    bool            GetMatrixOrigin( const ScDocument& rDoc, ScAddress& rPos ) 
const;
+    SC_DLLPUBLIC bool GetMatrixOrigin( const ScDocument& rDoc, ScAddress& rPos 
) const;
     void            GetResultDimensions( SCSIZE& rCols, SCSIZE& rRows );
     sc::MatrixEdge  GetMatrixEdge( const ScDocument& rDoc, ScAddress& rOrgPos 
) const;
-    FormulaError    GetErrCode();   // interpret first if necessary
+    SC_DLLPUBLIC FormulaError GetErrCode();   // interpret first if necessary
     FormulaError    GetRawError() const;  // don't interpret, just return code 
or result error
     bool            GetErrorOrValue( FormulaError& rErr, double& rVal );
-    sc::FormulaResultValue GetResult();
-    sc::FormulaResultValue GetResult() const;
+    SC_DLLPUBLIC sc::FormulaResultValue GetResult();
+    SC_DLLPUBLIC sc::FormulaResultValue GetResult() const;
     ScMatrixMode    GetMatrixFlag() const { return cMatrixFlag;}
     ScTokenArray*   GetCode() { return pCode;}
     const ScTokenArray* GetCode() const { return pCode;}
@@ -378,21 +378,21 @@ public:
     void SetCompile( bool bVal );
     ScDocument& GetDocument() const { return rDocument;}
     void            SetMatColsRows( SCCOL nCols, SCROW nRows );
-    void            GetMatColsRows( SCCOL& nCols, SCROW& nRows ) const;
+    SC_DLLPUBLIC void GetMatColsRows( SCCOL& nCols, SCROW& nRows ) const;
 
                     // cell belongs to ChangeTrack and not to the real document
     void SetInChangeTrack( bool bVal );
     bool IsInChangeTrack() const { return bInChangeTrack;}
 
     // For import filters!
-    void            AddRecalcMode( ScRecalcMode );
+    SC_DLLPUBLIC void AddRecalcMode( ScRecalcMode );
     /** For import only: set a double result. */
-    void SetHybridDouble( double n );
+    SC_DLLPUBLIC void SetHybridDouble( double n );
     /** For import only: set a string result.
         If for whatever reason you have to use both, SetHybridDouble() and
         SetHybridString() or SetHybridFormula(), use SetHybridDouble() first
         for performance reasons.*/
-    void SetHybridString( const svl::SharedString& r );
+    SC_DLLPUBLIC void SetHybridString( const svl::SharedString& r );
     /** For import only: set an empty cell result to be displayed as empty 
string.
         If for whatever reason you have to use both, SetHybridDouble() and
         SetHybridEmptyDisplayedAsString() or SetHybridFormula(), use
@@ -416,26 +416,26 @@ public:
         formula string because the formula is present as a token array, as it
         is the case for binary Excel import.
      */
-    void SetResultDouble( double n );
+    SC_DLLPUBLIC void SetResultDouble( double n );
 
-    void SetResultToken( const formula::FormulaToken* pToken );
+    SC_DLLPUBLIC void SetResultToken( const formula::FormulaToken* pToken );
 
     const svl::SharedString & GetResultString() const;
 
     bool HasHybridStringResult() const;
 
     /* Sets the shared code array to error state in addition to the cell 
result */
-    void SetErrCode( FormulaError n );
+    SC_DLLPUBLIC void SetErrCode( FormulaError n );
 
     /* Sets just the result to error */
     void SetResultError( FormulaError n );
 
-    bool IsHyperLinkCell() const;
+    SC_DLLPUBLIC bool IsHyperLinkCell() const;
     std::unique_ptr<EditTextObject> CreateURLObject();
-    void GetURLResult( OUString& rURL, OUString& rCellText );
+    SC_DLLPUBLIC void GetURLResult( OUString& rURL, OUString& rCellText );
 
     /** Determines whether or not the result string contains more than one 
paragraph */
-    bool            IsMultilineResult();
+    SC_DLLPUBLIC bool IsMultilineResult();
 
     bool NeedsInterpret() const
     {
@@ -475,7 +475,7 @@ public:
     /**
      * Turn a non-grouped cell into the top of a grouped cell.
      */
-    ScFormulaCellGroupRef CreateCellGroup( SCROW nLen, bool bInvariant );
+    SC_DLLPUBLIC ScFormulaCellGroupRef CreateCellGroup( SCROW nLen, bool 
bInvariant );
     const ScFormulaCellGroupRef& GetCellGroup() const { return mxGroup;}
     void SetCellGroup( const ScFormulaCellGroupRef &xRef );
 
@@ -491,15 +491,15 @@ public:
     void EndListeningTo( sc::EndListeningContext& rCxt );
 
     bool IsShared() const;
-    bool IsSharedTop() const;
-    SCROW GetSharedTopRow() const;
-    SCROW GetSharedLength() const;
+    SC_DLLPUBLIC bool IsSharedTop() const;
+    SC_DLLPUBLIC SCROW GetSharedTopRow() const;
+    SC_DLLPUBLIC SCROW GetSharedLength() const;
 
     // An estimate of the number of cells referenced by the formula
     sal_Int32 GetWeight() const;
 
     ScTokenArray* GetSharedCode();
-    const ScTokenArray* GetSharedCode() const;
+    SC_DLLPUBLIC const ScTokenArray* GetSharedCode() const;
 
     void SyncSharedCode();
 
diff --git a/sc/inc/markarr.hxx b/sc/inc/markarr.hxx
index 03e94b7d302b..c0542a9aafd8 100644
--- a/sc/inc/markarr.hxx
+++ b/sc/inc/markarr.hxx
@@ -40,7 +40,7 @@ struct ScMarkEntry
   and for each entry the range is defined as :
       [previousEntry.nRow+1, currentEntry.nRow]
 */
-class SC_DLLPUBLIC ScMarkArray
+class ScMarkArray
 {
     const ScSheetLimits &       mrSheetLimits;
     std::vector<ScMarkEntry>    mvData;
@@ -49,12 +49,12 @@ friend class ScMarkArrayIter;
 friend class ScDocument;                // for FillInfo
 
 public:
-            ScMarkArray( const ScSheetLimits& rLimits );
+    SC_DLLPUBLIC ScMarkArray( const ScSheetLimits& rLimits );
             ScMarkArray( ScMarkArray&& rArray ) noexcept;
             ScMarkArray( const ScMarkArray& rArray );
     void    Reset( bool bMarked = false, SCSIZE nNeeded = 1 );
     bool    GetMark( SCROW nRow ) const;
-    void    SetMarkArea( SCROW nStartRow, SCROW nEndRow, bool bMarked );
+    SC_DLLPUBLIC void SetMarkArea( SCROW nStartRow, SCROW nEndRow, bool 
bMarked );
     void    Set( std::vector<ScMarkEntry> && );
     bool    IsAllMarked( SCROW nStartRow, SCROW nEndRow ) const;
     bool    HasOneMark( SCROW& rStartRow, SCROW& rEndRow ) const;
@@ -65,7 +65,7 @@ public:
     ScMarkArray& operator=(ScMarkArray&& rSource) noexcept;
     bool operator==(ScMarkArray const & rOther ) const;
 
-    bool    Search( SCROW nRow, SCSIZE& nIndex ) const;
+    SC_DLLPUBLIC bool Search( SCROW nRow, SCSIZE& nIndex ) const;
 
     /// Including current row, may return -1 if bUp and not found
     SCROW   GetNextMarked( SCROW nRow, bool bUp ) const;
diff --git a/sc/inc/markdata.hxx b/sc/inc/markdata.hxx
index 80d683f168b1..340accf38755 100644
--- a/sc/inc/markdata.hxx
+++ b/sc/inc/markdata.hxx
@@ -39,7 +39,7 @@ class ScMarkArray;
 //!     It should be possible to have MarkArrays for each table, in order to
 //!     enable "search all" across more than one table again!
 
-class SC_DLLPUBLIC ScMarkData
+class ScMarkData
 {
 public:
     typedef std::set<SCTAB> MarkedTabsType;
@@ -61,21 +61,21 @@ private:
     bool            bMarkIsNeg:1;           // cancel if multi selection
 
 public:
-    ScMarkData(const ScSheetLimits& rSheetLimits);
+    SC_DLLPUBLIC ScMarkData(const ScSheetLimits& rSheetLimits);
     ScMarkData(const ScSheetLimits& rSheetLimits, const ScRangeList& rList);
     ScMarkData(const ScMarkData& rData) = default;
     ScMarkData(ScMarkData&& rData) = default;
     ScMarkData& operator=(const ScMarkData& rData);
     ScMarkData& operator=(ScMarkData&& rData);
 
-    void        ResetMark();
-    void        SetMarkArea( const ScRange& rRange );
+    SC_DLLPUBLIC void ResetMark();
+    SC_DLLPUBLIC void SetMarkArea( const ScRange& rRange );
 
     // bSetupMulti must be set to true only for recursive calls to 
SetMultiMarkArea
-    void        SetMultiMarkArea( const ScRange& rRange, bool bMark = true, 
bool bSetupMulti = false );
+    SC_DLLPUBLIC void SetMultiMarkArea( const ScRange& rRange, bool bMark = 
true, bool bSetupMulti = false );
 
-    void        MarkToMulti();
-    void        MarkToSimple();
+    SC_DLLPUBLIC void MarkToMulti();
+    SC_DLLPUBLIC void MarkToSimple();
 
     bool        IsMarked() const                { return bMarked; }
     bool        IsMultiMarked() const           { return bMultiMarked; }
@@ -86,16 +86,16 @@ public:
 
     void        SetAreaTab( SCTAB nTab );
 
-    void        SelectTable( SCTAB nTab, bool bNew );
+    SC_DLLPUBLIC void SelectTable( SCTAB nTab, bool bNew );
     bool        GetTableSelect( SCTAB nTab ) const;
 
-    void        SelectOneTable( SCTAB nTab );
-    SCTAB       GetSelectCount() const;
-    SCTAB       GetFirstSelected() const;
+    SC_DLLPUBLIC void SelectOneTable( SCTAB nTab );
+    SC_DLLPUBLIC SCTAB GetSelectCount() const;
+    SC_DLLPUBLIC SCTAB GetFirstSelected() const;
     SCTAB       GetLastSelected() const;
 
     const MarkedTabsType& GetSelectedTabs() const { return maTabMarked;}
-    void SetSelectedTabs(const MarkedTabsType& rTabs);
+    SC_DLLPUBLIC void SetSelectedTabs(const MarkedTabsType& rTabs);
 
     void        SetMarkNegative( bool bFlag )   { bMarkIsNeg = bFlag; }
     bool        IsMarkNegative() const          { return bMarkIsNeg;  }
@@ -106,7 +106,7 @@ public:
     const ScMultiSel& GetMultiSelData() const   { return aMultiSel;   }
     ScMarkArray GetMarkArray( SCCOL nCol ) const { return 
aMultiSel.GetMarkArray( nCol ); }
 
-    bool        IsCellMarked( SCCOL nCol, SCROW nRow, bool bNoSimple = false ) 
const;
+    SC_DLLPUBLIC bool IsCellMarked( SCCOL nCol, SCROW nRow, bool bNoSimple = 
false ) const;
 
     /** Create a range list of marks.
         @param  nForTab
@@ -116,7 +116,7 @@ public:
     void        FillRangeListWithMarks( ScRangeList* pList, bool bClear, SCTAB 
nForTab = -1 ) const;
     void        ExtendRangeListTables( ScRangeList* pList ) const;
 
-    ScRangeList GetMarkedRanges() const;
+    SC_DLLPUBLIC ScRangeList GetMarkedRanges() const;
     /** Get marked ranges with sheet-tab set to nTab.
         Marks are stored for the currently active sheet respectively the
         multi-area start-sheet-tab, update ranges with the sheet for which this
@@ -128,29 +128,29 @@ public:
     std::vector<sc::ColRowSpan> GetMarkedRowSpans() const;
     std::vector<sc::ColRowSpan> GetMarkedColSpans() const;
 
-    bool        IsColumnMarked( SCCOL nCol ) const;
-    bool        IsRowMarked( SCROW nRow ) const;
-    bool        IsAllMarked( const ScRange& rRange ) const;     // Multi
+    SC_DLLPUBLIC bool IsColumnMarked( SCCOL nCol ) const;
+    SC_DLLPUBLIC bool IsRowMarked( SCROW nRow ) const;
+    SC_DLLPUBLIC bool IsAllMarked( const ScRange& rRange ) const;     // Multi
 
     // Returns the first column of the range [column,nLastCol] for which
     // all those columns have equal marks. Value returned is not less than 
nMinCol.
     SCCOL       GetStartOfEqualColumns( SCCOL nLastCol, SCCOL nMinCol = 0 ) 
const;
 
                 /// May return -1
-    SCROW       GetNextMarked( SCCOL nCol, SCROW nRow, bool bUp ) const;
-    bool        HasMultiMarks( SCCOL nCol ) const;
+    SC_DLLPUBLIC SCROW GetNextMarked( SCCOL nCol, SCROW nRow, bool bUp ) const;
+    SC_DLLPUBLIC bool HasMultiMarks( SCCOL nCol ) const;
     bool        HasAnyMultiMarks() const;
 
     //  adjust table marking:
-    void        InsertTab( SCTAB nTab );
-    void        DeleteTab( SCTAB nTab );
+    SC_DLLPUBLIC void InsertTab( SCTAB nTab );
+    SC_DLLPUBLIC void DeleteTab( SCTAB nTab );
 
     void        ShiftCols(const ScDocument& rDoc, SCCOL nStartCol, sal_Int32 
nColOffset);
     void        ShiftRows(const ScDocument& rDoc, SCROW nStartRow, sal_Int32 
nRowOffset);
 
     // Generate envelopes if multimarked and fills the passed ScRange object 
with
     // the smallest range that includes the marked area plus its envelopes.
-    void        GetSelectionCover( ScRange& rRange );
+    SC_DLLPUBLIC void GetSelectionCover( ScRange& rRange );
     // Get top, bottom, left and right envelopes
     const ScRangeList& GetTopEnvelope() const    { return aTopEnvelope;    }
     const ScRangeList& GetBottomEnvelope() const { return aBottomEnvelope; }
diff --git a/sc/inc/miscuno.hxx b/sc/inc/miscuno.hxx
index 23289affbdba..c7e58d0cbbd2 100644
--- a/sc/inc/miscuno.hxx
+++ b/sc/inc/miscuno.hxx
@@ -136,7 +136,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames(  
) override;
 };
 
-class SC_DLLPUBLIC ScUnoHelpFunctions
+class ScUnoHelpFunctions
 {
 public:
     static bool             GetBoolProperty( const css::uno::Reference< 
css::beans::XPropertySet>& xProp,
@@ -154,7 +154,7 @@ public:
         const css::uno::Reference<css::beans::XPropertySet>& xProp,
         const OUString& rName, const OUString& rDefault );
 
-    static bool             GetBoolFromAny( const css::uno::Any& aAny );
+    SC_DLLPUBLIC static bool GetBoolFromAny( const css::uno::Any& aAny );
     static sal_Int16        GetInt16FromAny( const css::uno::Any& aAny );
     static sal_Int32        GetInt32FromAny( const css::uno::Any& aAny );
     static sal_Int32        GetEnumFromAny( const css::uno::Any& aAny );
diff --git a/sc/inc/nameuno.hxx b/sc/inc/nameuno.hxx
index ee37dc365d2f..4ea924e6bdd1 100644
--- a/sc/inc/nameuno.hxx
+++ b/sc/inc/nameuno.hxx
@@ -41,7 +41,7 @@ namespace com::sun::star::container { class XNamed; }
 class ScDocShell;
 class ScNamedRangesObj;
 
-class SC_DLLPUBLIC ScNamedRangeObj final : public ::cppu::WeakImplHelper<
+class SAL_DLLPUBLIC_RTTI ScNamedRangeObj final : public ::cppu::WeakImplHelper<
                             css::sheet::XNamedRange,
                             css::sheet::XFormulaTokens,
                             css::sheet::XCellRangeReferrer,
@@ -57,7 +57,7 @@ private:
 
 private:
 friend class ScVbaName;
-    ScRangeData*            GetRangeData_Impl();
+    SC_DLLPUBLIC ScRangeData* GetRangeData_Impl();
     void                    Modify_Impl( const OUString* pNewName,
                                         const ScTokenArray* pNewTokens, const 
OUString* pNewContent,
                                         const ScAddress* pNewPos, const 
ScRangeData::Type* pNewType,
diff --git a/sc/inc/olinetab.hxx b/sc/inc/olinetab.hxx
index 45c4a65a6b9b..7c434b825988 100644
--- a/sc/inc/olinetab.hxx
+++ b/sc/inc/olinetab.hxx
@@ -88,7 +88,7 @@ public:
     OString dumpAsString() const;
 };
 
-class SC_DLLPUBLIC ScOutlineArray
+class ScOutlineArray
 {
 friend class ScSubOutlineIterator;
 
@@ -109,17 +109,17 @@ public:
 
     size_t GetDepth() const { return nDepth;}
 
-    bool FindTouchedLevel(
+    SC_DLLPUBLIC bool FindTouchedLevel(
         SCCOLROW nBlockStart, SCCOLROW nBlockEnd, size_t& rFindLevel) const;
 
-    bool Insert( SCCOLROW nStartPos, SCCOLROW nEndPos, bool& rSizeChanged,
+    SC_DLLPUBLIC bool Insert( SCCOLROW nStartPos, SCCOLROW nEndPos, bool& 
rSizeChanged,
                  bool bHidden = false );
     bool Remove( SCCOLROW nBlockStart, SCCOLROW nBlockEnd, bool& rSizeChanged 
);
 
     ScOutlineEntry* GetEntry(size_t nLevel, size_t nIndex);
-    const ScOutlineEntry* GetEntry(size_t nLevel, size_t nIndex) const;
-    size_t GetCount(size_t nLevel) const;
-    const ScOutlineEntry* GetEntryByPos(size_t nLevel, SCCOLROW nPos) const;
+    SC_DLLPUBLIC const ScOutlineEntry* GetEntry(size_t nLevel, size_t nIndex) 
const;
+    SC_DLLPUBLIC size_t GetCount(size_t nLevel) const;
+    SC_DLLPUBLIC const ScOutlineEntry* GetEntryByPos(size_t nLevel, SCCOLROW 
nPos) const;
 
     bool GetEntryIndex(size_t nLevel, SCCOLROW nPos, size_t& rnIndex) const;
     bool GetEntryIndexInRange(
@@ -128,7 +128,7 @@ public:
     void SetVisibleBelow(
         size_t nLevel, size_t nEntry, bool bValue, bool bSkipHidden = false);
 
-    void GetRange(SCCOLROW& rStart, SCCOLROW& rEnd) const;
+    SC_DLLPUBLIC void GetRange(SCCOLROW& rStart, SCCOLROW& rEnd) const;
     void ExtendBlock(size_t nLevel, SCCOLROW& rBlkStart, SCCOLROW& rBlkEnd);
 
     bool TestInsertSpace(SCSIZE nSize, SCCOLROW nMaxVal) const;
diff --git a/sc/inc/scmatrix.hxx b/sc/inc/scmatrix.hxx
index df38fcdb8dcb..1f367793518d 100644
--- a/sc/inc/scmatrix.hxx
+++ b/sc/inc/scmatrix.hxx
@@ -97,7 +97,7 @@ struct ScMatrixValue
  * be one of the following types: numeric, string, boolean, empty, and empty
  * path.
  */
-class SC_DLLPUBLIC ScMatrix final
+class ScMatrix final
 {
     friend class ScMatrixImpl;
 
@@ -109,8 +109,8 @@ class SC_DLLPUBLIC ScMatrix final
     ScMatrix& operator=( const ScMatrix&) = delete;
 
 public:
-    ScMatrix(SCSIZE nC, SCSIZE nR);
-    ScMatrix(SCSIZE nC, SCSIZE nR, double fInitVal);
+    SC_DLLPUBLIC ScMatrix(SCSIZE nC, SCSIZE nR);
+    SC_DLLPUBLIC ScMatrix(SCSIZE nC, SCSIZE nR, double fInitVal);
     ScMatrix( size_t nC, size_t nR, const std::vector<double>& rInitVals );
     ~ScMatrix();
 
@@ -219,7 +219,7 @@ public:
     /**
      * Resize the matrix to specified new dimension.
      */
-    void Resize(SCSIZE nC, SCSIZE nR);
+    SC_DLLPUBLIC void Resize(SCSIZE nC, SCSIZE nR);
 
     void Resize(SCSIZE nC, SCSIZE nR, double fVal);
 
@@ -227,11 +227,11 @@ public:
         MUST be at least of the size of the original matrix. */
     ScMatrix* CloneAndExtend(SCSIZE nNewCols, SCSIZE nNewRows) const;
 
-    void IncRef() const;
-    void DecRef() const;
+    SC_DLLPUBLIC void IncRef() const;
+    SC_DLLPUBLIC void DecRef() const;
 
     void SetErrorInterpreter( ScInterpreter* p);
-    void GetDimensions( SCSIZE& rC, SCSIZE& rR) const;
+    SC_DLLPUBLIC void GetDimensions( SCSIZE& rC, SCSIZE& rR) const;
     SCSIZE GetElementCount() const;
     bool ValidColRow( SCSIZE nC, SCSIZE nR) const;
 
@@ -251,22 +251,22 @@ public:
      */
     bool ValidColRowOrReplicated( SCSIZE & rC, SCSIZE & rR ) const;
 
-    void PutDouble( double fVal, SCSIZE nC, SCSIZE nR);
+    SC_DLLPUBLIC void PutDouble( double fVal, SCSIZE nC, SCSIZE nR);
     void PutDouble( double fVal, SCSIZE nIndex);
     void PutDoubleTrans( double fVal, SCSIZE nIndex);
     void PutDouble(const double* pArray, size_t nLen, SCSIZE nC, SCSIZE nR);
 
-    void PutString( const svl::SharedString& rStr, SCSIZE nC, SCSIZE nR) ;
+    SC_DLLPUBLIC void PutString( const svl::SharedString& rStr, SCSIZE nC, 
SCSIZE nR) ;
     void PutString( const svl::SharedString& rStr, SCSIZE nIndex) ;
     void PutStringTrans( const svl::SharedString& rStr, SCSIZE nIndex) ;
     void PutString( const svl::SharedString* pArray, size_t nLen, SCSIZE nC, 
SCSIZE nR) ;
 
-    void PutEmpty( SCSIZE nC, SCSIZE nR);
+    SC_DLLPUBLIC void PutEmpty( SCSIZE nC, SCSIZE nR);
 
     /// Jump sal_False without path
     void PutEmptyPath( SCSIZE nC, SCSIZE nR) ;
-    void PutError( FormulaError nErrorCode, SCSIZE nC, SCSIZE nR ) ;
-    void PutBoolean( bool bVal, SCSIZE nC, SCSIZE nR) ;
+    SC_DLLPUBLIC void PutError( FormulaError nErrorCode, SCSIZE nC, SCSIZE nR 
) ;
+    SC_DLLPUBLIC void PutBoolean( bool bVal, SCSIZE nC, SCSIZE nR) ;
 
     void FillDouble( double fVal,
             SCSIZE nC1, SCSIZE nR1, SCSIZE nC2, SCSIZE nR2 ) ;
@@ -318,7 +318,7 @@ public:
 
     /// @ATTENTION: If bString the ScMatrixValue->pS may still be NULL to 
indicate
     /// an empty string!
-    ScMatrixValue Get( SCSIZE nC, SCSIZE nR) const ;
+    SC_DLLPUBLIC ScMatrixValue Get( SCSIZE nC, SCSIZE nR) const ;
 
     /** @return <TRUE/> if string or any empty, empty cell, empty result, empty
         path, in fact non-value. */
diff --git a/sc/inc/tokenarray.hxx b/sc/inc/tokenarray.hxx
index 997aa0e9d8f7..90495d9446ba 100644
--- a/sc/inc/tokenarray.hxx
+++ b/sc/inc/tokenarray.hxx
@@ -45,7 +45,7 @@ struct ScRawToken;
 struct ScSingleRefData;
 struct ScComplexRefData;
 
-class SAL_WARN_UNUSED SC_DLLPUBLIC ScTokenArray final : public 
formula::FormulaTokenArray
+class SAL_WARN_UNUSED SAL_DLLPUBLIC_RTTI ScTokenArray final : public 
formula::FormulaTokenArray
 {
     friend class ScCompiler;
 
@@ -61,21 +61,21 @@ class SAL_WARN_UNUSED SC_DLLPUBLIC ScTokenArray final : 
public formula::FormulaT
     void CheckForThreading( const formula::FormulaToken& r );
 
 public:
-    ScTokenArray(const ScDocument& rDoc);
+    SC_DLLPUBLIC ScTokenArray(const ScDocument& rDoc);
     ScTokenArray(ScSheetLimits&);
     /** Assignment with incrementing references of FormulaToken entries
         (not copied!) */
     ScTokenArray( const ScTokenArray& ) = default;
     ScTokenArray( ScTokenArray&& ) = default;
-    virtual ~ScTokenArray() override;
+    SC_DLLPUBLIC virtual ~ScTokenArray() override;
 
     bool EqualTokens( const ScTokenArray* pArr2 ) const;
 
-    virtual void Clear() override;
-    std::unique_ptr<ScTokenArray> Clone() const;    /// True copy!
-    ScTokenArray CloneValue() const;    /// True copy!
+    SC_DLLPUBLIC virtual void Clear() override;
+    SC_DLLPUBLIC std::unique_ptr<ScTokenArray> Clone() const;    /// True copy!
+    SC_DLLPUBLIC ScTokenArray CloneValue() const;    /// True copy!
 
-    void GenHash();
+    SC_DLLPUBLIC void GenHash();
     size_t GetHash() const { return mnHashValue;}
 
     ScFormulaVectorState GetVectorState() const { return meVectorState;}
@@ -89,9 +89,9 @@ public:
     bool IsInvariant() const;
 
     /// Exactly and only one range (valid or deleted)
-    bool IsReference( ScRange& rRange, const ScAddress& rPos ) const;
+    SC_DLLPUBLIC bool IsReference( ScRange& rRange, const ScAddress& rPos ) 
const;
     /// Exactly and only one valid range (no #REF!s)
-    bool IsValidReference( ScRange& rRange, const ScAddress& rPos ) const;
+    SC_DLLPUBLIC bool IsValidReference( ScRange& rRange, const ScAddress& rPos 
) const;
 
                             /** Determines the extent of direct adjacent
                                 references. Only use with real functions, e.g.
@@ -101,26 +101,26 @@ public:
                                 const ScAddress& rPos, ScDirection );
 
     formula::FormulaToken* AddRawToken( const ScRawToken& );
-    virtual bool AddFormulaToken(
+    SC_DLLPUBLIC virtual bool AddFormulaToken(
         const css::sheet::FormulaToken& rToken,
         svl::SharedStringPool& rSPool,
         formula::ExternalReferenceHelper* _pRef) override;
-    virtual void CheckToken( const formula::FormulaToken& r ) override;
-    virtual formula::FormulaToken* AddOpCode( OpCode eCode ) override;
+    SC_DLLPUBLIC virtual void CheckToken( const formula::FormulaToken& r ) 
override;
+    SC_DLLPUBLIC virtual formula::FormulaToken* AddOpCode( OpCode eCode ) 
override;
     /** ScSingleRefToken with ocPush. */
-    formula::FormulaToken* AddSingleReference( const ScSingleRefData& rRef );
+    SC_DLLPUBLIC formula::FormulaToken* AddSingleReference( const 
ScSingleRefData& rRef );
     /** ScSingleRefOpToken with ocMatRef. */
     formula::FormulaToken* AddMatrixSingleReference( const ScSingleRefData& 
rRef );
-    formula::FormulaToken* AddDoubleReference( const ScComplexRefData& rRef );
-    void                   AddRangeName( sal_uInt16 n, sal_Int16 nSheet );
+    SC_DLLPUBLIC formula::FormulaToken* AddDoubleReference( const 
ScComplexRefData& rRef );
+    SC_DLLPUBLIC void      AddRangeName( sal_uInt16 n, sal_Int16 nSheet );
     formula::FormulaToken* AddDBRange( sal_uInt16 n );
-    formula::FormulaToken* AddExternalName( sal_uInt16 nFileId, const 
svl::SharedString& rName );
-    void AddExternalSingleReference( sal_uInt16 nFileId, const 
svl::SharedString& rTabName, const ScSingleRefData& rRef );
-    formula::FormulaToken* AddExternalDoubleReference( sal_uInt16 nFileId, 
const svl::SharedString& rTabName, const ScComplexRefData& rRef );
-    formula::FormulaToken* AddMatrix( const ScMatrixRef& p );
+    SC_DLLPUBLIC formula::FormulaToken* AddExternalName( sal_uInt16 nFileId, 
const svl::SharedString& rName );
+    SC_DLLPUBLIC void AddExternalSingleReference( sal_uInt16 nFileId, const 
svl::SharedString& rTabName, const ScSingleRefData& rRef );
+    SC_DLLPUBLIC formula::FormulaToken* AddExternalDoubleReference( sal_uInt16 
nFileId, const svl::SharedString& rTabName, const ScComplexRefData& rRef );
+    SC_DLLPUBLIC formula::FormulaToken* AddMatrix( const ScMatrixRef& p );
     /** ScSingleRefOpToken with ocColRowName. */
-    formula::FormulaToken* AddColRowName( const ScSingleRefData& rRef );
-    virtual formula::FormulaToken* MergeArray( ) override;
+    SC_DLLPUBLIC formula::FormulaToken* AddColRowName( const ScSingleRefData& 
rRef );
+    SC_DLLPUBLIC virtual formula::FormulaToken* MergeArray( ) override;
 
     /** Merge very last SingleRef+ocRange+SingleRef combination into DoubleRef
         and adjust pCode array, or do nothing if conditions not met. */
@@ -259,9 +259,9 @@ public:
      * Create a string representation of formula token array without modifying
      * the internal state of the token array.
      */
-    OUString CreateString( sc::TokenStringContext& rCxt, const ScAddress& rPos 
) const;
+    SC_DLLPUBLIC OUString CreateString( sc::TokenStringContext& rCxt, const 
ScAddress& rPos ) const;
 
-    void WrapReference( const ScAddress& rPos, SCCOL nMaxCol, SCROW nMaxRow );
+    SC_DLLPUBLIC void WrapReference( const ScAddress& rPos, SCCOL nMaxCol, 
SCROW nMaxRow );
 
     sal_Int32 GetWeight() const;
 
diff --git a/sc/inc/validat.hxx b/sc/inc/validat.hxx
index af43e37cc123..4e4b178dbd52 100644
--- a/sc/inc/validat.hxx
+++ b/sc/inc/validat.hxx
@@ -59,7 +59,7 @@ enum ScValidErrorStyle
 
 // Entry for validation (only one condition exists)
 
-class SC_DLLPUBLIC ScValidationData final : public ScConditionEntry
+class SAL_DLLPUBLIC_RTTI ScValidationData final : public ScConditionEntry
 {
 private:
     sal_uInt32 nKey;               // index in attributes
@@ -85,33 +85,33 @@ private:
     DECL_STATIC_LINK(ScValidationData, InstallLOKNotifierHdl, void*, 
vcl::ILibreOfficeKitNotifier*);
 
 public:
-            ScValidationData( ScValidationMode eMode, ScConditionMode eOper,
+    SC_DLLPUBLIC ScValidationData( ScValidationMode eMode, ScConditionMode 
eOper,
                                 const OUString& rExpr1, const OUString& rExpr2,
                                 ScDocument& rDocument, const ScAddress& rPos,
                                 const OUString& rExprNmsp1 = OUString(), const 
OUString& rExprNmsp2 = OUString(),
                                 formula::FormulaGrammar::Grammar eGrammar1 = 
formula::FormulaGrammar::GRAM_DEFAULT,
                                 formula::FormulaGrammar::Grammar eGrammar2 = 
formula::FormulaGrammar::GRAM_DEFAULT );
-            ScValidationData( ScValidationMode eMode, ScConditionMode eOper,
+    SC_DLLPUBLIC ScValidationData( ScValidationMode eMode, ScConditionMode 
eOper,
                                 const ScTokenArray* pArr1, const ScTokenArray* 
pArr2,
                                 ScDocument& rDocument, const ScAddress& rPos );
-            ScValidationData( const ScValidationData& r );
+    SC_DLLPUBLIC ScValidationData( const ScValidationData& r );
             ScValidationData( ScDocument& rDocument, const ScValidationData& r 
);
-    virtual ~ScValidationData() override;
+    SC_DLLPUBLIC virtual ~ScValidationData() override;
 
     ScValidationData* Clone() const     // real copy
                     { return new ScValidationData( *GetDocument(), *this ); }
     ScValidationData* Clone(ScDocument* pNew) const override
                     { return new ScValidationData( *pNew, *this ); }
 
-    void            ResetInput();
-    void            ResetError();
-    void            SetInput( const OUString& rTitle, const OUString& rMsg );
-    void            SetError( const OUString& rTitle, const OUString& rMsg,
+    SC_DLLPUBLIC void ResetInput();
+    SC_DLLPUBLIC void ResetError();
+    SC_DLLPUBLIC void SetInput( const OUString& rTitle, const OUString& rMsg );
+    SC_DLLPUBLIC void SetError( const OUString& rTitle, const OUString& rMsg,
                                 ScValidErrorStyle eStyle );
 
     bool            GetInput( OUString& rTitle, OUString& rMsg ) const
                         { rTitle = aInputTitle; rMsg = aInputMessage; return 
bShowInput; }
-    bool            GetErrMsg( OUString& rTitle, OUString& rMsg, 
ScValidErrorStyle& rStyle ) const;
+    SC_DLLPUBLIC bool GetErrMsg( OUString& rTitle, OUString& rMsg, 
ScValidErrorStyle& rStyle ) const;
 
     bool            HasErrMsg() const       { return bShowError; }
 
@@ -128,7 +128,7 @@ public:
         @descr  Fills the list only, if this is a list validation and 
IsShowList() is enabled.
         @param rStrings  (out-param) The string list to fill with list 
validation entries.
         @return  true = rStrings has been filled with at least one entry. */
-    bool FillSelectionList(std::vector<ScTypedStrData>& rStrings, const 
ScAddress& rPos) const;
+    SC_DLLPUBLIC bool FillSelectionList(std::vector<ScTypedStrData>& rStrings, 
const ScAddress& rPos) const;
 
     //  with string: during input, with cell: for detective / RC_FORCED
     bool IsDataValid(
@@ -154,7 +154,7 @@ public:
         const OUString& rTest, const ScPatternAttr& rPattern,
         const ScAddress& rPos, const CustomValidationPrivateAccess& ) const;
 
-    bool IsDataValid( ScRefCellValue& rCell, const ScAddress& rPos ) const;
+    SC_DLLPUBLIC bool IsDataValid( ScRefCellValue& rCell, const ScAddress& 
rPos ) const;
 
     /** Test, if formula is valid. */
     bool isFormulaResultsValidatable(const OUString& rTest, const ScAddress& 
rPos, SvNumberFormatter* pFormatter,
@@ -168,7 +168,7 @@ public:
     sal_uInt32      GetKey() const          { return nKey; }
     void            SetKey(sal_uInt32 nNew) { nKey = nNew; }    // only if not 
inserted!
 
-    bool            EqualEntries( const ScValidationData& r ) const;    // for 
undo
+    SC_DLLPUBLIC bool EqualEntries( const ScValidationData& r ) const;    // 
for undo
 
     //  sort (using std::set) by index
     bool operator < ( const ScValidationData& r ) const { return nKey <  
r.nKey; }
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
index 1b1f4164db06..e60b9f2b94e8 100644
--- a/sc/source/ui/inc/docsh.hxx
+++ b/sc/source/ui/inc/docsh.hxx
@@ -77,7 +77,7 @@ extern "C" SAL_DLLPUBLIC_EXPORT bool TestImportDBF(SvStream 
&rStream);
 #define SC_PF_TESTMERGE     2
 #define SC_PF_WHOLEROWS     4
 
-class SC_DLLPUBLIC ScDocShell final: public SfxObjectShell, public SfxListener
+class SAL_DLLPUBLIC_RTTI ScDocShell final: public SfxObjectShell, public 
SfxListener
 {
     std::shared_ptr<ScDocument> m_pDocument;
 
@@ -113,14 +113,14 @@ class SC_DLLPUBLIC ScDocShell final: public 
SfxObjectShell, public SfxListener
     css::uno::Reference<css::script::vba::XVBAScriptListener>   m_xVBAListener;
     css::uno::Reference<css::datatransfer::XTransferable2>      m_xClipData;
 
-    SAL_DLLPRIVATE void          InitItems();
-    SAL_DLLPRIVATE void          DoEnterHandler();
-    SAL_DLLPRIVATE void          InitOptions(bool bForLoading);
-    SAL_DLLPRIVATE void          ResetDrawObjectShell();
+    void          InitItems();
+    void          DoEnterHandler();
+    void          InitOptions(bool bForLoading);
+    void          ResetDrawObjectShell();
 
     /** Do things that need to be done before saving to our own format and
         necessary clean ups in dtor. */
-    class SAL_DLLPRIVATE PrepareSaveGuard
+    class PrepareSaveGuard
     {
         public:
             explicit    PrepareSaveGuard( ScDocShell & rDocShell );
@@ -129,38 +129,39 @@ class SC_DLLPUBLIC ScDocShell final: public 
SfxObjectShell, public SfxListener
                         ScDocShell & mrDocShell;
     };
 
-    SAL_DLLPRIVATE bool          LoadXML( SfxMedium* pMedium, const 
css::uno::Reference< css::embed::XStorage >& );
-    SAL_DLLPRIVATE bool          SaveXML( SfxMedium* pMedium, const 
css::uno::Reference< css::embed::XStorage >& );
-    SAL_DLLPRIVATE SCTAB         GetSaveTab();
+    bool          LoadXML( SfxMedium* pMedium, const css::uno::Reference< 
css::embed::XStorage >& );
+    bool          SaveXML( SfxMedium* pMedium, const css::uno::Reference< 
css::embed::XStorage >& );
+    SCTAB         GetSaveTab();
 
     friend bool TestImportDBF(SvStream &rStream);
 
-    SAL_DLLPRIVATE ErrCode       DBaseImport( const OUString& rFullFileName, 
rtl_TextEncoding eCharSet,
+    ErrCode       DBaseImport( const OUString& rFullFileName, rtl_TextEncoding 
eCharSet,
                                              std::map<SCCOL, ScColWidthParam>& 
aColWidthParam, ScFlatBoolRowSegments& rRowHeightsRecalc );
-    SAL_DLLPRIVATE ErrCodeMsg    DBaseExport(
+    ErrCodeMsg    DBaseExport(
                                     const OUString& rFullFileName, 
rtl_TextEncoding eCharSet, bool& bHasMemo );
 
-    SAL_DLLPRIVATE static bool       MoveFile( const INetURLObject& rSource, 
const INetURLObject& rDest );
-    SAL_DLLPRIVATE static bool       KillFile( const INetURLObject& rURL );
-    SAL_DLLPRIVATE static bool       IsDocument( const INetURLObject& rURL );
+    static bool       MoveFile( const INetURLObject& rSource, const 
INetURLObject& rDest );
+    static bool       KillFile( const INetURLObject& rURL );
+    static bool       IsDocument( const INetURLObject& rURL );
 
-    SAL_DLLPRIVATE void          LockPaint_Impl(bool bDoc);
-    SAL_DLLPRIVATE void          UnlockPaint_Impl(bool bDoc);
-    SAL_DLLPRIVATE void          LockDocument_Impl(sal_uInt16 nNew);
-    SAL_DLLPRIVATE void          UnlockDocument_Impl(sal_uInt16 nNew);
+    void          LockPaint_Impl(bool bDoc);
+    void          UnlockPaint_Impl(bool bDoc);
+    void          LockDocument_Impl(sal_uInt16 nNew);
+    void          UnlockDocument_Impl(sal_uInt16 nNew);
 
-    SAL_DLLPRIVATE void          EnableSharedSettings( bool bEnable );
-    SAL_DLLPRIVATE css::uno::Reference< css::frame::XModel > 
LoadSharedDocument();
+    void          EnableSharedSettings( bool bEnable );
+    css::uno::Reference< css::frame::XModel > LoadSharedDocument();
 
-    SAL_DLLPRIVATE void          UseSheetSaveEntries();
+    void          UseSheetSaveEntries();
 
-    SAL_DLLPRIVATE std::unique_ptr<ScDocFunc> CreateDocFunc();
+    std::unique_ptr<ScDocFunc> CreateDocFunc();
 
     virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
 
 public:
                     SFX_DECL_INTERFACE(SCID_DOC_SHELL)
-                    SFX_DECL_OBJECTFACTORY();
+   SC_DLLPUBLIC static SfxObjectFactory&    Factory();                         
         \
+   virtual SfxObjectFactory&   GetFactory() const override { return Factory(); 
}
 
 private:
     /// SfxInterface initializer.
@@ -168,11 +169,10 @@ private:
 
 public:
     explicit        ScDocShell( const ScDocShell& rDocShell ) = delete;
-    explicit        ScDocShell( const SfxModelFlags i_nSfxCreationFlags = 
SfxModelFlags::EMBEDDED_OBJECT, const std::shared_ptr<ScDocument>& pDoc = {} );
+    SC_DLLPUBLIC explicit ScDocShell( const SfxModelFlags i_nSfxCreationFlags 
= SfxModelFlags::EMBEDDED_OBJECT, const std::shared_ptr<ScDocument>& pDoc = {} 
);
                     virtual ~ScDocShell() override;
 
-    virtual SfxUndoManager*
-                    GetUndoManager() override;
+    SC_DLLPUBLIC virtual SfxUndoManager* GetUndoManager() override;
 
     virtual void    FillClass( SvGlobalName * pClassName,
                                SotClipboardFormatId * pFormat,
@@ -200,7 +200,7 @@ public:
 
     virtual void    Draw(OutputDevice *, const JobSetup & rSetup, sal_uInt16 
nAspect, bool bOutputForScreen) override;
 
-    virtual void    SetVisArea( const tools::Rectangle & rVisArea ) override;
+    SC_DLLPUBLIC virtual void SetVisArea( const tools::Rectangle & rVisArea ) 
override;
 
     virtual void    TerminateEditing() override;
 
@@ -215,7 +215,7 @@ public:
 
     virtual std::shared_ptr<SfxDocumentInfoDialog> 
CreateDocumentInfoDialog(weld::Window* pParent, const SfxItemSet &rSet) 
override;
 
-    void    GetDocStat( ScDocStat& rDocStat );
+    SC_DLLPUBLIC void GetDocStat( ScDocStat& rDocStat );
 
     const ScDocument& GetDocument() const { return *m_pDocument; }
     ScDocument&     GetDocument()   { return *m_pDocument; }
@@ -262,13 +262,13 @@ public:
     void            NotifyStyle( const SfxStyleSheetHint& rHint );
     void            DoAutoStyle( const ScRange& rRange, const OUString& rStyle 
);
 
-    static weld::Window*  GetActiveDialogParent();
+    SC_DLLPUBLIC static weld::Window*  GetActiveDialogParent();
     void            ErrorMessage(TranslateId pGlobStrId);
     bool            IsEditable() const;
 
     bool            AdjustRowHeight( SCROW nStartRow, SCROW nEndRow, SCTAB 
nTab );
-    void            UpdateAllRowHeights( const ScMarkData* pTabMark = nullptr 
);
-    void            UpdateAllRowHeights(const bool bOnlyUsedRows);
+    SC_DLLPUBLIC void UpdateAllRowHeights( const ScMarkData* pTabMark = 
nullptr );
+    SC_DLLPUBLIC void UpdateAllRowHeights(const bool bOnlyUsedRows);
     void            UpdatePendingRowHeights( SCTAB nUpdateTab, bool bBefore = 
false );
 
     void            RefreshPivotTables( const ScRange& rSource );
@@ -279,14 +279,14 @@ public:
                                     ScMarkData& rMark, bool bRecord = true);
     void            ModifyScenario(SCTAB nTab, const OUString& rName, const 
OUString& rComment,
                                     const Color& rColor, ScScenarioFlags 
nFlags);
-    bool TransferTab( ScDocShell& rSrcDocShell, SCTAB nSrcPos,
+    SC_DLLPUBLIC bool TransferTab( ScDocShell& rSrcDocShell, SCTAB nSrcPos,
                                 SCTAB nDestPos, bool bInsertNew,
                                 bool bNotifyAndPaint );
 
     bool            MoveTable( SCTAB nSrcTab, SCTAB nDestTab, bool bCopy, bool 
bRecord );
 
-    void            DoRecalc( bool bApi );
-    void            DoHardRecalc();
+    SC_DLLPUBLIC void DoRecalc( bool bApi );
+    SC_DLLPUBLIC void DoHardRecalc();
 
     void            UpdateOle(const ScViewData& rViewData, bool bSnapSize = 
false);
     bool            IsOle() const;
@@ -299,13 +299,13 @@ public:
 
     virtual void    ReconnectDdeLink(SfxObjectShell& rServer) override;
     void            UpdateLinks() override;
-    void            SetInitialLinkUpdate( const SfxMedium* pMedium );
+    SC_DLLPUBLIC void SetInitialLinkUpdate( const SfxMedium* pMedium );
     void            AllowLinkUpdate();
-    void            ReloadAllLinks();
+    SC_DLLPUBLIC void ReloadAllLinks();
     void            ReloadTabLinks();
     ScLkUpdMode     GetLinkUpdateModeState() const;
 
-    void            SetFormulaOptions( const ScFormulaOptions& rOpt, bool 
bForLoading = false );
+    SC_DLLPUBLIC void SetFormulaOptions( const ScFormulaOptions& rOpt, bool 
bForLoading = false );
     /**
      * Called when the Options dialog is dismissed with the OK button, to
      * handle potentially conflicting option settings.
@@ -319,12 +319,12 @@ public:
     void            PostPaint( SCCOL nStartCol, SCROW nStartRow, SCTAB 
nStartTab,
                             SCCOL nEndCol, SCROW nEndRow, SCTAB nEndTab, 
PaintPartFlags nPart,
                             sal_uInt16 nExtFlags = 0, tools::Long 
nMaxWidthAffectedHint = -1 );
-    void            PostPaint( const ScRangeList& rRanges, PaintPartFlags 
nPart, sal_uInt16 nExtFlags = 0,
+    SC_DLLPUBLIC void PostPaint( const ScRangeList& rRanges, PaintPartFlags 
nPart, sal_uInt16 nExtFlags = 0,
                                tools::Long nMaxWidthAffectedHint = -1 );
 
     void            PostPaintCell( SCCOL nCol, SCROW nRow, SCTAB nTab, 
tools::Long nMaxWidthAffectedHint = -1);
     void            PostPaintCell( const ScAddress& rPos, tools::Long 
nMaxWidthAffectedHint = -1);
-    void            PostPaintGridAll();
+    SC_DLLPUBLIC void PostPaintGridAll();
     void            PostPaintExtras();
 
     bool            IsPaintLocked() const { return m_pPaintLockData != 
nullptr; }
@@ -335,25 +335,25 @@ public:
                                                        SCCOL nEndCol, SCROW 
nEndRow, SCTAB nEndTab );
     void            UpdatePaintExt( sal_uInt16& rExtFlags, const ScRange& 
rRange );
 
-    void            SetDocumentModified();
+    SC_DLLPUBLIC void SetDocumentModified();
     void            SetDrawModified();
 
-    void            LockPaint();
-    void            UnlockPaint();
+    SC_DLLPUBLIC void LockPaint();
+    SC_DLLPUBLIC void UnlockPaint();
     sal_uInt16          GetLockCount() const { return m_nDocumentLock;}
     void            SetLockCount(sal_uInt16 nNew);
 
     void            LockDocument();
     void            UnlockDocument();
 
-    DECL_DLLPRIVATE_LINK( DialogClosedHdl, sfx2::FileDialogHelper*, void );
-    DECL_DLLPRIVATE_LINK( ReloadAllLinksHdl, weld::Button&, void );
+    DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper*, void );
+    DECL_LINK( ReloadAllLinksHdl, weld::Button&, void );
 
     virtual SfxStyleSheetBasePool*  GetStyleSheetPool() override;
 
     void            SetInplace( bool bInplace );
     bool            IsEmpty() const { return m_bIsEmpty; }
-    void            SetEmpty(bool bSet);
+    SC_DLLPUBLIC void SetEmpty(bool bSet);
 
     bool            IsInUndo() const                { return m_bIsInUndo; }
     void            SetInUndo(bool bSet);
@@ -378,7 +378,7 @@ public:
 
     SfxBindings*    GetViewBindings();
 
-    ScTabViewShell* GetBestViewShell( bool bOnlyVisible = true );
+    SC_DLLPUBLIC ScTabViewShell* GetBestViewShell( bool bOnlyVisible = true );
 
     void            SetDocumentModifiedPending( bool bVal )
                         { m_bDocumentModifiedPending = bVal; }
@@ -395,8 +395,8 @@ public:
 
     OutputDevice*   GetRefDevice(); // WYSIWYG: Printer, otherwise 
VirtualDevice...
 
-    static ScViewData* GetViewData();
-    static SCTAB       GetCurTab();
+    SC_DLLPUBLIC static ScViewData* GetViewData();
+    SC_DLLPUBLIC static SCTAB       GetCurTab();
 
     static ScDocShell* GetShellByNum( sal_uInt16 nDocNo );
     static OUString   GetOwnFilterName();
@@ -409,7 +409,7 @@ public:
     static bool       HasAutomaticTableName( std::u16string_view rFilter );
     static void       LOKCommentNotify(LOKCommentNotificationType nType, const 
ScDocument& rDocument, const ScAddress& rPos, const ScPostIt* pNote);
 
-    DECL_DLLPRIVATE_LINK( RefreshDBDataHdl, Timer*, void );
+    DECL_LINK( RefreshDBDataHdl, Timer*, void );
 
     void            BeforeXMLLoading();
     void            AfterXMLLoading(bool bRet);
@@ -431,7 +431,7 @@ public:
 
     void SnapVisArea( tools::Rectangle& rRect ) const;
 
-    void RegisterAutomationWorkbookObject(css::uno::Reference< 
ooo::vba::excel::XWorkbook > const& xWorkbook);
+    SC_DLLPUBLIC void RegisterAutomationWorkbookObject(css::uno::Reference< 
ooo::vba::excel::XWorkbook > const& xWorkbook);
 
     ScModelObj* GetModel() const { return 
static_cast<ScModelObj*>(SfxObjectShell::GetModel().get()); }
 
diff --git a/sc/source/ui/inc/prevwsh.hxx b/sc/source/ui/inc/prevwsh.hxx
-e 
... etc. - the rest is truncated

Reply via email to