summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--codemaker/source/cppumaker/cpputype.cxx8
-rw-r--r--include/comphelper/embeddedobjectcontainer.hxx2
-rw-r--r--include/sal/types.h8
-rw-r--r--include/svl/undo.hxx2
4 files changed, 14 insertions, 6 deletions
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index 3e2772957f90..64ac18b809b8 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -1072,7 +1072,7 @@ InterfaceType::InterfaceType(
}
void InterfaceType::dumpDeclaration(FileStream & out) {
- out << "\nclass SAL_NO_VTABLE " << id_;
+ out << "\nclass SAL_NO_VTABLE SAL_DLLPUBLIC_RTTI " << id_;
for (std::vector< unoidl::AnnotatedReference >::const_iterator i(
entity_->getDirectMandatoryBases().begin());
i != entity_->getDirectMandatoryBases().end(); ++i)
@@ -1812,7 +1812,7 @@ private:
void PlainStructType::dumpDeclaration(FileStream & out) {
out << "\n#ifdef SAL_W32\n# pragma pack(push, 8)\n#endif\n\n" << indent()
- << "struct " << id_;
+ << "struct SAL_DLLPUBLIC_RTTI " << id_;
OUString base(entity_->getDirectBase());
if (!base.isEmpty()) {
out << ": public " << codemaker::cpp::scopedCppName(u2b(base));
@@ -2198,7 +2198,7 @@ private:
void PolyStructType::dumpDeclaration(FileStream & out) {
out << "\n#ifdef SAL_W32\n# pragma pack(push, 8)\n#endif\n\n" << indent();
dumpTemplateHead(out);
- out << "struct " << id_ << " {\n";
+ out << "struct SAL_DLLPUBLIC_RTTI " << id_ << " {\n";
inc();
out << indent() << "inline " << id_ << "();\n";
if (!entity_->getMembers().empty()) {
@@ -3127,7 +3127,7 @@ void EnumType::addComprehensiveGetCppuTypeIncludes(
void EnumType::dumpDeclaration(FileStream& o)
{
- o << "\nenum " << id_ << "\n{\n";
+ o << "\nenum SAL_DLLPUBLIC_RTTI " << id_ << "\n{\n";
inc();
for (std::vector< unoidl::EnumTypeEntity::Member >::const_iterator i(
diff --git a/include/comphelper/embeddedobjectcontainer.hxx b/include/comphelper/embeddedobjectcontainer.hxx
index 2c8e25f5e8a5..842a3e7f804c 100644
--- a/include/comphelper/embeddedobjectcontainer.hxx
+++ b/include/comphelper/embeddedobjectcontainer.hxx
@@ -36,7 +36,7 @@ namespace comphelper
class EmbeddedObjectContainer;
/** Helper interface to give access to some common object which replace the SfxObjectShell
*/
- class SAL_NO_VTABLE IEmbeddedHelper
+ class SAL_NO_VTABLE SAL_DLLPUBLIC_RTTI IEmbeddedHelper
{
public:
virtual EmbeddedObjectContainer& getEmbeddedObjectContainer() const = 0;
diff --git a/include/sal/types.h b/include/sal/types.h
index e77407b8355b..3d75f67ff920 100644
--- a/include/sal/types.h
+++ b/include/sal/types.h
@@ -249,6 +249,7 @@ typedef void * sal_Handle;
#endif // defined(_MSC_VER)
# define SAL_DLLPRIVATE
# define SAL_DLLPUBLIC_TEMPLATE
+# define SAL_DLLPUBLIC_RTTI
# define SAL_CALL __cdecl
# define SAL_CALL_ELLIPSE __cdecl
#elif defined SAL_UNX
@@ -259,12 +260,18 @@ typedef void * sal_Handle;
# define SAL_DLLPUBLIC_IMPORT __attribute__ ((visibility("hidden")))
# define SAL_DLLPRIVATE __attribute__ ((visibility("hidden")))
# define SAL_DLLPUBLIC_TEMPLATE __attribute__ ((visibility("hidden")))
+# define SAL_DLLPUBLIC_RTTI
# else
# define SAL_DLLPUBLIC_EXPORT __attribute__ ((visibility("default")))
# define SAL_JNI_EXPORT __attribute__ ((visibility("default")))
# define SAL_DLLPUBLIC_IMPORT __attribute__ ((visibility("default")))
# define SAL_DLLPRIVATE __attribute__ ((visibility("hidden")))
# define SAL_DLLPUBLIC_TEMPLATE __attribute__ ((visibility("default")))
+# if defined __clang__
+# define SAL_DLLPUBLIC_RTTI __attribute__ ((visibility("default")))
+# else
+# define SAL_DLLPUBLIC_RTTI
+# endif
# endif
# else
# define SAL_DLLPUBLIC_EXPORT
@@ -272,6 +279,7 @@ typedef void * sal_Handle;
# define SAL_DLLPUBLIC_IMPORT
# define SAL_DLLPRIVATE
# define SAL_DLLPUBLIC_TEMPLATE
+# define SAL_DLLPUBLIC_RTTI
# endif
# define SAL_CALL
# define SAL_CALL_ELLIPSE
diff --git a/include/svl/undo.hxx b/include/svl/undo.hxx
index 41fe58841163..92a9907db0f2 100644
--- a/include/svl/undo.hxx
+++ b/include/svl/undo.hxx
@@ -188,7 +188,7 @@ protected:
namespace svl
{
- class SAL_NO_VTABLE IUndoManager
+ class SAL_NO_VTABLE SAL_DLLPUBLIC_RTTI IUndoManager
{
public:
static bool const CurrentLevel = true;