summaryrefslogtreecommitdiff
path: root/salhelper/source
diff options
context:
space:
mode:
Diffstat (limited to 'salhelper/source')
-rw-r--r--salhelper/source/condition.cxx142
-rw-r--r--salhelper/source/dynload.cxx110
-rw-r--r--salhelper/source/gcc3.map73
-rw-r--r--salhelper/source/gcc3os2.map73
-rw-r--r--salhelper/source/makefile.mk82
-rw-r--r--salhelper/source/msci.map38
-rwxr-xr-xsalhelper/source/simplereferenceobject.cxx74
-rw-r--r--salhelper/source/sols.map76
8 files changed, 668 insertions, 0 deletions
diff --git a/salhelper/source/condition.cxx b/salhelper/source/condition.cxx
new file mode 100644
index 000000000000..87f0c2e50509
--- /dev/null
+++ b/salhelper/source/condition.cxx
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include <salhelper/condition.hxx>
+#include <osl/time.h>
+
+
+using namespace salhelper;
+
+
+/******************************************************************
+ * *
+ * Condition *
+ * *
+ ******************************************************************/
+
+Condition::Condition(osl::Mutex& aMutex)
+ : m_aMutex(aMutex),
+ m_aCondition(osl_createCondition())
+{
+}
+
+
+Condition::~Condition()
+{
+ osl_destroyCondition(m_aCondition);
+}
+
+
+/******************************************************************
+ * *
+ * ConditionModifier *
+ * *
+ ******************************************************************/
+
+ConditionModifier::ConditionModifier(Condition& aCond)
+ : m_aCond(aCond)
+{
+ m_aCond.m_aMutex.acquire();
+}
+
+
+ConditionModifier::~ConditionModifier()
+{
+ if(m_aCond.applies())
+ osl_setCondition(m_aCond.m_aCondition);
+
+ m_aCond.m_aMutex.release();
+}
+
+
+
+/******************************************************************
+ * *
+ * ConditionWaiter *
+ * *
+ ******************************************************************/
+
+ConditionWaiter::timedout::timedout() {}
+
+ConditionWaiter::timedout::timedout(timedout const &) {}
+
+ConditionWaiter::timedout::~timedout() {}
+
+ConditionWaiter::timedout &
+ConditionWaiter::timedout::operator =(timedout const &) { return *this; }
+
+ConditionWaiter::ConditionWaiter(Condition& aCond)
+ : m_aCond(aCond)
+{
+ while(true) {
+ osl_waitCondition(m_aCond.m_aCondition,0);
+ m_aCond.m_aMutex.acquire();
+
+ if(m_aCond.applies())
+ break;
+ else {
+ osl_resetCondition(m_aCond.m_aCondition);
+ m_aCond.m_aMutex.release();
+ }
+ }
+}
+
+
+ConditionWaiter::ConditionWaiter(Condition& aCond,sal_uInt32 milliSec)
+ throw(
+ ConditionWaiter::timedout
+ )
+ : m_aCond(aCond)
+{
+ TimeValue aTime;
+ aTime.Seconds = milliSec / 1000;
+ aTime.Nanosec = 1000000 * ( milliSec % 1000 );
+
+ while(true) {
+ if( osl_waitCondition(m_aCond.m_aCondition,&aTime) ==
+ osl_cond_result_timeout )
+ throw timedout();
+
+ m_aCond.m_aMutex.acquire();
+
+ if(m_aCond.applies())
+ break;
+ else {
+ osl_resetCondition(m_aCond.m_aCondition);
+ m_aCond.m_aMutex.release();
+ }
+ }
+}
+
+
+ConditionWaiter::~ConditionWaiter()
+{
+ if(! m_aCond.applies())
+ osl_resetCondition(m_aCond.m_aCondition);
+ m_aCond.m_aMutex.release();
+}
diff --git a/salhelper/source/dynload.cxx b/salhelper/source/dynload.cxx
new file mode 100644
index 000000000000..09a228719286
--- /dev/null
+++ b/salhelper/source/dynload.cxx
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <salhelper/dynload.hxx>
+#include <rtl/ustrbuf.hxx>
+
+namespace salhelper
+{
+
+typedef void* (SAL_CALL *ApiInitFunction) (void);
+
+ORealDynamicLoader::ORealDynamicLoader(ORealDynamicLoader ** ppSetToZeroInDestructor_,
+ const rtl::OUString& moduleName,
+ const rtl::OUString& initFunction,
+ void* pApi,
+ oslModule pModule)
+ : m_pApi(pApi)
+ , m_refCount(1)
+ , m_pModule(pModule)
+ , m_strModuleName(moduleName)
+ , m_strInitFunction(initFunction)
+ , ppSetToZeroInDestructor( ppSetToZeroInDestructor_ )
+{
+}
+
+ORealDynamicLoader* ORealDynamicLoader::newInstance(ORealDynamicLoader ** ppSetToZeroInDestructor,
+ const rtl::OUString& moduleName,
+ const rtl::OUString& initFunction)
+{
+ ApiInitFunction initFunc;
+ oslModule pModule = osl_loadModule(moduleName.pData, SAL_LOADMODULE_DEFAULT);
+
+ if ( !pModule )
+ {
+ return NULL;
+ }
+
+ initFunc = (ApiInitFunction)osl_getFunctionSymbol(
+ pModule, initFunction.pData);
+
+ if ( !initFunc )
+ {
+ osl_unloadModule(pModule);
+ return NULL;
+ }
+
+ return(new ORealDynamicLoader(ppSetToZeroInDestructor, moduleName,
+ initFunction,
+ initFunc(),
+ pModule));
+}
+
+ORealDynamicLoader::~ORealDynamicLoader()
+{
+ // set the address to zero
+ if( ppSetToZeroInDestructor )
+ *ppSetToZeroInDestructor = 0;
+
+ if (m_pModule)
+ {
+ osl_unloadModule(m_pModule);
+ m_pModule = NULL;
+ }
+}
+
+sal_uInt32 ORealDynamicLoader::acquire()
+{
+ return ++m_refCount;
+}
+
+sal_uInt32 ORealDynamicLoader::release()
+{
+ sal_uInt32 nRet = --m_refCount;
+ if( nRet == 0 )
+ delete this;
+ return nRet;
+}
+
+
+void* ORealDynamicLoader::getApi() const
+{
+ return m_pApi;
+}
+
+} // namespace salhelper
+
diff --git a/salhelper/source/gcc3.map b/salhelper/source/gcc3.map
new file mode 100644
index 000000000000..cfd3b7e40bf2
--- /dev/null
+++ b/salhelper/source/gcc3.map
@@ -0,0 +1,73 @@
+UDK_3_0_0 { # should have been UDK_3.0
+ global:
+ GetVersionInfo;
+ _ZN9salhelper18ORealDynamicLoader11newInstanceEPPS0_RKN3rtl8OUStringES6_;
+ _ZN9salhelper18ORealDynamicLoader7acquireEv;
+ _ZN9salhelper18ORealDynamicLoader7releaseEv;
+ _ZN9salhelper18ORealDynamicLoaderC1EPPS0_RKN3rtl8OUStringES6_PvS7_;
+ _ZN9salhelper18ORealDynamicLoaderC2EPPS0_RKN3rtl8OUStringES6_PvS7_;
+ _ZN9salhelper18ORealDynamicLoaderD0Ev;
+ _ZN9salhelper18ORealDynamicLoaderD1Ev;
+ _ZN9salhelper18ORealDynamicLoaderD2Ev;
+ _ZN9salhelper21SimpleReferenceObjectD0Ev;
+ _ZN9salhelper21SimpleReferenceObjectD1Ev;
+ _ZN9salhelper21SimpleReferenceObjectD2Ev;
+ _ZN9salhelper21SimpleReferenceObjectdlEPv;
+
+ # Introducing a question mark at the end because of
+ # marginal type discrepancy there is a difference in the
+ # mangled name between Linux and Mac OS X, see #i69351#
+ _ZN9salhelper21SimpleReferenceObjectnwE?; # salhelper::SimpleReferenceObject::operator new (std::size_t)
+
+ _ZNK9salhelper18ORealDynamicLoader6getApiEv;
+ # _ZTIN9salhelper18ORealDynamicLoaderE;
+ # _ZTSN9salhelper18ORealDynamicLoaderE;
+ _ZTVN9salhelper18ORealDynamicLoaderE;
+ # _ZTIN9salhelper21SimpleReferenceObjectE;
+ # _ZTSN9salhelper21SimpleReferenceObjectE;
+ _ZTVN9salhelper21SimpleReferenceObjectE;
+
+ local:
+ *;
+};
+
+UDK_3.1 {
+ global:
+ _ZN9salhelper21SimpleReferenceObjectdlEPvRKSt9nothrow_t;
+
+ # Introducing a wildcard right in the middle because due to
+ # marginal type discrepancy there is a difference in the
+ # mangled name between Linux and Mac OS X see #i69351#
+ _ZN9salhelper21SimpleReferenceObjectnwE?RKSt9nothrow_t; # salhelper::SimpleReferenceObject::operator new (std::size_t, std::nothrow_t const&)
+
+ _ZN9salhelper9ConditionC1ERN3osl5MutexE;
+ _ZN9salhelper9ConditionC2ERN3osl5MutexE;
+ _ZN9salhelper9ConditionD0Ev;
+ _ZN9salhelper9ConditionD1Ev;
+ _ZN9salhelper9ConditionD2Ev;
+ # _ZTIN9salhelper9ConditionE;
+ # _ZTIS9salhelper9ConditionE;
+
+ _ZN9salhelper17ConditionModifierC1ERNS_9ConditionE;
+ _ZN9salhelper17ConditionModifierC2ERNS_9ConditionE;
+ _ZN9salhelper17ConditionModifierD1Ev;
+ _ZN9salhelper17ConditionModifierD2Ev;
+
+ _ZN9salhelper15ConditionWaiterC1ERNS_9ConditionE;
+ _ZN9salhelper15ConditionWaiterC1ERNS_9ConditionE?;
+ _ZN9salhelper15ConditionWaiterC2ERNS_9ConditionE;
+ _ZN9salhelper15ConditionWaiterC2ERNS_9ConditionE?;
+ _ZN9salhelper15ConditionWaiterD1Ev;
+ _ZN9salhelper15ConditionWaiterD2Ev;
+
+ _ZN9salhelper15ConditionWaiter8timedoutaSERKS1_;
+ _ZN9salhelper15ConditionWaiter8timedoutC1ERKS1_;
+ _ZN9salhelper15ConditionWaiter8timedoutC1Ev;
+ _ZN9salhelper15ConditionWaiter8timedoutC2ERKS1_;
+ _ZN9salhelper15ConditionWaiter8timedoutC2Ev;
+ _ZN9salhelper15ConditionWaiter8timedoutD0Ev;
+ _ZN9salhelper15ConditionWaiter8timedoutD1Ev;
+ _ZN9salhelper15ConditionWaiter8timedoutD2Ev;
+ # _ZTIN9salhelper15ConditionWaiter8timedoutE;
+ # _ZTSN9salhelper15ConditionWaiter8timedoutE;
+} UDK_3_0_0;
diff --git a/salhelper/source/gcc3os2.map b/salhelper/source/gcc3os2.map
new file mode 100644
index 000000000000..b3fec5d45a21
--- /dev/null
+++ b/salhelper/source/gcc3os2.map
@@ -0,0 +1,73 @@
+UDK_3_0_0 { # should have been UDK_3.0
+ global:
+ GetVersionInfo;
+ _ZN9salhelper18ORealDynamicLoader11newInstanceEPPS0_RKN3rtl8OUStringES6_;
+ _ZN9salhelper18ORealDynamicLoader7acquireEv;
+ _ZN9salhelper18ORealDynamicLoader7releaseEv;
+ _ZN9salhelper18ORealDynamicLoaderC1EPPS0_RKN3rtl8OUStringES6_PvS7_;
+ _ZN9salhelper18ORealDynamicLoaderC2EPPS0_RKN3rtl8OUStringES6_PvS7_;
+ _ZN9salhelper18ORealDynamicLoaderD0Ev;
+ _ZN9salhelper18ORealDynamicLoaderD1Ev;
+ _ZN9salhelper18ORealDynamicLoaderD2Ev;
+ _ZN9salhelper21SimpleReferenceObjectD0Ev;
+ _ZN9salhelper21SimpleReferenceObjectD1Ev;
+ _ZN9salhelper21SimpleReferenceObjectD2Ev;
+ _ZN9salhelper21SimpleReferenceObjectdlEPv;
+
+ # Introducing a question mark at the end because of
+ # marginal type discrepancy there is a difference in the
+ # mangled name between Linux and Mac OS X, see #i69351#
+ _ZN9salhelper21SimpleReferenceObjectnwEj; # salhelper::SimpleReferenceObject::operator new (std::size_t)
+
+ _ZNK9salhelper18ORealDynamicLoader6getApiEv;
+ # _ZTIN9salhelper18ORealDynamicLoaderE;
+ # _ZTSN9salhelper18ORealDynamicLoaderE;
+ _ZTVN9salhelper18ORealDynamicLoaderE;
+ # _ZTIN9salhelper21SimpleReferenceObjectE;
+ # _ZTSN9salhelper21SimpleReferenceObjectE;
+ _ZTVN9salhelper21SimpleReferenceObjectE;
+
+ local:
+ *;
+};
+
+UDK_3.1 {
+ global:
+ _ZN9salhelper21SimpleReferenceObjectdlEPvRKSt9nothrow_t;
+
+ # Introducing a wildcard right in the middle because due to
+ # marginal type discrepancy there is a difference in the
+ # mangled name between Linux and Mac OS X see #i69351#
+ _ZN9salhelper21SimpleReferenceObjectnwEjRKSt9nothrow_t; # salhelper::SimpleReferenceObject::operator new (std::size_t, std::nothrow_t const&)
+
+ _ZN9salhelper9ConditionC1ERN3osl5MutexE;
+ _ZN9salhelper9ConditionC2ERN3osl5MutexE;
+ _ZN9salhelper9ConditionD0Ev;
+ _ZN9salhelper9ConditionD1Ev;
+ _ZN9salhelper9ConditionD2Ev;
+ # _ZTIN9salhelper9ConditionE;
+ # _ZTIS9salhelper9ConditionE;
+
+ _ZN9salhelper17ConditionModifierC1ERNS_9ConditionE;
+ _ZN9salhelper17ConditionModifierC2ERNS_9ConditionE;
+ _ZN9salhelper17ConditionModifierD1Ev;
+ _ZN9salhelper17ConditionModifierD2Ev;
+
+ _ZN9salhelper15ConditionWaiterC1ERNS_9ConditionE;
+ _ZN9salhelper15ConditionWaiterC1ERNS_9ConditionEm;
+ _ZN9salhelper15ConditionWaiterC2ERNS_9ConditionE;
+ _ZN9salhelper15ConditionWaiterC2ERNS_9ConditionEm;
+ _ZN9salhelper15ConditionWaiterD1Ev;
+ _ZN9salhelper15ConditionWaiterD2Ev;
+
+ _ZN9salhelper15ConditionWaiter8timedoutaSERKS1_;
+ _ZN9salhelper15ConditionWaiter8timedoutC1ERKS1_;
+ _ZN9salhelper15ConditionWaiter8timedoutC1Ev;
+ _ZN9salhelper15ConditionWaiter8timedoutC2ERKS1_;
+ _ZN9salhelper15ConditionWaiter8timedoutC2Ev;
+ _ZN9salhelper15ConditionWaiter8timedoutD0Ev;
+ _ZN9salhelper15ConditionWaiter8timedoutD1Ev;
+ _ZN9salhelper15ConditionWaiter8timedoutD2Ev;
+ # _ZTIN9salhelper15ConditionWaiter8timedoutE;
+ # _ZTSN9salhelper15ConditionWaiter8timedoutE;
+} UDK_3_0_0;
diff --git a/salhelper/source/makefile.mk b/salhelper/source/makefile.mk
new file mode 100644
index 000000000000..a6b83cb5e090
--- /dev/null
+++ b/salhelper/source/makefile.mk
@@ -0,0 +1,82 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=..
+
+PRJNAME=salhelper
+TARGET=salhelper
+
+ENABLE_EXCEPTIONS=TRUE
+NO_BSYMBOLIC=TRUE
+USE_DEFFILE=TRUE
+
+.IF "$(OS)" != "WNT" && "$(GUI)"!="OS2"
+UNIXVERSIONNAMES=UDK
+.ENDIF # WNT
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES= \
+ $(SLO)$/condition.obj \
+ $(SLO)$/dynload.obj \
+ $(SLO)$/simplereferenceobject.obj
+
+.IF "$(GUI)" == "WNT"
+SHL1TARGET= $(TARGET)$(UDK_MAJOR)$(COMID)
+.ELIF "$(GUI)" == "OS2"
+SHL1TARGET= salhelp$(UDK_MAJOR)
+.ELSE
+SHL1TARGET= uno_$(TARGET)$(COMID)
+.ENDIF
+
+SHL1STDLIBS=$(SALLIB)
+
+SHL1DEPN=
+SHL1IMPLIB= i$(TARGET)
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+SHL1RPATH= URELIB
+
+DEF1NAME= $(SHL1TARGET)
+
+.IF "$(COMNAME)"=="msci"
+SHL1VERSIONMAP=msci.map
+.ELIF "$(GUI)"=="OS2"
+SHL1VERSIONMAP=gcc3os2.map
+.ELIF "$(COMNAME)"=="sunpro5"
+SHL1VERSIONMAP=sols.map
+.ELIF "$(COMNAME)"=="gcc3"
+SHL1VERSIONMAP=gcc3.map
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/salhelper/source/msci.map b/salhelper/source/msci.map
new file mode 100644
index 000000000000..737513c93d04
--- /dev/null
+++ b/salhelper/source/msci.map
@@ -0,0 +1,38 @@
+UDK_3_0_0 {
+ global:
+GetVersionInfo
+??0ORealDynamicLoader@salhelper@@IAE@PAPAV01@ABVOUString@rtl@@1PAX2@Z
+??1ORealDynamicLoader@salhelper@@MAE@XZ
+??_7ORealDynamicLoader@salhelper@@6B@
+?acquire@ORealDynamicLoader@salhelper@@QAAKXZ
+?getApi@ORealDynamicLoader@salhelper@@QBAPAXXZ
+?newInstance@ORealDynamicLoader@salhelper@@SAPAV12@PAPAV12@ABVOUString@rtl@@1@Z
+?release@ORealDynamicLoader@salhelper@@QAAKXZ
+??1SimpleReferenceObject@salhelper@@MAE@XZ
+??2SimpleReferenceObject@salhelper@@SAPAXI@Z
+??2SimpleReferenceObject@salhelper@@SAPAXIABUnothrow_t@std@@@Z
+??3SimpleReferenceObject@salhelper@@SAXPAX@Z
+??3SimpleReferenceObject@salhelper@@SAXPAXABUnothrow_t@std@@@Z
+ local:
+ *;
+};
+
+UDK_3.1 {
+ global:
+ ??_7SimpleReferenceObject@salhelper@@6B@;
+
+ ??0Condition@salhelper@@QAE@AAVMutex@osl@@@Z;
+ ??1Condition@salhelper@@UAE@XZ;
+
+ ??0ConditionModifier@salhelper@@QAE@AAVCondition@1@@Z;
+ ??1ConditionModifier@salhelper@@QAE@XZ;
+
+ ??0ConditionWaiter@salhelper@@QAE@AAVCondition@1@@Z;
+ ??0ConditionWaiter@salhelper@@QAE@AAVCondition@1@K@Z;
+ ??1ConditionWaiter@salhelper@@QAE@XZ;
+
+ ??0timedout@ConditionWaiter@salhelper@@QAE@XZ;
+ ??0timedout@ConditionWaiter@salhelper@@QAE@ABU012@@Z;
+ ??1timedout@ConditionWaiter@salhelper@@UAE@XZ;
+ ??4timedout@ConditionWaiter@salhelper@@QAEAAU012@ABU012@@Z;
+} UDK_3_0_0;
diff --git a/salhelper/source/simplereferenceobject.cxx b/salhelper/source/simplereferenceobject.cxx
new file mode 100755
index 000000000000..1e7ac29d3aa9
--- /dev/null
+++ b/salhelper/source/simplereferenceobject.cxx
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "salhelper/simplereferenceobject.hxx"
+#include "osl/diagnose.h"
+
+#ifndef INCLUDED_NEW
+#include <new>
+#define INCLUDED_NEW
+#endif
+
+using salhelper::SimpleReferenceObject;
+
+SimpleReferenceObject::~SimpleReferenceObject() SAL_THROW(())
+{
+ OSL_ASSERT(m_nCount == 0);
+}
+
+void * SimpleReferenceObject::operator new(std::size_t nSize)
+ SAL_THROW((std::bad_alloc))
+{
+ return ::operator new(nSize);
+}
+
+void * SimpleReferenceObject::operator new(std::size_t nSize,
+ std::nothrow_t const &)
+ SAL_THROW(())
+{
+#if defined WNT
+ return ::operator new(nSize);
+ // WNT lacks a global nothrow operator new...
+#else // WNT
+ return ::operator new(nSize, std::nothrow);
+#endif // WNT
+}
+
+void SimpleReferenceObject::operator delete(void * pPtr) SAL_THROW(())
+{
+ ::operator delete(pPtr);
+}
+
+void SimpleReferenceObject::operator delete(void * pPtr, std::nothrow_t const &)
+ SAL_THROW(())
+{
+#if defined WNT
+ ::operator delete(pPtr); // WNT lacks a global nothrow operator delete...
+#else // WNT
+ ::operator delete(pPtr, std::nothrow);
+#endif // WNT
+}
diff --git a/salhelper/source/sols.map b/salhelper/source/sols.map
new file mode 100644
index 000000000000..69454b71089b
--- /dev/null
+++ b/salhelper/source/sols.map
@@ -0,0 +1,76 @@
+UDK_3.1 { # OOo 1.1.2 SDK
+ global:
+ __1cJsalhelperJCondition2t6MrnDoslFMutex__v_;
+ __1cJsalhelperJCondition2t5B6MrnDoslFMutex__v_;
+ __1cJsalhelperJCondition2T6M_v_;
+ __1cJsalhelperJCondition2T5B6M_v_;
+ __1cJsalhelperbF__RTTI__1nJsalhelperJCondition__;
+ __1cJsalhelperbH__RTTI__1CpnJsalhelperJCondition__;
+ __1cJsalhelperbI__RTTI__1CpknJsalhelperJCondition__;
+
+ __1cJsalhelperRConditionModifier2t6Mrn0AJCondition__v_;
+ __1cJsalhelperRConditionModifier2t5B6Mrn0AJCondition__v_;
+ __1cJsalhelperRConditionModifier2T6M_v_;
+ __1cJsalhelperRConditionModifier2T5B6M_v_;
+
+ __1cJsalhelperPConditionWaiter2t6Mrn0AJCondition__v_;
+ __1cJsalhelperPConditionWaiter2t5B6Mrn0AJCondition__v_;
+ __1cJsalhelperPConditionWaiter2t6Mrn0AJCondition_L_v_; #S-ILP32
+ __1cJsalhelperPConditionWaiter2t6Mrn0AJCondition_I_v_; #S-LP64
+ __1cJsalhelperPConditionWaiter2t5B6Mrn0AJCondition_L_v_; #S-ILP32
+ __1cJsalhelperPConditionWaiter2t5B6Mrn0AJCondition_I_v_; #S-LP64
+ __1cJsalhelperPConditionWaiter2T6M_v_;
+ __1cJsalhelperPConditionWaiter2T5B6M_v_;
+
+ __1cJsalhelperPConditionWaiterItimedout2t6M_v_;
+ __1cJsalhelperPConditionWaiterItimedout2t5B6M_v_;
+ __1cJsalhelperPConditionWaiterItimedout2t6Mrk2_v_;
+ __1cJsalhelperPConditionWaiterItimedout2t5B6Mrk2_v_;
+ __1cJsalhelperPConditionWaiterItimedout2T6M_v_;
+ __1cJsalhelperPConditionWaiterItimedout2T5B6M_v_;
+ __1cJsalhelperPConditionWaiterItimedout2G6Mrk2_r2_;
+ __1cJsalhelperbU__RTTI__1nJsalhelperPConditionWaiterItimedout__;
+ __1cJsalhelperbW__RTTI__1CpnJsalhelperPConditionWaiterItimedout__;
+ __1cJsalhelperbX__RTTI__1CpknJsalhelperPConditionWaiterItimedout__;
+} UDK_3.0;
+
+UDK_3.0 {
+ global:
+GetVersionInfo;
+__1cJsalhelperSORealDynamicLoaderLnewInstance6Fpp1rknDrtlIOUString_7_2_;
+__1cJsalhelperSORealDynamicLoader2t5B6Mpp1rknDrtlIOUString_7pv8_v_;
+__1cJsalhelperSORealDynamicLoader2t6Mpp1rknDrtlIOUString_7pv8_v_;
+__1cJsalhelperSORealDynamicLoaderG__vtbl_;
+__1cJsalhelperSORealDynamicLoader2T5B6M_v_;
+__1cJsalhelperSORealDynamicLoader2T6M_v_;
+__1cJsalhelperbR__RTTI__1CpknJsalhelperSORealDynamicLoader__;
+__1cJsalhelperbQ__RTTI__1CpnJsalhelperSORealDynamicLoader__;
+__1cJsalhelperbO__RTTI__1nJsalhelperSORealDynamicLoader__;
+__1cJsalhelperSORealDynamicLoaderHacquire6M_L_; #S-ILP32
+__1cJsalhelperSORealDynamicLoaderHacquire6M_I_; #S-LP64
+__1cJsalhelperSORealDynamicLoaderHrelease6M_L_; #S-ILP32
+__1cJsalhelperSORealDynamicLoaderHrelease6M_I_; #S-LP64
+__1cJsalhelperSORealDynamicLoaderGgetApi6kM_pv_;
+__1cJsalhelperVSimpleReferenceObject2T5B6M_v_;
+__1cJsalhelperVSimpleReferenceObject2T6M_v_;
+__1cJsalhelperVSimpleReferenceObject2k6Fpv_v_;
+__1cJsalhelperVSimpleReferenceObject2k6FpvrknDstdJnothrow_t__v_;
+__1cJsalhelperVSimpleReferenceObject2n6FI_pv_; #S-ILP32
+__1cJsalhelperVSimpleReferenceObject2n6FL_pv_; #S-LP64
+__1cJsalhelperVSimpleReferenceObject2n6FIrknDstdJnothrow_t__pv_; #S-ILP32
+__1cJsalhelperVSimpleReferenceObject2n6FLrknDstdJnothrow_t__pv_; #S-LP64
+__1cJsalhelperVSimpleReferenceObjectG__vtbl_;
+__1cJsalhelperbR__RTTI__1nJsalhelperVSimpleReferenceObject__;
+__1cJsalhelperbT__RTTI__1CpnJsalhelperVSimpleReferenceObject__;
+__1cJsalhelperbU__RTTI__1CpknJsalhelperVSimpleReferenceObject__;
+ local:
+ *;
+} SALHLP_1_0;
+
+SALHLP_1_0 { # WEAK (backward compatibility, should have been UDK_3.0)
+};
+
+{ # BASE
+_init;
+_fini;
+};