diff options
author | Ingrid Halama <iha@openoffice.org> | 2010-01-28 16:29:55 +0100 |
---|---|---|
committer | Ingrid Halama <iha@openoffice.org> | 2010-01-28 16:29:55 +0100 |
commit | 4d25f2a41929080258462cb53b843c52d084d0c9 (patch) | |
tree | e22c6dfac5970f28a0b60c2f28c4d100e28a1e72 | |
parent | 837894606a612539ab16f4eb3256b5bc5153f27d (diff) | |
parent | a2cadf4bc167c9a5ad534af03f7960c6ef477c05 (diff) |
chartmultiline: merge with DEV300_m70
257 files changed, 4401 insertions, 2059 deletions
diff --git a/bridges/prj/build.lst b/bridges/prj/build.lst index 430c49e8a849..c6e342520672 100644 --- a/bridges/prj/build.lst +++ b/bridges/prj/build.lst @@ -21,6 +21,7 @@ br bridges\source\cpp_uno\gcc3_linux_s390x nmake - u br_gccl3x br_unotypes br_i br bridges\source\cpp_uno\gcc3_linux_sparc nmake - u br_gccl3s br_unotypes br_cppuno_shared br_inc NULL br bridges\source\cpp_uno\gcc3_linux_arm nmake - u br_gccl3r br_unotypes NULL br bridges\source\cpp_uno\gcc3_linux_ia64 nmake - u br_gccl3a br_unotypes NULL +br bridges\source\cpp_uno\gcc3_linux_hppa nmake - u br_gccl3h br_unotypes NULL br bridges\source\cpp_uno\gcc3_macosx_intel nmake - u br_gcc3macoxi br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\gcc3_macosx_powerpc nmake - u br_gcc3macoxp br_cppuno_shared br_unotypes br_inc NULL br bridges\source\cpp_uno\cc50_solaris_sparc nmake - u br_cc50sols br_unotypes br_cppuno_shared br_inc NULL diff --git a/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx index b365bdb8aee1..f59a16b2ac38 100644 --- a/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx @@ -45,7 +45,17 @@ #include <stdio.h> #include <string.h> -#if defined(__ARM_EABI__) && !defined(__SOFTFP__) +/* + * Based on http://gcc.gnu.org/PR41443 + * References to __SOFTFP__ are incorrect for EABI; the __SOFTFP__ code + * should be used for *soft-float ABI* whether or not VFP is enabled, + * and __SOFTFP__ does specifically mean soft-float not soft-float ABI. + * + * Changing the conditionals to __SOFTFP__ || __ARM_EABI__ then + * -mfloat-abi=softfp should work. -mfloat-abi=hard won't; that would + * need both a new macro to identify the hard-VFP ABI. + */ +#if !defined(__ARM_EABI__) && !defined(__SOFTFP__) #error Not Implemented /* @@ -103,7 +113,7 @@ namespace arm void MapReturn(long r0, long r1, typelib_TypeClass eReturnType, void *pRegisterReturn) { -#ifndef __SOFTFP__ +#if !defined(__ARM_EABI__) && !defined(__SOFTFP__) register float fret asm("f0"); register double dret asm("f0"); #endif @@ -128,14 +138,14 @@ void MapReturn(long r0, long r1, typelib_TypeClass eReturnType, void *pRegisterR *(unsigned char*)pRegisterReturn = (unsigned char)r0; break; case typelib_TypeClass_FLOAT: -#ifdef __SOFTFP__ +#if defined(__ARM_EABI__) || defined(__SOFTFP__) ((long*)pRegisterReturn)[0] = r0; #else *(float*)pRegisterReturn = fret; #endif break; case typelib_TypeClass_DOUBLE: -#ifdef __SOFTFP__ +#if defined(__ARM_EABI__) || defined(__SOFTFP__) ((long*)pRegisterReturn)[1] = r1; ((long*)pRegisterReturn)[0] = r0; #else diff --git a/bridges/source/cpp_uno/gcc3_linux_hppa/call.cxx b/bridges/source/cpp_uno/gcc3_linux_hppa/call.cxx new file mode 100644 index 000000000000..cd30e224bef5 --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_linux_hppa/call.cxx @@ -0,0 +1,145 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: uno2cpp.cxx,v $ + * $Revision: 1.2 $ + * + * 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 <malloc.h> +#include <rtl/alloc.h> + +#include <com/sun/star/uno/genfunc.hxx> +#include "com/sun/star/uno/RuntimeException.hpp" +#include <uno/data.h> + +#include <bridges/cpp_uno/shared/bridge.hxx> +#include <bridges/cpp_uno/shared/types.hxx> +#include <bridges/cpp_uno/shared/unointerfaceproxy.hxx> +#include <bridges/cpp_uno/shared/vtables.hxx> + +#include "share.hxx" + +#include <stdio.h> +#include <string.h> + +using namespace ::rtl; +using namespace ::com::sun::star::uno; + +void MapReturn(sal_uInt32 ret0, sal_uInt32 ret1, typelib_TypeDescription *pReturnTypeDescr, bool bRegisterReturn, sal_uInt32 *pRegisterReturn) +{ + register float fret asm("fr4"); + register double dret asm("fr4"); + + switch (pReturnTypeDescr->eTypeClass) + { + case typelib_TypeClass_HYPER: + case typelib_TypeClass_UNSIGNED_HYPER: + pRegisterReturn[1] = ret1; + case typelib_TypeClass_LONG: + case typelib_TypeClass_UNSIGNED_LONG: + case typelib_TypeClass_ENUM: + case typelib_TypeClass_CHAR: + case typelib_TypeClass_SHORT: + case typelib_TypeClass_UNSIGNED_SHORT: + case typelib_TypeClass_BOOLEAN: + case typelib_TypeClass_BYTE: + pRegisterReturn[0] = ret0; + break; + case typelib_TypeClass_FLOAT: + *(float*)pRegisterReturn = fret; + break; + case typelib_TypeClass_DOUBLE: + *(double*)pRegisterReturn = dret; + break; + case typelib_TypeClass_STRUCT: + case typelib_TypeClass_EXCEPTION: + { + if (bRegisterReturn) + { + pRegisterReturn[0] = ret0; + pRegisterReturn[1] = ret1; + } + break; + } + default: + break; + } +} + +//Moved callVirtual into this .cxx so that I can do this and get gcc to not +//touch r28 without having to learn any more pa-risc assembly than is +//strictly necessary +register sal_uInt32 r28 __asm__("%r28"); + +void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, + void * pRegisterReturn, typelib_TypeDescription *pReturnTypeDescr, bool bRegisterReturn, + sal_uInt32 *pStack, sal_uInt32 nStack, sal_uInt32 *pGPR, double *pFPR) __attribute__((noinline)); + +void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, + void * pRegisterReturn, typelib_TypeDescription *pReturnTypeDescr, bool bRegisterReturn, + sal_uInt32 *pStack, sal_uInt32 nStack, sal_uInt32 *pGPR, double *pFPR) +{ + register sal_uInt32* sp __asm__("%r30"); + + sal_uInt32 pMethod = *((sal_uInt32*)pThis); + pMethod += 4 * nVtableIndex; + pMethod = *((sal_uInt32 *)pMethod); + +#ifdef CMC_DEBUG + fprintf(stderr, "this is %p\n", pGPR[0]); + for (int i = 0; i < hppa::MAX_GPR_REGS ; ++i) + fprintf(stderr, "normal reg %d is %d %x\n", i, pGPR[i], pGPR[i]); + + for (int i = 0; i < hppa::MAX_SSE_REGS ; ++i) + fprintf(stderr, "float reg %d is %x\n", i, pFPR[i]); + + for (int i = 0; i < nStack; ++i) + fprintf(stderr, "stack bytes are %x\n", pStack[i]); +#endif + + //Always reserve 4 slots, and align to 8 bytes + sal_uInt32 nStackBytes = ( ( nStack + 4 + 1 ) >> 1 ) * 8; + __builtin_alloca(nStackBytes); + sal_uInt32 *stack = sp-8; + int o = -5; + for (sal_uInt32 i = 0; i < nStack; ++i, --o) + stack[o] = pStack[i]; + + typedef int (* FunctionCall )( sal_uInt32, sal_uInt32, sal_uInt32, sal_uInt32 ); + FunctionCall pFunc = (FunctionCall)pMethod; + + asm volatile("fldd %0, %%fr4" : : "m"(pFPR[0]) : "fr4"); + asm volatile("fldd %0, %%fr5" : : "m"(pFPR[1]) : "fr5"); + asm volatile("fldd %0, %%fr6" : : "m"(pFPR[2]) : "fr6"); + asm volatile("fldd %0, %%fr7" : : "m"(pFPR[3]) : "fr7"); + asm volatile("ldw %0, %%r28" : : "m"(pRegisterReturn) : "r28"); + (*pFunc)(pGPR[0], pGPR[1], pGPR[2], pGPR[3]); + + register sal_uInt32 r29 __asm__("%r29"); + MapReturn(r28, r29, pReturnTypeDescr, bRegisterReturn, (sal_uInt32*)pRegisterReturn); +} + +/* vi:set tabstop=4 shiftwidth=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx new file mode 100644 index 000000000000..a78d7694c798 --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx @@ -0,0 +1,728 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: cpp2uno.cxx,v $ + * $Revision: 1.2 $ + * + * 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 <malloc.h> +#include <hash_map> + +#include <rtl/alloc.h> +#include <osl/mutex.hxx> + +#include <com/sun/star/uno/genfunc.hxx> +#include "com/sun/star/uno/RuntimeException.hpp" +#include <uno/data.h> +#include <typelib/typedescription.hxx> + +#include "bridges/cpp_uno/shared/bridge.hxx" +#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx" +#include "bridges/cpp_uno/shared/types.hxx" +#include "bridges/cpp_uno/shared/vtablefactory.hxx" + +#include "share.hxx" + +#include <dlfcn.h> + + +using namespace ::osl; +using namespace ::rtl; +using namespace ::com::sun::star::uno; + +namespace +{ + + static typelib_TypeClass cpp2uno_call( + bridges::cpp_uno::shared::CppInterfaceProxy* pThis, + const typelib_TypeDescription * pMemberTypeDescr, + typelib_TypeDescriptionReference * pReturnTypeRef, + sal_Int32 nParams, typelib_MethodParameter * pParams, + long r8, void ** gpreg, double *fpreg, void ** ovrflw, + sal_Int64 * pRegisterReturn /* space for register return */ ) + { + void ** startovrflw; + int nregs = 0; //number of words passed in registers + +#ifdef CMC_DEBUG + fprintf(stderr, "cpp2uno_call\n"); +#endif + // return + typelib_TypeDescription * pReturnTypeDescr = 0; + if (pReturnTypeRef) + TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); + + void * pUnoReturn = 0; + // complex return ptr: if != 0 && != pUnoReturn, reconversion need + void * pCppReturn = 0; + + if (pReturnTypeDescr) + { + if (hppa::isRegisterReturn(pReturnTypeRef)) + { +#ifdef CMC_DEBUG + fprintf(stderr, "simple return\n"); +#endif + pUnoReturn = pRegisterReturn; // direct way for simple types + } + else + { +#ifdef CMC_DEBUG + fprintf(stderr, "complex return via r8\n"); +#endif + pCppReturn = (void *)r8; + + pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) + ? alloca( pReturnTypeDescr->nSize ) + : pCppReturn); // direct way + } + } + // pop this + gpreg++; + fpreg++; + nregs++; + + // stack space + OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); + // parameters + void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); + void ** pCppArgs = pUnoArgs + nParams; + // indizes of values this have to be converted (interface conversion + // cpp<=>uno) + sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams)); + // type descriptions for reconversions + typelib_TypeDescription ** ppTempParamTypeDescr = + (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); + + sal_Int32 nTempIndizes = 0; + bool bOverFlowUsed = false; + for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) + { + const typelib_MethodParameter & rParam = pParams[nPos]; + typelib_TypeDescription * pParamTypeDescr = 0; + TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); + + if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) + { + switch (pParamTypeDescr->eTypeClass) + { + case typelib_TypeClass_DOUBLE: + if (nregs < hppa::MAX_WORDS_IN_REGS && (nregs & 1)) + { + gpreg++; + fpreg++; + nregs++; + } + if (nregs < hppa::MAX_WORDS_IN_REGS-1) + { + fpreg++; + pCppArgs[nPos] = pUnoArgs[nPos] = fpreg; + gpreg+=2; + fpreg+=2; + nregs+=2; + } + else + { + if ((startovrflw-ovrflw) & 4) + ovrflw--; + pCppArgs[nPos] = pUnoArgs[nPos] = ((char*)ovrflw - 4); + bOverFlowUsed = true; + } + if (bOverFlowUsed) ovrflw-=2; + break; + case typelib_TypeClass_FLOAT: + if (nregs < hppa::MAX_WORDS_IN_REGS) + { + pCppArgs[nPos] = pUnoArgs[nPos] = fpreg; + gpreg++; + fpreg++; + nregs++; + } + else + { + pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw; + bOverFlowUsed = true; + } + if (bOverFlowUsed) ovrflw--; + break; + case typelib_TypeClass_HYPER: + case typelib_TypeClass_UNSIGNED_HYPER: + if (nregs < hppa::MAX_WORDS_IN_REGS && (nregs & 1)) + { + gpreg++; + fpreg++; + nregs++; + } + if (nregs < hppa::MAX_WORDS_IN_REGS-1) + { + pCppArgs[nPos] = pUnoArgs[nPos] = gpreg; + gpreg+=2; + fpreg+=2; + nregs+=2; + } + else + { + if ((startovrflw-ovrflw) & 4) + ovrflw--; + pCppArgs[nPos] = pUnoArgs[nPos] = ((char*)ovrflw - 4); + bOverFlowUsed = true; + } + if (bOverFlowUsed) ovrflw-=2; + break; + case typelib_TypeClass_BYTE: + case typelib_TypeClass_BOOLEAN: + if (nregs < hppa::MAX_WORDS_IN_REGS) + { + pCppArgs[nPos] = pUnoArgs[nPos] = ((char*)gpreg + 3); + gpreg++; + fpreg++; + nregs++; + } + else + { + pCppArgs[nPos] = pUnoArgs[nPos] = ((char*)ovrflw+3); + bOverFlowUsed = true; + } + if (bOverFlowUsed) ovrflw--; + break; + case typelib_TypeClass_CHAR: + case typelib_TypeClass_SHORT: + case typelib_TypeClass_UNSIGNED_SHORT: + if (nregs < hppa::MAX_WORDS_IN_REGS) + { + pCppArgs[nPos] = pUnoArgs[nPos] = ((char*)gpreg+2); + gpreg++; + fpreg++; + nregs++; + } + else + { + pCppArgs[nPos] = pUnoArgs[nPos] = ((char*)ovrflw+2); + bOverFlowUsed = true; + } + if (bOverFlowUsed) ovrflw--; + break; + case typelib_TypeClass_ENUM: + case typelib_TypeClass_LONG: + case typelib_TypeClass_UNSIGNED_LONG: + default: + if (nregs < hppa::MAX_WORDS_IN_REGS) + { + pCppArgs[nPos] = pUnoArgs[nPos] = gpreg; + gpreg++; + fpreg++; + nregs++; + } + else + { + pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw; + bOverFlowUsed = true; + } + if (bOverFlowUsed) ovrflw--; + break; + } + // no longer needed + TYPELIB_DANGER_RELEASE( pParamTypeDescr ); + } + else // ptr to complex value | ref + { + void *pCppStack; + + if (nregs < hppa::MAX_WORDS_IN_REGS) + { + pCppArgs[nPos] = pCppStack = *gpreg; + gpreg++; + fpreg++; + nregs++; + } + else + { + pCppArgs[nPos] = pCppStack = *ovrflw; + bOverFlowUsed = true; + } + if (bOverFlowUsed) ovrflw--; + + if (! rParam.bIn) // is pure out + { + // uno out is unconstructed mem! + pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ); + pTempIndizes[nTempIndizes] = nPos; + // will be released at reconversion + ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; + } + // is in/inout + else if (bridges::cpp_uno::shared::relatesToInterfaceType( + pParamTypeDescr )) + { + uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ), + pCppStack, pParamTypeDescr, + pThis->getBridge()->getCpp2Uno() ); + pTempIndizes[nTempIndizes] = nPos; // has to be reconverted + // will be released at reconversion + ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; + } + else // direct way + { + pUnoArgs[nPos] = pCppStack; + // no longer needed + TYPELIB_DANGER_RELEASE( pParamTypeDescr ); + } + } + } + + // ExceptionHolder + uno_Any aUnoExc; // Any will be constructed by callee + uno_Any * pUnoExc = &aUnoExc; + +#ifdef CMC_DEBUG + fprintf(stderr, "before dispatch\n"); +#endif + // invoke uno dispatch call + (*pThis->getUnoI()->pDispatcher)( + pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc ); + +#ifdef CMC_DEBUG + fprintf(stderr, "after dispatch\n"); +#endif + + // in case an exception occured... + if (pUnoExc) + { + // destruct temporary in/inout params + for ( ; nTempIndizes--; ) + { + sal_Int32 nIndex = pTempIndizes[nTempIndizes]; + + if (pParams[nIndex].bIn) // is in/inout => was constructed + uno_destructData( pUnoArgs[nIndex], + ppTempParamTypeDescr[nTempIndizes], 0 ); + TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); + } + if (pReturnTypeDescr) + TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); + + CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, + pThis->getBridge()->getUno2Cpp() ); // has to destruct the any + // is here for dummy + return typelib_TypeClass_VOID; + } + else // else no exception occured... + { + // temporary params + for ( ; nTempIndizes--; ) + { + sal_Int32 nIndex = pTempIndizes[nTempIndizes]; + typelib_TypeDescription * pParamTypeDescr = + ppTempParamTypeDescr[nTempIndizes]; + + if (pParams[nIndex].bOut) // inout/out + { + // convert and assign + uno_destructData( pCppArgs[nIndex], pParamTypeDescr, + cpp_release ); + uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], + pParamTypeDescr, pThis->getBridge()->getUno2Cpp() ); + } + // destroy temp uno param + uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); + + TYPELIB_DANGER_RELEASE( pParamTypeDescr ); + } + // return + if (pCppReturn) // has complex return + { + if (pUnoReturn != pCppReturn) // needs reconversion + { + uno_copyAndConvertData( pCppReturn, pUnoReturn, + pReturnTypeDescr, pThis->getBridge()->getUno2Cpp() ); + // destroy temp uno return + uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); + } + // complex return ptr is set to eax + *(void **)pRegisterReturn = pCppReturn; + } + if (pReturnTypeDescr) + { + typelib_TypeClass eRet = + (typelib_TypeClass)pReturnTypeDescr->eTypeClass; + TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); + return eRet; + } + else + return typelib_TypeClass_VOID; + } + } + + + //===================================================================== + static typelib_TypeClass cpp_mediate( + sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset, + void ** gpreg, double* fpreg, + long sp, long r8, + sal_Int64 * pRegisterReturn /* space for register return */ ) + + { + void ** ovrflw = (void**)(sp); +#ifdef CMC_DEBUG + fprintf(stderr, "cpp_mediate with\n"); + fprintf(stderr, "%x %x\n", nFunctionIndex, nVtableOffset); + fprintf(stderr, "and %x %x\n", (long)(ovrflw[0]), (long)(ovrflw[-1])); + fprintf(stderr, "and %x %x\n", (long)(ovrflw[-2]), (long)(ovrflw[-3])); + fprintf(stderr, "and %x %x\n", (long)(ovrflw[-4]), (long)(ovrflw[-5])); + fprintf(stderr, "and %x %x\n", (long)(ovrflw[-6]), (long)(ovrflw[-7])); + fprintf(stderr, "and %x %x\n", (long)(ovrflw[-8]), (long)(ovrflw[-9])); + fprintf(stderr, "and %x %x\n", (long)(ovrflw[-10]), (long)(ovrflw[-11])); + fprintf(stderr, "and %x %x\n", (long)(ovrflw[-12]), (long)(ovrflw[-13])); + fprintf(stderr, "and %x %x\n", (long)(ovrflw[-14]), (long)(ovrflw[-15])); +#endif + OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" ); + + // gpreg: [ret *], this, [other gpr params] + // fpreg: [fpr params] + // ovrflw: [gpr or fpr params (properly aligned)] + + void * pThis; + if (nFunctionIndex & 0x80000000 ) + { + nFunctionIndex &= 0x7fffffff; + pThis = gpreg[1]; +#ifdef CMC_DEBUG + fprintf(stderr, "pThis is gpreg[1]\n"); +#endif + } + else + { + pThis = gpreg[0]; +#ifdef CMC_DEBUG + fprintf(stderr, "pThis is gpreg[0]\n"); +#endif + } + + pThis = static_cast< char * >(pThis) - nVtableOffset; + + bridges::cpp_uno::shared::CppInterfaceProxy * pCppI = + bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( + pThis); + + typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr(); + + OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, + "### illegal vtable index!" ); + if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex) + { + throw RuntimeException( + OUString::createFromAscii("illegal vtable index!"), + (XInterface *)pCppI ); + } + + // determine called method + OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, + "### illegal vtable index!" ); + sal_Int32 nMemberPos = + pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex]; + OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, + "### illegal member index!" ); + + TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] ); + + typelib_TypeClass eRet; + switch (aMemberDescr.get()->eTypeClass) + { + case typelib_TypeClass_INTERFACE_ATTRIBUTE: + { + if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == + nFunctionIndex) + { + // is GET method + eRet = cpp2uno_call( + pCppI, aMemberDescr.get(), + ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef, + 0, 0, // no params + r8, gpreg, fpreg, ovrflw, pRegisterReturn ); + } + else + { + // is SET method + typelib_MethodParameter aParam; + aParam.pTypeRef = + ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef; + aParam.bIn = sal_True; + aParam.bOut = sal_False; + + eRet = cpp2uno_call( + pCppI, aMemberDescr.get(), + 0, // indicates void return + 1, &aParam, + r8, gpreg, fpreg, ovrflw, pRegisterReturn ); + } + break; + } + case typelib_TypeClass_INTERFACE_METHOD: + { + // is METHOD + switch (nFunctionIndex) + { + case 1: // acquire() + pCppI->acquireProxy(); // non virtual call! + eRet = typelib_TypeClass_VOID; + break; + case 2: // release() + pCppI->releaseProxy(); // non virtual call! + eRet = typelib_TypeClass_VOID; + break; + case 0: // queryInterface() opt + { + typelib_TypeDescription * pTD = 0; + TYPELIB_DANGER_GET(&pTD, + reinterpret_cast<Type *>(gpreg[1])->getTypeLibType()); + if (pTD) + { + XInterface * pInterface = 0; + (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)( + pCppI->getBridge()->getCppEnv(), + (void **)&pInterface, pCppI->getOid().pData, + (typelib_InterfaceTypeDescription *)pTD ); + + if (pInterface) + { + ::uno_any_construct( + reinterpret_cast< uno_Any * >( r8 ), + &pInterface, pTD, cpp_acquire ); + pInterface->release(); + TYPELIB_DANGER_RELEASE( pTD ); + *(void **)pRegisterReturn = (void*)r8; + eRet = typelib_TypeClass_ANY; + break; + } + TYPELIB_DANGER_RELEASE( pTD ); + } + } // else perform queryInterface() + default: + eRet = cpp2uno_call( + pCppI, aMemberDescr.get(), + ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef, + ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams, + ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams, + r8, gpreg, fpreg, ovrflw, pRegisterReturn ); + } + break; + } + default: + { + throw RuntimeException( + OUString::createFromAscii("no member description found!"), + (XInterface *)pCppI ); + // is here for dummy + eRet = typelib_TypeClass_VOID; + } + } + + return eRet; + } +} + +//======================================================================= +/** + * is called on incoming vtable calls + * (called by asm snippets) + */ + +sal_Int64 cpp_vtable_call( sal_uInt32 in0, sal_uInt32 in1, sal_uInt32 in2, sal_uInt32 in3, sal_uInt32 firstonstack ) +{ + register sal_Int32 r21 asm("r21"); + register sal_Int32 r22 asm("r22"); + register sal_Int32 r28 asm("r28"); + sal_Int32 functionIndex = r21; + sal_Int32 vtableOffset = r22; + sal_Int32 r8 = r28; + + long sp = (long)&firstonstack; + + sal_uInt32 gpreg[hppa::MAX_GPR_REGS]; + gpreg[0] = in0; + gpreg[1] = in1; + gpreg[2] = in2; + gpreg[3] = in3; + + float fpreg[hppa::MAX_SSE_REGS]; //todo + register float f0 asm("fr4"); fpreg[0] = f0; + register float f1 asm("fr5"); fpreg[1] = f1; + register float f2 asm("fr6"); fpreg[2] = f2; + register float f3 asm("fr7"); fpreg[3] = f3; + + double dpreg[hppa::MAX_SSE_REGS]; //todo + register double d0 asm("fr4"); dpreg[0] = d0; + register double d1 asm("fr5"); dpreg[1] = d1; + register double d2 asm("fr6"); dpreg[2] = d2; + register double d3 asm("fr7"); dpreg[3] = d3; + + +#ifdef CMC_DEBUG + fprintf(stderr, "got to cpp_vtable_call with %x %x\n", functionIndex, vtableOffset); + for (int i = 0; i < hppa::MAX_GPR_REGS; ++i) + fprintf(stderr, "reg %d is %d %x\n", i, gpreg[i], gpreg[i]); + for (int i = 0; i < hppa::MAX_SSE_REGS; ++i) + fprintf(stderr, "float reg %d is %f %x\n", i, fpreg[i], ((long*)fpreg)[i]); + for (int i = 0; i < 4; ++i) + fprintf(stderr, "double reg %d is %f %llx\n", i, dpreg[i], ((long long*)dpreg)[i]); +#endif + + sal_Int64 nRegReturn; + + typelib_TypeClass aType = + cpp_mediate( functionIndex, vtableOffset, (void**)gpreg, dpreg, sp, r8, &nRegReturn); + + switch( aType ) + { + case typelib_TypeClass_FLOAT: + f0 = (*((float*)&nRegReturn)); + break; + case typelib_TypeClass_DOUBLE: + d0 = (*((double*)&nRegReturn)); + break; + default: + break; + } + + return nRegReturn; +} + + +namespace +{ + const int codeSnippetSize = 44; + +# define unldil(v) (((v & 0x7c) << 14) | ((v & 0x180) << 7) | ((v & 0x3) << 12) | ((v & 0xffe00) >> 8) | ((v & 0x100000) >> 20)) +# define L21(v) unldil(((unsigned long)(v) >> 11) & 0x1fffff) //Left 21 bits +# define R11(v) (((unsigned long)(v) & 0x7FF) << 1) //Right 11 bits + + unsigned char *codeSnippet(unsigned char* code, sal_Int32 functionIndex, + sal_Int32 vtableOffset, bool bHasHiddenParam) + { + if (bHasHiddenParam) + functionIndex |= 0x80000000; + + unsigned char * p = code; + *(unsigned long*)&p[0] = 0xeaa00000; // b,l 0x8,r21 + *(unsigned long*)&p[4] = 0xd6a01c1e; // depwi 0,31,2,r21 + *(unsigned long*)&p[8] = 0x4aa10040; // ldw 32(r21),r1 + + *(unsigned long*)&p[12] = 0x22A00000 | L21(functionIndex); // ldil L<functionIndex>,r21 + *(unsigned long*)&p[16] = 0x36B50000 | R11(functionIndex); // ldo R<functionIndex>,r21 + + *(unsigned long*)&p[20] = 0x22C00000 | L21(vtableOffset); // ldil L<vtableOffset>,r22 + *(unsigned long*)&p[24] = 0x36D60000 | R11(vtableOffset); // ldo R<vtableOffset>,r22 + + *(unsigned long*)&p[28] = 0x0c201094; // ldw 0(r1),r20 + *(unsigned long*)&p[32] = 0xea80c000; // bv r0(r20) + *(unsigned long*)&p[36] = 0x0c281093; // ldw 4(r1),r19 + *(unsigned long*)&p[40] = ((unsigned long)(cpp_vtable_call) & ~2); + + return code + codeSnippetSize; + } +} + +struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; + +bridges::cpp_uno::shared::VtableFactory::Slot * +bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) +{ + return static_cast< Slot * >(block) + 2; +} + +sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize( + sal_Int32 slotCount) +{ + return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize; +} + +bridges::cpp_uno::shared::VtableFactory::Slot * +bridges::cpp_uno::shared::VtableFactory::initializeBlock( + void * block, sal_Int32 slotCount) +{ + Slot * slots = mapBlockToVtable(block); + slots[-2].fn = 0; + slots[-1].fn = 0; + return slots + slotCount; +} + +unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( + Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff, + typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset, + sal_Int32 functionCount, sal_Int32 vtableOffset) +{ + (*slots) -= functionCount; + Slot * s = *slots; + for (sal_Int32 i = 0; i < type->nMembers; ++i) + { + typelib_TypeDescription * member = 0; + TYPELIB_DANGER_GET(&member, type->ppMembers[i]); + OSL_ASSERT(member != 0); + switch (member->eTypeClass) + { + case typelib_TypeClass_INTERFACE_ATTRIBUTE: + // Getter: + (s++)->fn = code + writetoexecdiff; + code = codeSnippet(code, functionOffset++, vtableOffset, false); + // Setter: + if (!reinterpret_cast< + typelib_InterfaceAttributeTypeDescription * >( + member)->bReadOnly) + { + (s++)->fn = code + writetoexecdiff; + code = codeSnippet(code, functionOffset++, vtableOffset, false); + } + break; + case typelib_TypeClass_INTERFACE_METHOD: + { + (s++)->fn = code + writetoexecdiff; + code = codeSnippet(code, functionOffset++, vtableOffset, false); + break; + } + default: + OSL_ASSERT(false); + break; + } + TYPELIB_DANGER_RELEASE(member); + } + return code; +} + +void bridges::cpp_uno::shared::VtableFactory::flushCode( + unsigned char const *beg, unsigned char const *end) +{ + void *p = (void*)((size_t)beg & ~31); + size_t stride = 32; + while (p < end) + { + asm volatile("fdc (%0)\n\t" + "sync\n\t" + "fic,m %1(%%sr4, %0)\n\t" + "sync" : "+r"(p) : "r"(stride) : "memory"); + } +} + +/* vi:set tabstop=4 shiftwidth=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_linux_hppa/except.cxx b/bridges/source/cpp_uno/gcc3_linux_hppa/except.cxx new file mode 100644 index 000000000000..8242bacaedc6 --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_linux_hppa/except.cxx @@ -0,0 +1,337 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: except.cxx,v $ + * $Revision: 1.2 $ + * + * 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 <stdio.h> +#include <string.h> +#include <dlfcn.h> +#include <cxxabi.h> +#include <hash_map> + +#include <rtl/strbuf.hxx> +#include <rtl/ustrbuf.hxx> +#include <osl/diagnose.h> +#include <osl/mutex.hxx> + +#include <com/sun/star/uno/genfunc.hxx> +#include "com/sun/star/uno/RuntimeException.hpp" +#include <typelib/typedescription.hxx> +#include <uno/any2.h> + +#include "share.hxx" + + +using namespace ::std; +using namespace ::osl; +using namespace ::rtl; +using namespace ::com::sun::star::uno; +using namespace ::__cxxabiv1; + +extern sal_Int32 * pHack; +extern sal_Int32 nHack; + +namespace CPPU_CURRENT_NAMESPACE +{ + void dummy_can_throw_anything( char const * ) + { + } + + //=================================================================== + static OUString toUNOname( char const * p ) SAL_THROW( () ) + { +#if OSL_DEBUG_LEVEL > 1 + char const * start = p; +#endif + + // example: N3com3sun4star4lang24IllegalArgumentExceptionE + + OUStringBuffer buf( 64 ); + OSL_ASSERT( 'N' == *p ); + ++p; // skip N + + while ('E' != *p) + { + // read chars count + long n = (*p++ - '0'); + while ('0' <= *p && '9' >= *p) + { + n *= 10; + n += (*p++ - '0'); + } + buf.appendAscii( p, n ); + p += n; + if ('E' != *p) + buf.append( (sal_Unicode)'.' ); + } + +#if OSL_DEBUG_LEVEL > 1 + OUString ret( buf.makeStringAndClear() ); + OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) ); + fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() ); + return ret; +#else + return buf.makeStringAndClear(); +#endif + } + + //===================================================================== + class RTTI + { + typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map; + + Mutex m_mutex; + t_rtti_map m_rttis; + t_rtti_map m_generatedRttis; + + void * m_hApp; + + public: + RTTI() SAL_THROW( () ); + ~RTTI() SAL_THROW( () ); + + type_info * getRTTI(typelib_CompoundTypeDescription *) SAL_THROW( () ); + }; + //____________________________________________________________________ + RTTI::RTTI() SAL_THROW( () ) + : m_hApp( dlopen( 0, RTLD_LAZY ) ) + { + } + //____________________________________________________________________ + RTTI::~RTTI() SAL_THROW( () ) + { + dlclose( m_hApp ); + } + + //____________________________________________________________________ + type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () ) + { + type_info * rtti; + + OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; + + MutexGuard guard( m_mutex ); + t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) ); + if (iRttiFind == m_rttis.end()) + { + // RTTI symbol + OStringBuffer buf( 64 ); + buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") ); + sal_Int32 index = 0; + do + { + OUString token( unoName.getToken( 0, '.', index ) ); + buf.append( token.getLength() ); + OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) ); + buf.append( c_token ); + } + while (index >= 0); + buf.append( 'E' ); + + OString symName( buf.makeStringAndClear() ); + rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); + + if (rtti) + { + pair< t_rtti_map::iterator, bool > insertion( + m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); + OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" ); + } + else + { + // try to lookup the symbol in the generated rtti map + t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) ); + if (iFind == m_generatedRttis.end()) + { + // we must generate it ! + // symbol and rtti-name is nearly identical, + // the symbol is prefixed with _ZTI + char const * rttiName = symName.getStr() +4; +#if OSL_DEBUG_LEVEL > 1 + fprintf( stderr,"generated rtti for %s\n", rttiName ); +#endif + if (pTypeDescr->pBaseTypeDescription) + { + // ensure availability of base + type_info * base_rtti = getRTTI( + (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription ); + rtti = new __si_class_type_info( + strdup( rttiName ), (__class_type_info *)base_rtti ); + } + else + { + // this class has no base class + rtti = new __class_type_info( strdup( rttiName ) ); + } + + pair< t_rtti_map::iterator, bool > insertion( + m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); + OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" ); + } + else // taking already generated rtti + { + rtti = iFind->second; + } + } + } + else + { + rtti = iRttiFind->second; + } + + return rtti; + } + + //------------------------------------------------------------------ + static void deleteException( void * pExc ) + { + __cxa_exception const * header = ((__cxa_exception const *)pExc - 1); + typelib_TypeDescription * pTD = 0; + OUString unoName( toUNOname( header->exceptionType->name() ) ); + ::typelib_typedescription_getByName( &pTD, unoName.pData ); + OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" ); + if (pTD) + { + ::uno_destructData( pExc, pTD, cpp_release ); + ::typelib_typedescription_release( pTD ); + } + } + + //================================================================== + void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ) + { +#if OSL_DEBUG_LEVEL > 1 + OString cstr( + OUStringToOString( + *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), + RTL_TEXTENCODING_ASCII_US ) ); + fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() ); +#endif + void * pCppExc; + type_info * rtti; + + { + // construct cpp exception object + typelib_TypeDescription * pTypeDescr = 0; + TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType ); + OSL_ASSERT( pTypeDescr ); + if (! pTypeDescr) + { + throw RuntimeException( + OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) + + *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), + Reference< XInterface >() ); + } + + pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); + ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); + + // destruct uno exception + ::uno_any_destruct( pUnoExc, 0 ); + // avoiding locked counts + static RTTI * s_rtti = 0; + if (! s_rtti) + { + MutexGuard guard( Mutex::getGlobalMutex() ); + if (! s_rtti) + { +#ifdef LEAK_STATIC_DATA + s_rtti = new RTTI(); +#else + static RTTI rtti_data; + s_rtti = &rtti_data; +#endif + } + } + rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr ); + TYPELIB_DANGER_RELEASE( pTypeDescr ); + OSL_ENSURE( rtti, "### no rtti for throwing exception!" ); + if (! rtti) + { + throw RuntimeException( + OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) + + *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ), + Reference< XInterface >() ); + } + } + + + __cxa_throw( pCppExc, rtti, deleteException ); + } + + static void* getAdjustedPtr(__cxa_exception* header) + { + return header->adjustedPtr; + } + + //=================================================================== + void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno ) + { + if (! header) + { + RuntimeException aRE( + OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ), + Reference< XInterface >() ); + Type const & rType = ::getCppuType( &aRE ); + uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); +#if OSL_DEBUG_LEVEL > 0 + OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); + OSL_ENSURE( 0, cstr.getStr() ); +#endif + return; + } + + typelib_TypeDescription * pExcTypeDescr = 0; + OUString unoName( toUNOname( header->exceptionType->name() ) ); +#if OSL_DEBUG_LEVEL > 1 + OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) ); + fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() ); +#endif + typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData ); + if (0 == pExcTypeDescr) + { + RuntimeException aRE( + OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName, + Reference< XInterface >() ); + Type const & rType = ::getCppuType( &aRE ); + uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno ); +#if OSL_DEBUG_LEVEL > 0 + OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) ); + OSL_ENSURE( 0, cstr.getStr() ); +#endif + } + else + { + // construct uno exception any + uno_any_constructAndConvert( pUnoExc, getAdjustedPtr(header), pExcTypeDescr, pCpp2Uno ); + typelib_typedescription_release( pExcTypeDescr ); + } + } +} + +/* vi:set tabstop=4 shiftwidth=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_linux_hppa/makefile.mk b/bridges/source/cpp_uno/gcc3_linux_hppa/makefile.mk new file mode 100644 index 000000000000..fcdcea72454f --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_linux_hppa/makefile.mk @@ -0,0 +1,86 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2008 by Sun Microsystems, Inc. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.2 $ +# +# 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=bridges +TARGET=gcc3_uno +LIBTARGET=no +ENABLE_EXCEPTIONS=TRUE +NO_BSYMBOLIC=TRUE + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk + +# --- Files -------------------------------------------------------- + +.IF "$(COM)$(OS)$(CPU)" == "GCCLINUXH" + +.IF "$(cppu_no_leak)" == "" +CFLAGS += -DLEAK_STATIC_DATA +.ENDIF + +CFLAGSCXX += -fno-omit-frame-pointer + +NOOPTFILES= \ + $(SLO)$/cpp2uno.obj \ + $(SLO)$/except.obj \ + $(SLO)$/uno2cpp.obj \ + $(SLO)$/call.obj + +CFLAGSNOOPT=-O0 + +SLOFILES= \ + $(SLO)$/cpp2uno.obj \ + $(SLO)$/except.obj \ + $(SLO)$/uno2cpp.obj \ + $(SLO)$/call.obj + +SHL1TARGET= $(TARGET) + +SHL1DEF=$(MISC)$/$(SHL1TARGET).def +SHL1IMPLIB=i$(TARGET) +SHL1VERSIONMAP=..$/..$/bridge_exports.map +SHL1RPATH=URELIB + +SHL1OBJS = $(SLOFILES) +SHL1LIBS = $(SLB)$/cpp_uno_shared.lib + +SHL1STDLIBS= \ + $(CPPULIB) \ + $(SALLIB) + +.ENDIF + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk diff --git a/bridges/source/cpp_uno/gcc3_linux_hppa/share.hxx b/bridges/source/cpp_uno/gcc3_linux_hppa/share.hxx new file mode 100644 index 000000000000..eedfdf75da8d --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_linux_hppa/share.hxx @@ -0,0 +1,102 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: share.hxx,v $ + * $Revision: 1.2 $ + * + * 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 "uno/mapping.h" + +#include <typeinfo> +#include <exception> +#include <cstddef> + +namespace CPPU_CURRENT_NAMESPACE +{ + + void dummy_can_throw_anything( char const * ); + + +// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h + +struct _Unwind_Exception +{ + unsigned exception_class __attribute__((__mode__(__DI__))); + void * exception_cleanup; + unsigned private_1 __attribute__((__mode__(__word__))); + unsigned private_2 __attribute__((__mode__(__word__))); +} __attribute__((__aligned__)); + +struct __cxa_exception +{ + ::std::type_info *exceptionType; + void (*exceptionDestructor)(void *); + + ::std::unexpected_handler unexpectedHandler; + ::std::terminate_handler terminateHandler; + + __cxa_exception *nextException; + + int handlerCount; + + int handlerSwitchValue; + const unsigned char *actionRecord; + const unsigned char *languageSpecificData; + void *catchTemp; + void *adjustedPtr; + + _Unwind_Exception unwindHeader; +}; + +extern "C" void *__cxa_allocate_exception( + std::size_t thrown_size ) throw(); +extern "C" void __cxa_throw ( + void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); + +struct __cxa_eh_globals +{ + __cxa_exception *caughtExceptions; + unsigned int uncaughtExceptions; +}; +extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); + +// ----- + +//================================================================================================== +void raiseException( + uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); +//================================================================================================== +void fillUnoException( + __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); +} + + +namespace hppa +{ + enum hppalimits { MAX_WORDS_IN_REGS = 4, MAX_GPR_REGS = 4, MAX_SSE_REGS = 4 }; + + bool isRegisterReturn( typelib_TypeDescriptionReference *pTypeRef ); +} diff --git a/bridges/source/cpp_uno/gcc3_linux_hppa/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_hppa/uno2cpp.cxx new file mode 100644 index 000000000000..a342568d5bf8 --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_linux_hppa/uno2cpp.cxx @@ -0,0 +1,524 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: uno2cpp.cxx,v $ + * $Revision: 1.2 $ + * + * 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 <malloc.h> +#include <rtl/alloc.h> + +#include <com/sun/star/uno/genfunc.hxx> +#include "com/sun/star/uno/RuntimeException.hpp" +#include <uno/data.h> + +#include <bridges/cpp_uno/shared/bridge.hxx> +#include <bridges/cpp_uno/shared/types.hxx> +#include <bridges/cpp_uno/shared/unointerfaceproxy.hxx> +#include <bridges/cpp_uno/shared/vtables.hxx> + +#include "share.hxx" + +#include <stdio.h> +#include <string.h> + +using namespace ::rtl; +using namespace ::com::sun::star::uno; + +void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, + void * pRegisterReturn, typelib_TypeDescription *pReturnTypeDescr, bool bRegisterReturn, + sal_uInt32 *pStack, sal_uInt32 nStack, sal_uInt32 *pGPR, double *pFPR); + +#define INSERT_INT32( pSV, nr, pGPR, pDS, bOverFlow )\ + if (nr < hppa::MAX_WORDS_IN_REGS) \ + { \ + pGPR[nr++] = *reinterpret_cast<sal_uInt32 *>( pSV ); \ + } \ + else \ + bOverFlow = true; \ + if (bOverFlow) \ + *pDS++ = *reinterpret_cast<sal_uInt32 *>( pSV ); + +#define INSERT_INT64( pSV, nr, pGPR, pDS, pStart, bOverFlow )\ + if ( (nr < hppa::MAX_WORDS_IN_REGS) && (nr % 2) ) \ + { \ + ++nr; \ + } \ + if ( nr < hppa::MAX_WORDS_IN_REGS ) \ + { \ + pGPR[nr++] = *reinterpret_cast<sal_uInt32 *>( pSV ); \ + pGPR[nr++] = *(reinterpret_cast<sal_uInt32 *>( pSV ) + 1); \ + } \ + else \ + bOverFlow = true; \ + if ( bOverFlow ) \ + { \ + if ( (pDS - pStart) % 2) \ + ++pDS; \ + *pDS++ = reinterpret_cast<sal_uInt32 *>( pSV )[1]; \ + *pDS++ = reinterpret_cast<sal_uInt32 *>( pSV )[0]; \ + } + +#define INSERT_FLOAT( pSV, nr, pFPR, pDS, bOverFlow ) \ + if (nr < hppa::MAX_WORDS_IN_REGS) \ + { \ + sal_uInt32 *pDouble = (sal_uInt32 *)&(pFPR[nr++]); \ + pDouble[0] = *reinterpret_cast<sal_uInt32 *>( pSV ); \ + } \ + else \ + bOverFlow = true; \ + if (bOverFlow) \ + *pDS++ = *reinterpret_cast<sal_uInt32 *>( pSV ); + +#define INSERT_DOUBLE( pSV, nr, pFPR, pDS, pStart, bOverFlow ) \ + if ( (nr < hppa::MAX_WORDS_IN_REGS) && (nr % 2) ) \ + { \ + ++nr; \ + } \ + if ( nr < hppa::MAX_WORDS_IN_REGS ) \ + { \ + sal_uInt32 *pDouble = (sal_uInt32 *)&(pFPR[nr+1]); \ + pDouble[0] = *reinterpret_cast<sal_uInt32 *>( pSV ); \ + pDouble[1] = *(reinterpret_cast<sal_uInt32 *>( pSV ) + 1); \ + nr+=2; \ + } \ + else \ + bOverFlow = true; \ + if ( bOverFlow ) \ + { \ + if ( (pDS - pStart) % 2) \ + ++pDS; \ + *pDS++ = reinterpret_cast<sal_uInt32 *>( pSV )[1]; \ + *pDS++ = reinterpret_cast<sal_uInt32 *>( pSV )[0]; \ + } + +#define INSERT_INT16( pSV, nr, pGPR, pDS, bOverFlow ) \ + if ( nr < hppa::MAX_WORDS_IN_REGS ) \ + pGPR[nr++] = *reinterpret_cast<sal_uInt16 *>( pSV ); \ + else \ + bOverFlow = true; \ + if (bOverFlow) \ + *pDS++ = *reinterpret_cast<sal_uInt16 *>( pSV ); + +#define INSERT_INT8( pSV, nr, pGPR, pDS, bOverFlow ) \ + if ( nr < hppa::MAX_WORDS_IN_REGS ) \ + pGPR[nr++] = *reinterpret_cast<sal_uInt8 *>( pSV ); \ + else \ + bOverFlow = true; \ + if (bOverFlow) \ + *pDS++ = *reinterpret_cast<sal_uInt8 *>( pSV ); + +namespace hppa +{ + bool is_complex_struct(const typelib_TypeDescription * type) + { + const typelib_CompoundTypeDescription * p + = reinterpret_cast< const typelib_CompoundTypeDescription * >(type); + for (sal_Int32 i = 0; i < p->nMembers; ++i) + { + if (p->ppTypeRefs[i]->eTypeClass == typelib_TypeClass_STRUCT || + p->ppTypeRefs[i]->eTypeClass == typelib_TypeClass_EXCEPTION) + { + typelib_TypeDescription * t = 0; + TYPELIB_DANGER_GET(&t, p->ppTypeRefs[i]); + bool b = is_complex_struct(t); + TYPELIB_DANGER_RELEASE(t); + if (b) { + return true; + } + } + else if (!bridges::cpp_uno::shared::isSimpleType(p->ppTypeRefs[i]->eTypeClass)) + return true; + } + if (p->pBaseTypeDescription != 0) + return is_complex_struct(&p->pBaseTypeDescription->aBase); + return false; + } + + bool isRegisterReturn( typelib_TypeDescriptionReference *pTypeRef ) + { + if (bridges::cpp_uno::shared::isSimpleType(pTypeRef)) + return true; + else if (pTypeRef->eTypeClass == typelib_TypeClass_STRUCT || pTypeRef->eTypeClass == typelib_TypeClass_EXCEPTION) + { + typelib_TypeDescription * pTypeDescr = 0; + TYPELIB_DANGER_GET( &pTypeDescr, pTypeRef ); + + /* If the struct is larger than 8 bytes, then there is a buffer at r8 to stick the return value into */ + bool bRet = pTypeDescr->nSize <= 8 && !is_complex_struct(pTypeDescr); + + TYPELIB_DANGER_RELEASE( pTypeDescr ); + return bRet; + } + return false; + } +} + + +namespace { +//======================================================================= +static void cpp_call( + bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, + bridges::cpp_uno::shared::VtableSlot aVtableSlot, + typelib_TypeDescriptionReference * pReturnTypeRef, + sal_Int32 nParams, typelib_MethodParameter * pParams, + void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc ) +{ + // max space for: [complex ret ptr], values|ptr ... + sal_uInt32 * pStack = (sal_uInt32 *)__builtin_alloca( + sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) ); + sal_uInt32 * pStackStart = pStack; + + sal_uInt32 pGPR[hppa::MAX_GPR_REGS]; + double pFPR[hppa::MAX_SSE_REGS]; + sal_uInt32 nRegs=0; + + // return + typelib_TypeDescription * pReturnTypeDescr = 0; + TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); + OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" ); + + void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion + bool bOverFlow = false; + bool bRegisterReturn = true; + + if (pReturnTypeDescr) + { + + bRegisterReturn = hppa::isRegisterReturn(pReturnTypeRef); + if (bRegisterReturn) + pCppReturn = pUnoReturn; // direct way for simple types + else + { + // complex return via ptr + pCppReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) + ? __builtin_alloca( pReturnTypeDescr->nSize ) + : pUnoReturn); // direct way + } + } + // push this + void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI()) + + aVtableSlot.offset; + INSERT_INT32( &pAdjustedThisPtr, nRegs, pGPR, pStack, bOverFlow ); + + // stack space + OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); + // args + void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); + // indizes of values this have to be converted (interface conversion cpp<=>uno) + sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams); + // type descriptions for reconversions + typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams)); + + sal_Int32 nTempIndizes = 0; + + for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) + { + const typelib_MethodParameter & rParam = pParams[nPos]; + typelib_TypeDescription * pParamTypeDescr = 0; + TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); + + if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) + { + uno_copyAndConvertData( pCppArgs[nPos] = alloca(8), pUnoArgs[nPos], + pParamTypeDescr, pThis->getBridge()->getUno2Cpp() ); + + switch (pParamTypeDescr->eTypeClass) + { + case typelib_TypeClass_HYPER: + case typelib_TypeClass_UNSIGNED_HYPER: +#ifdef CMC_DEBUG + fprintf(stderr, "hyper is %llx\n", *((long long*)pCppArgs[nPos])); +#endif + INSERT_INT64( pCppArgs[nPos], nRegs, pGPR, pStack, pStackStart, bOverFlow ); + break; + case typelib_TypeClass_LONG: + case typelib_TypeClass_UNSIGNED_LONG: + case typelib_TypeClass_ENUM: +#ifdef CMC_DEBUG + fprintf(stderr, "long is %x\n", pCppArgs[nPos]); +#endif + INSERT_INT32( pCppArgs[nPos], nRegs, pGPR, pStack, bOverFlow ); + break; + case typelib_TypeClass_SHORT: + case typelib_TypeClass_CHAR: + case typelib_TypeClass_UNSIGNED_SHORT: + INSERT_INT16( pCppArgs[nPos], nRegs, pGPR, pStack, bOverFlow ); + break; + case typelib_TypeClass_BOOLEAN: + case typelib_TypeClass_BYTE: + INSERT_INT8( pCppArgs[nPos], nRegs, pGPR, pStack, bOverFlow ); + break; + case typelib_TypeClass_FLOAT: + INSERT_FLOAT( pCppArgs[nPos], nRegs, pFPR, pStack, bOverFlow ); + break; + case typelib_TypeClass_DOUBLE: + INSERT_DOUBLE( pCppArgs[nPos], nRegs, pFPR, pStack, pStackStart, bOverFlow ); + break; + default: + break; + } + // no longer needed + TYPELIB_DANGER_RELEASE( pParamTypeDescr ); + } + else // ptr to complex value | ref + { + if (! rParam.bIn) // is pure out + { + // cpp out is constructed mem, uno out is not! + uno_constructData( + pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), + pParamTypeDescr ); + pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call + // will be released at reconversion + ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; + } + // is in/inout + else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr )) + { + uno_copyAndConvertData( + pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), + pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() ); + + pTempIndizes[nTempIndizes] = nPos; // has to be reconverted + // will be released at reconversion + ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; + } + else // direct way + { + pCppArgs[nPos] = pUnoArgs[nPos]; + // no longer needed + TYPELIB_DANGER_RELEASE( pParamTypeDescr ); + } + INSERT_INT32( &(pCppArgs[nPos]), nRegs, pGPR, pStack, bOverFlow ); + } + } + + try + { + callVirtualMethod( + pAdjustedThisPtr, aVtableSlot.index, + pCppReturn, pReturnTypeDescr, bRegisterReturn, + pStackStart, + (pStack - pStackStart), pGPR, pFPR); + + // NO exception occured... + *ppUnoExc = 0; + + // reconvert temporary params + for ( ; nTempIndizes--; ) + { + sal_Int32 nIndex = pTempIndizes[nTempIndizes]; + typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; + + if (pParams[nIndex].bIn) + { + if (pParams[nIndex].bOut) // inout + { + uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value + uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, + pThis->getBridge()->getCpp2Uno() ); + } + } + else // pure out + { + uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, + pThis->getBridge()->getCpp2Uno() ); + } + // destroy temp cpp param => cpp: every param was constructed + uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); + + TYPELIB_DANGER_RELEASE( pParamTypeDescr ); + } + // return value + if (pCppReturn && pUnoReturn != pCppReturn) + { + uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr, + pThis->getBridge()->getCpp2Uno() ); + uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release ); + } + } + catch (...) + { + // fill uno exception + fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); + + // temporary params + for ( ; nTempIndizes--; ) + { + sal_Int32 nIndex = pTempIndizes[nTempIndizes]; + // destroy temp cpp param => cpp: every param was constructed + uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release ); + TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); + } + + // return type + if (pReturnTypeDescr) + TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); + } +} +} + +namespace bridges { namespace cpp_uno { namespace shared { + +void unoInterfaceProxyDispatch( + uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr, + void * pReturn, void * pArgs[], uno_Any ** ppException ) +{ + // is my surrogate + bridges::cpp_uno::shared::UnoInterfaceProxy * pThis + = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI); +#if OSL_DEBUG_LEVEL > 0 + typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr; +#endif + + switch (pMemberDescr->eTypeClass) + { + case typelib_TypeClass_INTERFACE_ATTRIBUTE: + { +#if OSL_DEBUG_LEVEL > 0 + // determine vtable call index + sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition; + OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" ); +#endif + + VtableSlot aVtableSlot( + getVtableSlot( + reinterpret_cast<typelib_InterfaceAttributeTypeDescription const *> + (pMemberDescr))); + + if (pReturn) + { + // dependent dispatch + cpp_call( + pThis, aVtableSlot, + ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef, + 0, 0, // no params + pReturn, pArgs, ppException ); + } + else + { + // is SET + typelib_MethodParameter aParam; + aParam.pTypeRef = + ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef; + aParam.bIn = sal_True; + aParam.bOut = sal_False; + + typelib_TypeDescriptionReference * pReturnTypeRef = 0; + OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") ); + typelib_typedescriptionreference_new( + &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData ); + + // dependent dispatch + aVtableSlot.index += 1; + cpp_call( + pThis, aVtableSlot, // get, then set method + pReturnTypeRef, + 1, &aParam, + pReturn, pArgs, ppException ); + + typelib_typedescriptionreference_release( pReturnTypeRef ); + } + + break; + } + case typelib_TypeClass_INTERFACE_METHOD: + { +#if OSL_DEBUG_LEVEL > 0 + // determine vtable call index + sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition; + OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" ); +#endif + + VtableSlot aVtableSlot( + getVtableSlot( + reinterpret_cast<typelib_InterfaceMethodTypeDescription const *> + (pMemberDescr))); + + switch (aVtableSlot.index) + { + // standard calls + case 1: // acquire uno interface + (*pUnoI->acquire)( pUnoI ); + *ppException = 0; + break; + case 2: // release uno interface + (*pUnoI->release)( pUnoI ); + *ppException = 0; + break; + case 0: // queryInterface() opt + { + typelib_TypeDescription * pTD = 0; + TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() ); + if (pTD) + { + uno_Interface * pInterface = 0; + (*pThis->getBridge()->getUnoEnv()->getRegisteredInterface)( + pThis->getBridge()->getUnoEnv(), + (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD ); + + if (pInterface) + { + ::uno_any_construct( + reinterpret_cast< uno_Any * >( pReturn ), + &pInterface, pTD, 0 ); + (*pInterface->release)( pInterface ); + TYPELIB_DANGER_RELEASE( pTD ); + *ppException = 0; + break; + } + + TYPELIB_DANGER_RELEASE( pTD ); + } + } // else perform queryInterface() + default: + // dependent dispatch + cpp_call( + pThis, aVtableSlot, + ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef, + ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams, + ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams, + pReturn, pArgs, ppException ); + } + break; + } + default: + { + ::com::sun::star::uno::RuntimeException aExc( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ), + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() ); + + Type const & rExcType = ::getCppuType( &aExc ); + // binary identical null reference + ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 ); + } + } +} + +} } } + +/* vi:set tabstop=4 shiftwidth=4 expandtab: */ diff --git a/bridges/source/cpp_uno/gcc3_linux_ia64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_ia64/uno2cpp.cxx index 35b16d882632..d1d98f222738 100644 --- a/bridges/source/cpp_uno/gcc3_linux_ia64/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_ia64/uno2cpp.cxx @@ -91,6 +91,31 @@ void MapReturn(const ia64::RegReturn &rRet, double dret, typelib_TypeDescription namespace ia64 { + bool is_complex_struct(const typelib_TypeDescription * type) + { + const typelib_CompoundTypeDescription * p + = reinterpret_cast< const typelib_CompoundTypeDescription * >(type); + for (sal_Int32 i = 0; i < p->nMembers; ++i) + { + if (p->ppTypeRefs[i]->eTypeClass == typelib_TypeClass_STRUCT || + p->ppTypeRefs[i]->eTypeClass == typelib_TypeClass_EXCEPTION) + { + typelib_TypeDescription * t = 0; + TYPELIB_DANGER_GET(&t, p->ppTypeRefs[i]); + bool b = is_complex_struct(t); + TYPELIB_DANGER_RELEASE(t); + if (b) { + return true; + } + } + else if (!bridges::cpp_uno::shared::isSimpleType(p->ppTypeRefs[i]->eTypeClass)) + return true; + } + if (p->pBaseTypeDescription != 0) + return is_complex_struct(&p->pBaseTypeDescription->aBase); + return false; + } + bool is_complex_struct( typelib_TypeDescriptionReference *pTypeRef ) { if (pTypeRef->eTypeClass == typelib_TypeClass_STRUCT || pTypeRef->eTypeClass == typelib_TypeClass_EXCEPTION) @@ -98,7 +123,7 @@ namespace ia64 typelib_TypeDescription * pTypeDescr = 0; TYPELIB_DANGER_GET( &pTypeDescr, pTypeRef ); - bool bRet = bridges::cpp_uno::shared::relatesToInterfaceType( pTypeDescr ); + bool bRet = is_complex_struct( pTypeDescr ); TYPELIB_DANGER_RELEASE( pTypeDescr ); return bRet; diff --git a/bridges/source/cpp_uno/gcc3_linux_m68k/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_m68k/cpp2uno.cxx index 0581b52f0c8d..1d63ebde491f 100644 --- a/bridges/source/cpp_uno/gcc3_linux_m68k/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_m68k/cpp2uno.cxx @@ -256,7 +256,7 @@ namespace // destroy temp uno return uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); } - // complex return ptr is set to eax + // complex return ptr is set to return reg *(void **)pRegisterReturn = pCppReturn; } if (pReturnTypeDescr) diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx index 1aca0f480b6a..e901a110213f 100644 --- a/bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx @@ -61,7 +61,9 @@ static typelib_TypeClass cpp2uno_call( sal_Int64 * pRegisterReturn /* space for register return */ ) { int ng = 0; //number of gpr registers used +#ifndef __NO_FPRS__ int nf = 0; //number of fpr regsiters used +#endif void ** pCppStack; //temporary stack pointer // gpreg: [ret *], this, [gpr params] @@ -123,11 +125,23 @@ static typelib_TypeClass cpp2uno_call( { case typelib_TypeClass_DOUBLE: +#ifndef __NO_FPRS__ if (nf < 8) { pCppArgs[nPos] = fpreg; pUnoArgs[nPos] = fpreg; nf++; fpreg += 2; +#else + if (ng & 1) { + ng++; + gpreg++; + } + if (ng < 8) { + pCppArgs[nPos] = gpreg; + pUnoArgs[nPos] = gpreg; + ng += 2; + gpreg += 2; +#endif } else { if (((long)ovrflw) & 4) ovrflw++; pCppArgs[nPos] = ovrflw; @@ -139,6 +153,7 @@ static typelib_TypeClass cpp2uno_call( case typelib_TypeClass_FLOAT: // fpreg are all double values so need to // modify fpreg to be a single word float value +#ifndef __NO_FPRS__ if (nf < 8) { float tmp = (float) (*((double *)fpreg)); (*((float *) fpreg)) = tmp; @@ -146,6 +161,13 @@ static typelib_TypeClass cpp2uno_call( pUnoArgs[nPos] = fpreg; nf++; fpreg += 2; +#else + if (ng < 8) { + pCppArgs[nPos] = gpreg; + pUnoArgs[nPos] = gpreg; + ng++; + gpreg++; +#endif } else { #if 0 /* abi is not being followed correctly */ if (((long)ovrflw) & 4) ovrflw++; @@ -164,11 +186,11 @@ static typelib_TypeClass cpp2uno_call( case typelib_TypeClass_HYPER: case typelib_TypeClass_UNSIGNED_HYPER: - if (ng < 7) { - if (ng & 1) { - ng++; - gpreg++; - } + if (ng & 1) { + ng++; + gpreg++; + } + if (ng < 8) { pCppArgs[nPos] = gpreg; pUnoArgs[nPos] = gpreg; ng += 2; @@ -488,10 +510,12 @@ static typelib_TypeClass cpp_mediate( static void cpp_vtable_call( int nFunctionIndex, int nVtableOffset, void** gpregptr, void** fpregptr, void** ovrflw) { sal_Int32 gpreg[8]; - double fpreg[8]; - memcpy( gpreg, gpregptr, 32); + +#ifndef __NO_FPRS__ + double fpreg[8]; memcpy( fpreg, fpregptr, 64); +#endif volatile long nRegReturn[2]; @@ -499,10 +523,14 @@ static void cpp_vtable_call( int nFunctionIndex, int nVtableOffset, void** gpreg // fprintf(stderr,"in cpp_vtable_call nVtableOffset is %x\n",nVtableOffset); // fflush(stderr); - sal_Bool bComplex = nFunctionIndex & 0x80000000 ? sal_True : sal_False; - typelib_TypeClass aType = - cpp_mediate( nFunctionIndex, nVtableOffset, (void**)gpreg, (void**)fpreg, ovrflw, (sal_Int64*)nRegReturn ); + cpp_mediate( nFunctionIndex, nVtableOffset, (void**)gpreg, +#ifndef __NO_FPRS__ + (void**)fpreg, +#else + NULL, +#endif + ovrflw, (sal_Int64*)nRegReturn ); switch( aType ) { @@ -524,13 +552,25 @@ static void cpp_vtable_call( int nFunctionIndex, int nVtableOffset, void** gpreg break; case typelib_TypeClass_FLOAT: +#ifndef __NO_FPRS__ __asm__( "lfs 1,%0\n\t" : : "m" (*((float*)nRegReturn)) ); + #else + __asm__( "lwz 3,%0\n\t" : : + "m"(nRegReturn[0]) ); +#endif break; case typelib_TypeClass_DOUBLE: +#ifndef __NO_FPRS__ __asm__( "lfd 1,%0\n\t" : : "m" (*((double*)nRegReturn)) ); +#else + __asm__( "lwz 3,%0\n\t" : : + "m"(nRegReturn[0]) ); + __asm__( "lwz 4,%0\n\t" : : + "m"(nRegReturn[1]) ); +#endif break; case typelib_TypeClass_HYPER: @@ -577,6 +617,7 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal // # next save fpr 1 to fpr 8 (aligned to 8) + // if dedicated floating point registers are used // stfd f1,-2016(r1) // stfd f2,-2008(r1) // stfd f3,-2000(r1) @@ -604,6 +645,10 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal // #now load up the pointer to the saved fpr registers // addi r6,r1,-2016 + // if no dedicated floating point registers are used than we have NULL + // pointer there + // li r6, 0 + // // #now load up the pointer to the overflow call stack // addi r7,r1,8 @@ -617,6 +662,7 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal * p++ = 0x9101f814; * p++ = 0x9121f818; * p++ = 0x9141f81c; +#ifndef __NO_FPRS__ * p++ = 0xd821f820; * p++ = 0xd841f828; * p++ = 0xd861f830; @@ -625,6 +671,17 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal * p++ = 0xd8c1f848; * p++ = 0xd8e1f850; * p++ = 0xd901f858; +#else + /* these nops could be replaced with a smaller codeSnippetSize - 8 * 4 */ + * p++ = 0x60000000; + * p++ = 0x60000000; + * p++ = 0x60000000; + * p++ = 0x60000000; + * p++ = 0x60000000; + * p++ = 0x60000000; + * p++ = 0x60000000; + * p++ = 0x60000000; +#endif * p++ = 0x3c600000 | (((unsigned long)cpp_vtable_call) >> 16); * p++ = 0x60630000 | (((unsigned long)cpp_vtable_call) & 0x0000FFFF); * p++ = 0x7c6903a6; @@ -633,7 +690,11 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal * p++ = 0x3c800000 | (((unsigned long)vtableOffset) >> 16); * p++ = 0x60840000 | (((unsigned long)vtableOffset) & 0x0000FFFF); * p++ = 0x38a1f800; +#ifndef __NO_FPRS__ * p++ = 0x38c1f820; +#else + * p++ = 0x38c00000; +#endif * p++ = 0x38e10008; * p++ = 0x4e800420; return (code + codeSnippetSize); diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc/except.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc/except.cxx index 28ad7dc83ed7..adb10dae24c7 100644 --- a/bridges/source/cpp_uno/gcc3_linux_powerpc/except.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_powerpc/except.cxx @@ -137,8 +137,8 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; MutexGuard guard( m_mutex ); - t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) ); - if (iFind == m_rttis.end()) + t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) ); + if (iRttiFind == m_rttis.end()) { // RTTI symbol OStringBuffer buf( 64 ); @@ -202,7 +202,7 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR } else { - rtti = iFind->second; + rtti = iRttiFind->second; } return rtti; diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx index 2a8626733f24..8c527df2d48c 100644 --- a/bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx @@ -74,12 +74,14 @@ static void callVirtualMethod( void (*ptr)(); int gpr[8]; // storage for gpregisters, map to r3-r10 int off; // offset used to find function +#ifndef __NO_FPRS__ double fpr[8]; // storage for fpregisters, map to f1-f8 - int n; // number of gprs mapped so far int f; // number of fprs mapped so far + double dret; // temporary function return values +#endif + int n; // number of gprs mapped so far long *p; // pointer to parameter overflow area int c; // character of parameter type being decoded - double dret; // temporary function return values int iret, iret2; // Because of the Power PC calling conventions we could be passing @@ -93,7 +95,7 @@ static void callVirtualMethod( // Note: could require up to 2*nStackLongs words of parameter stack area // if the call has many float parameters (i.e. floats take up only 1 - // word on the stack but take 2 words in parameter area in the + // word on the stack but double takes 2 words in parameter area in the // stack frame . // Update! floats on the outgoing parameter stack only take up 1 word @@ -119,7 +121,9 @@ static void callVirtualMethod( // now begin to load the C++ function arguments into storage n = 0; +#ifndef __NO_FPRS__ f = 0; +#endif // now we need to parse the entire signature string */ // until we get the END indicator */ @@ -143,8 +147,16 @@ static void callVirtualMethod( c = *pPT; switch (c) { case 'D': /* type is double */ +#ifndef __NO_FPRS__ if (f < 8) { fpr[f++] = *((double *)pStackLongs); /* store in register */ +#else + if (n & 1) + n++; + if (n < 8) { + gpr[n++] = *pStackLongs; + gpr[n++] = *(pStackLongs+1); +#endif } else { if (((long) p) & 4) p++; @@ -163,8 +175,13 @@ static void callVirtualMethod( store floats as a *single* word on outgoing parameter stack to match what gcc actually does */ +#ifndef __NO_FPRS__ if (f < 8) { fpr[f++] = *((float *)pStackLongs); +#else + if (n < 8) { + gpr[n++] = *pStackLongs; +#endif } else { #if 0 /* if abi were followed */ if (((long) p) & 4) @@ -243,6 +260,7 @@ static void callVirtualMethod( "lwz 8, 20(%0)\n\t" "lwz 9, 24(%0)\n\t" "lwz 10, 28(%0)\n\t" +#ifndef __NO_FPRS__ "lfd 1, 0(%1)\n\t" "lfd 2, 8(%1)\n\t" "lfd 3, 16(%1)\n\t" @@ -252,16 +270,24 @@ static void callVirtualMethod( "lfd 7, 48(%1)\n\t" "lfd 8, 56(%1)\n\t" : : "r" (gpr), "r" (fpr) +#else + : : "r" (gpr) +#endif : "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ); (*ptr)(); __asm__ __volatile__ ( - "mr %1, 3\n\t" - "mr %2, 4\n\t" - "fmr %0, 1\n\t" - : "=f" (dret), "=r" (iret), "=r" (iret2) : ); + "mr %0, 3\n\t" + "mr %1, 4\n\t" +#ifndef __NO_FPRS__ + "fmr %2, 1\n\t" + : "=r" (iret), "=r" (iret2), "=f" (dret) +#else + : "=r" (iret), "=r" (iret2) +#endif + : ); switch( eReturnType ) { @@ -284,10 +310,21 @@ static void callVirtualMethod( *(unsigned char*)pRegisterReturn = (unsigned char)iret; break; case typelib_TypeClass_FLOAT: +#ifndef __NO_FPRS__ *(float*)pRegisterReturn = (float)dret; +#else + ((unsigned int*)pRegisterReturn)[0] = iret; +#endif break; case typelib_TypeClass_DOUBLE: +#ifndef __NO_FPRS__ *(double*)pRegisterReturn = dret; +#else + ((unsigned int*)pRegisterReturn)[0] = iret; + ((unsigned int*)pRegisterReturn)[1] = iret2; +#endif + break; + default: break; } } @@ -399,6 +436,8 @@ static void cpp_call( case typelib_TypeClass_UNSIGNED_HYPER: *pPT++ = 'H'; pCppStack += sizeof(sal_Int32); // extra long + default: + break; } // no longer needed @@ -518,7 +557,6 @@ void unoInterfaceProxyDispatch( // is my surrogate bridges::cpp_uno::shared::UnoInterfaceProxy * pThis = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy *> (pUnoI); - typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr; switch (pMemberDescr->eTypeClass) { diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx index 2aeaf9423859..ad0faa1a01aa 100644 --- a/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.cxx @@ -229,6 +229,7 @@ classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_c for ( sal_Int32 nMember = 0; nMember < pStruct->nMembers; ++nMember ) { typelib_TypeDescriptionReference *pTypeInStruct = pStruct->ppTypeRefs[ nMember ]; + rByteOffset = pStruct->pMemberOffsets[ nMember ]; int num = classify_argument( pTypeInStruct, subclasses, rByteOffset ); @@ -243,9 +244,6 @@ classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_c int pos = rByteOffset / 8; classes[i + pos] = merge_classes( subclasses[i], classes[i + pos] ); } - - if ( pTypeInStruct->eTypeClass != typelib_TypeClass_STRUCT ) - rByteOffset = pStruct->pMemberOffsets[ nMember ]; } TYPELIB_DANGER_RELEASE( pTypeDescr ); @@ -332,7 +330,7 @@ bool x86_64::return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef return examine_argument( pTypeRef, true, g, s ) == 0; } -void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct ) +void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, const sal_uInt64 *pGPR, const double *pSSE, void *pStruct ) { enum x86_64_reg_class classes[MAX_CLASSES]; int offset = 0; @@ -346,12 +344,12 @@ void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * con { case X86_64_INTEGER_CLASS: case X86_64_INTEGERSI_CLASS: - *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pGPR++ ); + *pStructAlign++ = *pGPR++; break; case X86_64_SSE_CLASS: case X86_64_SSESF_CLASS: case X86_64_SSEDF_CLASS: - *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pSSE++ ); + *pStructAlign++ = *reinterpret_cast<const sal_uInt64 *>( pSSE++ ); break; default: break; diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx index 5fffe680c28a..c5b7d94d2e01 100644 --- a/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx +++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx @@ -63,7 +63,7 @@ bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInRetur */ bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ); -void fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct ); +void fill_struct( typelib_TypeDescriptionReference *pTypeRef, const sal_uInt64* pGPR, const double* pSSE, void *pStruct ); } // namespace x86_64 diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s b/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s index 736230705d5a..a0572ef61641 100644 --- a/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s +++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s @@ -43,6 +43,9 @@ privateSnippetExecutor: je .Lfloat movq -144(%rbp), %rax # Return value (int case) + movq -136(%rbp), %rdx # Return value (int case) + movq -144(%rbp), %xmm0 # Return value (int case) + movq -136(%rbp), %xmm1 # Return value (int case) jmp .Lfinish .Lfloat: movlpd -144(%rbp), %xmm0 # Return value (float/double case) diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx index 5fb2bd7e12a3..fc5a9af1ac5c 100644 --- a/bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx @@ -121,13 +121,14 @@ static typelib_TypeClass cpp2uno_call( for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) { const typelib_MethodParameter & rParam = pParams[nPos]; - typelib_TypeDescription * pParamTypeDescr = 0; - TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); int nUsedGPR = 0; int nUsedSSE = 0; - bool bFitsRegisters = x86_64::examine_argument( rParam.pTypeRef, false, nUsedGPR, nUsedSSE ); - if ( !rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ) ) // value +#if OSL_DEBUG_LEVEL > 0 + bool bFitsRegisters = +#endif + x86_64::examine_argument( rParam.pTypeRef, false, nUsedGPR, nUsedSSE ); + if ( !rParam.bOut && bridges::cpp_uno::shared::isSimpleType( rParam.pTypeRef ) ) // value { // Simple types must fit exactly one register on x86_64 OSL_ASSERT( bFitsRegisters && ( ( nUsedSSE == 1 && nUsedGPR == 0 ) || ( nUsedSSE == 0 && nUsedGPR == 1 ) ) ); @@ -152,35 +153,14 @@ static typelib_TypeClass cpp2uno_call( else pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++; } - - // no longer needed - TYPELIB_DANGER_RELEASE( pParamTypeDescr ); } else // struct <= 16 bytes || ptr to complex value || ref { - void *pCppStack; - char pTmpStruct[16]; - - if ( bFitsRegisters && !rParam.bOut && - ( pParamTypeDescr->eTypeClass == typelib_TypeClass_STRUCT || - pParamTypeDescr->eTypeClass == typelib_TypeClass_EXCEPTION ) ) - { - if ( ( nr_gpr + nUsedGPR <= x86_64::MAX_GPR_REGS ) && ( nr_fpr + nUsedSSE <= x86_64::MAX_SSE_REGS ) ) - { - x86_64::fill_struct( rParam.pTypeRef, gpreg, fpreg, pTmpStruct ); -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "nUsedGPR == %d, nUsedSSE == %d, pTmpStruct[0] == 0x%x, pTmpStruct[1] == 0x%x, **gpreg == 0x%lx\n", - nUsedGPR, nUsedSSE, pTmpStruct[0], pTmpStruct[1], *(sal_uInt64*)*gpreg ); -#endif + typelib_TypeDescription * pParamTypeDescr = 0; + TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); - pCppArgs[nPos] = pCppStack = reinterpret_cast<void *>( pTmpStruct ); - gpreg += nUsedGPR; - fpreg += nUsedSSE; - } - else - pCppArgs[nPos] = pCppStack = *ovrflw++; - } - else if ( nr_gpr < x86_64::MAX_GPR_REGS ) + void *pCppStack; + if ( nr_gpr < x86_64::MAX_GPR_REGS ) { pCppArgs[nPos] = pCppStack = *gpreg++; nr_gpr++; diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx index 7199794409a8..23c40121afb7 100644 --- a/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx @@ -53,13 +53,13 @@ using namespace ::com::sun::star::uno; //================================================================================================== static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, - void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn, + void * pRegisterReturn, typelib_TypeDescriptionReference * pReturnTypeRef, bool bSimpleReturn, sal_uInt64 *pStack, sal_uInt32 nStack, sal_uInt64 *pGPR, sal_uInt32 nGPR, double *pFPR, sal_uInt32 nFPR) __attribute__((noinline)); static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, - void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn, + void * pRegisterReturn, typelib_TypeDescriptionReference * pReturnTypeRef, bool bSimpleReturn, sal_uInt64 *pStack, sal_uInt32 nStack, sal_uInt64 *pGPR, sal_uInt32 nGPR, double *pFPR, sal_uInt32 nFPR) @@ -113,6 +113,7 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, sal_uInt64 rax; sal_uInt64 rdx; double xmm0; + double xmm1; asm volatile ( @@ -147,13 +148,14 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, "movq %%rax, %4\n\t" "movq %%rdx, %5\n\t" "movsd %%xmm0, %6\n\t" + "movsd %%xmm1, %7\n\t" : : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ), - "m" ( rax ), "m" ( rdx ), "m" ( xmm0 ) + "m" ( rax ), "m" ( rdx ), "m" ( xmm0 ), "m" ( xmm1 ) : "rax", "rdi", "rsi", "rdx", "rcx", "r8", "r9", "r11" ); - switch (pReturnTypeDescr->eTypeClass) + switch (pReturnTypeRef->eTypeClass) { case typelib_TypeClass_HYPER: case typelib_TypeClass_UNSIGNED_HYPER: @@ -179,12 +181,17 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, break; default: { - sal_Int32 const nRetSize = pReturnTypeDescr->nSize; + sal_Int32 const nRetSize = pReturnTypeRef->pType->nSize; if (bSimpleReturn && nRetSize <= 16 && nRetSize > 0) { - if (nRetSize > 8) - static_cast<sal_uInt64 *>(pRegisterReturn)[1] = rdx; - static_cast<sal_uInt64 *>(pRegisterReturn)[0] = rax; + sal_uInt64 longs[2]; + longs[0] = rax; + longs[1] = rdx; + + double doubles[2]; + doubles[0] = xmm0; + doubles[1] = xmm1; + x86_64::fill_struct( pReturnTypeRef, &longs[0], &doubles[0], pRegisterReturn); } break; } @@ -367,7 +374,7 @@ static void cpp_call( { callVirtualMethod( pAdjustedThisPtr, aVtableSlot.index, - pCppReturn, pReturnTypeDescr, bSimpleReturn, + pCppReturn, pReturnTypeRef, bSimpleReturn, pStackStart, ( pStack - pStackStart ), pGPR, nGPR, pFPR, nFPR ); diff --git a/bridges/source/cpp_uno/shared/vtablefactory.cxx b/bridges/source/cpp_uno/shared/vtablefactory.cxx index 34e5f9635974..3784f3959594 100644 --- a/bridges/source/cpp_uno/shared/vtablefactory.cxx +++ b/bridges/source/cpp_uno/shared/vtablefactory.cxx @@ -272,7 +272,7 @@ bool VtableFactory::createBlock(Block &block, sal_Int32 slotCount) const char *tmpfname = new char[aTmpName.getLength()+1]; strncpy(tmpfname, aTmpName.getStr(), aTmpName.getLength()+1); if ((block.fd = mkstemp(tmpfname)) == -1) - perror("creation of executable memory area failed"); + perror("creation of executable memory area failed"); if (block.fd == -1) { delete[] tmpfname; @@ -280,7 +280,13 @@ bool VtableFactory::createBlock(Block &block, sal_Int32 slotCount) const } unlink(tmpfname); delete[] tmpfname; - ftruncate(block.fd, block.size); + if (ftruncate(block.fd, block.size) == -1) + { + perror("truncation of executable memory area failed"); + close(block.fd); + block.fd = -1; + break; + } block.start = mmap(NULL, block.size, PROT_READ | PROT_WRITE, MAP_SHARED, block.fd, 0); if (block.start== MAP_FAILED) { block.start = 0; diff --git a/bridges/source/remote/static/proxy.cxx b/bridges/source/remote/static/proxy.cxx index 6f07ba95d6ff..6cfd9c11e9fb 100644 --- a/bridges/source/remote/static/proxy.cxx +++ b/bridges/source/remote/static/proxy.cxx @@ -30,12 +30,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_bridges.hxx" -#if OSL_DEBUG_LEVEL == 0 -# ifndef NDEBUG -# define NDEBUG -# endif -#endif -#include <assert.h> #include <sal/alloca.h> #include <bridges/remote/proxy.hxx> #include <bridges/remote/context.h> @@ -84,7 +78,7 @@ void acquireRemote2UnoProxy( uno_Interface *pThis ) freeRemote2UnoProxy, p->m_sOid.pData, p->m_pType ); - assert( (uno_Interface *)p == pThis ); + OSL_ASSERT( (uno_Interface *)p == pThis ); } } diff --git a/bridges/source/remote/static/remote.cxx b/bridges/source/remote/static/remote.cxx index 1cb26b4ccd9c..ed8b1dbc9d59 100644 --- a/bridges/source/remote/static/remote.cxx +++ b/bridges/source/remote/static/remote.cxx @@ -30,12 +30,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_bridges.hxx" -#if OSL_DEBUG_LEVEL == 0 -# ifndef NDEBUG -# define NDEBUG -# endif -#endif -#include <assert.h> #include <bridges/remote/remote.hxx> #include <bridges/remote/counter.hxx> @@ -90,7 +84,7 @@ void acquireRemote2RemoteStub( remote_Interface *pThis ) freeRemote2RemoteStub, p->m_sOid.pData, p->m_pType ); - assert( (remote_Interface *)p == pThis ); + OSL_ASSERT( (remote_Interface *)p == pThis ); } } diff --git a/bridges/source/remote/urp/urp_log.hxx b/bridges/source/remote/urp/urp_log.hxx index c7811faf51e9..6c96ea0dbffc 100644 --- a/bridges/source/remote/urp/urp_log.hxx +++ b/bridges/source/remote/urp/urp_log.hxx @@ -29,7 +29,7 @@ ************************************************************************/ namespace bridges_urp { -#ifndef PRODUCT +#ifdef DBG_UTIL #define BRIDGES_URP_PROT #endif diff --git a/bridges/source/remote/urp/urp_reader.cxx b/bridges/source/remote/urp/urp_reader.cxx index dd9ff0af80ec..f2ac4f3e9dc7 100644 --- a/bridges/source/remote/urp/urp_reader.cxx +++ b/bridges/source/remote/urp/urp_reader.cxx @@ -372,8 +372,8 @@ inline sal_Bool OReaderThread::readFlags( struct MessageFlags *pFlags ) } pFlags->bSynchronous = ( HDRFLAG_SYNCHRONOUS & moreFlags ); pFlags->bMustReply = ( HDRFLAG_MUSTREPLY & moreFlags ); - OSL_ENSURE( pFlags->bSynchronous && pFlags->bMustReply || - ! pFlags->bSynchronous && !pFlags->bMustReply, + OSL_ENSURE( (pFlags->bSynchronous && pFlags->bMustReply) || + (!pFlags->bSynchronous && !pFlags->bMustReply), "urp-bridge : customized calls currently not supported !"); } diff --git a/bridges/test/testclient.cxx b/bridges/test/testclient.cxx index df5ac58d1a2d..ce870bc19ea9 100644 --- a/bridges/test/testclient.cxx +++ b/bridges/test/testclient.cxx @@ -32,11 +32,6 @@ #include "precompiled_bridges.hxx" #include <string.h> -#if OSL_DEBUG_LEVEL == 0 -#undef NDEBUG -#define NDEBUG -#endif -#include <assert.h> #include <osl/time.h> #include <osl/mutex.hxx> @@ -193,10 +188,10 @@ int main( int argc, char *argv[] ) { // test the factory Reference < XBridge > rBridge2 = rFactory->getBridge( OUString( RTL_CONSTASCII_USTRINGPARAM("bla blub")) ); - assert( rBridge2.is() ); - assert( rBridge2->getDescription() == rBridge->getDescription( ) ); - assert( rBridge2->getName() == rBridge->getName() ); - assert( rBridge2 == rBridge ); + OSL_ASSERT( rBridge2.is() ); + OSL_ASSERT( rBridge2->getDescription() == rBridge->getDescription( ) ); + OSL_ASSERT( rBridge2->getName() == rBridge->getName() ); + OSL_ASSERT( rBridge2 == rBridge ); } @@ -230,7 +225,7 @@ int main( int argc, char *argv[] ) } Reference < XBridge > rBridge = rFactory->getBridge( OUString( RTL_CONSTASCII_USTRINGPARAM("bla blub")) ); -// assert( ! rBridge.is() ); +// OSL_ASSERT( ! rBridge.is() ); } } diff --git a/bridges/test/testcomp.cxx b/bridges/test/testcomp.cxx index 432a32f2a554..90a07ab31f43 100644 --- a/bridges/test/testcomp.cxx +++ b/bridges/test/testcomp.cxx @@ -30,11 +30,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_bridges.hxx" -#if OSL_DEBUG_LEVEL == 0 -#undef NDEBUG -#define NDEBUG -#endif -#include <assert.h> #include <string.h> #include <stdlib.h> #include <osl/time.h> @@ -598,7 +593,7 @@ void testException( const Reference < XCallMe > &r ) { try { r->call( OUString( RTL_CONSTASCII_USTRINGPARAM("dummy")) , -1 ); - assert( ! "no exception flown !" ); + OSL_ASSERT( ! "no exception flown !" ); } catch( TestBridgeException & e ) { @@ -606,11 +601,11 @@ void testException( const Reference < XCallMe > &r ) } catch( Exception & e ) { - assert( ! "only base class of exception could be catched!" ); + OSL_ASSERT( ! "only base class of exception could be catched!" ); } catch(...) { - assert(! "wrong unknown exception !" ); + OSL_ASSERT(! "wrong unknown exception !" ); } } diff --git a/bridges/test/testoffice.cxx b/bridges/test/testoffice.cxx index bae00be6caaa..bf5b470d7185 100644 --- a/bridges/test/testoffice.cxx +++ b/bridges/test/testoffice.cxx @@ -30,10 +30,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_bridges.hxx" -#if OSL_DEBUG_LEVEL == 0 -#define NDEBUG -#endif -#include <assert.h> #include <osl/time.h> #include <osl/mutex.hxx> @@ -96,7 +92,7 @@ void testPipe( const Reference < XMultiServiceFactory > & rSmgr ) rSmgr->createInstance( OUString::createFromAscii( "com.sun.star.io.Pipe" ) ), UNO_QUERY ); - assert( rOut.is() ); + OSL_ASSERT( rOut.is() ); { Sequence < sal_Int8 > seq( 10 ); @@ -115,7 +111,7 @@ void testPipe( const Reference < XMultiServiceFactory > & rSmgr ) if( ! ( 42 == seq.getArray()[0] ) ) printf( "wrong element in sequence\n" ); -// assert( 0 ); +// OSL_ASSERT( 0 ); } } #include<stdio.h> @@ -155,7 +151,7 @@ void testDocument( const Reference < XMultiServiceFactory > & rSmgr ) rSmgr->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop" ))), UNO_QUERY ); - assert( rLoader.is() ); + OSL_ASSERT( rLoader.is() ); sal_Char *urls[] = { "private:factory/swriter", diff --git a/bridges/test/testsameprocess.cxx b/bridges/test/testsameprocess.cxx index cf67d2484cb3..1cfc44078376 100644 --- a/bridges/test/testsameprocess.cxx +++ b/bridges/test/testsameprocess.cxx @@ -30,11 +30,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_bridges.hxx" -#if OSL_DEBUG_LEVEL == 0 -#undef NDEBUG -#define NDEBUG -#endif -#include <assert.h> #include <osl/time.h> #include <osl/mutex.hxx> @@ -201,7 +196,7 @@ int main( int argc, char *argv[] ) Reference < XBridge > rBridge = rFactory->getBridge( OUString( RTL_CONSTASCII_USTRINGPARAM("bla blub")) ); - assert( ! rBridge.is() ); + OSL_ASSERT( ! rBridge.is() ); } catch( Exception & ) diff --git a/cli_ure/prj/build.lst b/cli_ure/prj/build.lst index 007a01aec93f..268240c4597b 100644 --- a/cli_ure/prj/build.lst +++ b/cli_ure/prj/build.lst @@ -1,4 +1,4 @@ -ure cli_ure : cppu cppuhelper sal codemaker stoc udkapi tools NULL +ure cli_ure : cppu cppuhelper sal codemaker stoc udkapi bridges NULL ure cli_ure usr1 - all ure_mkout NULL ure cli_ure\inc nmake - all ure_inc NULL ure cli_ure\version nmake - all ure_source_version ure_inc NULL diff --git a/cli_ure/qa/climaker/makefile.mk b/cli_ure/qa/climaker/makefile.mk index cde3f4066142..a5b0af914f29 100644 --- a/cli_ure/qa/climaker/makefile.mk +++ b/cli_ure/qa/climaker/makefile.mk @@ -41,7 +41,7 @@ CLIMAKER*=$(WRAPCMD) $(BIN)$/climaker #----- compile .java files ----------------------------------------- -JARFILES = sandbox.jar ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar +JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar JAVAFILES = ClimakerTestCase.java JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class) diff --git a/cli_ure/source/native/path.cxx b/cli_ure/source/native/path.cxx index 075a3cdb75bd..9ef17010b0d2 100644 --- a/cli_ure/source/native/path.cxx +++ b/cli_ure/source/native/path.cxx @@ -38,7 +38,7 @@ #include <windows.h> #include "sal/types.h" -#include "tools/pathutils.hxx" +//#include "tools/pathutils.hxx" namespace cli_ure { diff --git a/codemaker/test/cppumaker/makefile.mk b/codemaker/test/cppumaker/makefile.mk index bab3dcbb30ea..1bc926dc0fe0 100644 --- a/codemaker/test/cppumaker/makefile.mk +++ b/codemaker/test/cppumaker/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -43,7 +43,7 @@ INCPRE += $(MISC)$/$(TARGET)$/inc SHL1TARGET = $(TARGET) SHL1OBJS = $(SLO)$/test_codemaker_cppumaker.obj -SHL1STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) +SHL1STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) $(TESTSHL2LIB) SHL1VERSIONMAP = version.map SHL1IMPLIB = i$(SHL1TARGET) DEF1NAME = $(SHL1TARGET) diff --git a/codemaker/test/cppumaker/test_codemaker_cppumaker.cxx b/codemaker/test/cppumaker/test_codemaker_cppumaker.cxx index 2f5c75fc1d92..9cd3dc70d3fd 100644 --- a/codemaker/test/cppumaker/test_codemaker_cppumaker.cxx +++ b/codemaker/test/cppumaker/test_codemaker_cppumaker.cxx @@ -369,7 +369,7 @@ #include "com/sun/star/uno/Any.hxx" #include "com/sun/star/uno/Type.hxx" #include "com/sun/star/uno/TypeClass.hpp" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/ustring.h" #include "rtl/ustring.hxx" diff --git a/cppu/qa/makefile.mk b/cppu/qa/makefile.mk index 4051dd6d82ec..8b720c832cf4 100644 --- a/cppu/qa/makefile.mk +++ b/cppu/qa/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -43,28 +43,28 @@ INCPRE += $(MISC)$/$(TARGET)$/inc SHL1TARGET = $(TARGET)_any SHL1OBJS = $(SLO)$/test_any.obj -SHL1STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) +SHL1STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(TESTSHL2LIB) $(SALLIB) SHL1VERSIONMAP = version.map SHL1IMPLIB = i$(SHL1TARGET) DEF1NAME = $(SHL1TARGET) SHL2TARGET = $(TARGET)_unotype SHL2OBJS = $(SLO)$/test_unotype.obj -SHL2STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) +SHL2STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(TESTSHL2LIB) $(SALLIB) SHL2VERSIONMAP = version.map SHL2IMPLIB = i$(SHL2TARGET) DEF2NAME = $(SHL2TARGET) SHL3TARGET = $(TARGET)_reference SHL3OBJS = $(SLO)$/test_reference.obj -SHL3STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) +SHL3STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(TESTSHL2LIB) $(SALLIB) SHL3VERSIONMAP = version.map SHL3IMPLIB = i$(SHL3TARGET) DEF3NAME = $(SHL3TARGET) SHL4TARGET = $(TARGET)_recursion SHL4OBJS = $(SLO)$/test_recursion.obj -SHL4STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(SALLIB) +SHL4STDLIBS = $(CPPULIB) $(CPPUNITLIB) $(TESTSHL2LIB) $(SALLIB) SHL4VERSIONMAP = version.map SHL4IMPLIB = i$(SHL4TARGET) DEF4NAME = $(SHL4TARGET) @@ -92,7 +92,7 @@ $(MISC)$/$(TARGET)$/types.urd: types.idl $(IDLC) -O$(MISC)$/$(TARGET) -I$(SOLARIDLDIR) -cid -we $< test .PHONY: $(SHL1TARGETN) $(SHL2TARGETN) $(SHL3TARGETN) $(SHL4TARGETN) - testshl2 $(SHL1TARGETN) - testshl2 $(SHL2TARGETN) - testshl2 $(SHL3TARGETN) - testshl2 $(SHL4TARGETN)
\ No newline at end of file + $(TESTSHL2) $(SHL1TARGETN) + $(TESTSHL2) $(SHL2TARGETN) + $(TESTSHL2) $(SHL3TARGETN) + $(TESTSHL2) $(SHL4TARGETN) diff --git a/cppu/qa/test_any.cxx b/cppu/qa/test_any.cxx index cad91661926f..785af529e51a 100644 --- a/cppu/qa/test_any.cxx +++ b/cppu/qa/test_any.cxx @@ -58,7 +58,7 @@ #include "com/sun/star/uno/Sequence.hxx" #include "com/sun/star/uno/Type.hxx" #include "com/sun/star/uno/XInterface.hpp" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "osl/diagnose.h" #include "osl/interlck.h" #include "rtl/string.h" diff --git a/cppu/qa/test_recursion.cxx b/cppu/qa/test_recursion.cxx index 6ae70c44d003..60853776662b 100644 --- a/cppu/qa/test_recursion.cxx +++ b/cppu/qa/test_recursion.cxx @@ -31,7 +31,7 @@ #include "precompiled_cppu.hxx" #include "sal/config.h" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "sal/types.h" #include "Rec.hpp" diff --git a/cppu/qa/test_reference.cxx b/cppu/qa/test_reference.cxx index afb12654a124..8bb793c655e4 100644 --- a/cppu/qa/test_reference.cxx +++ b/cppu/qa/test_reference.cxx @@ -35,7 +35,7 @@ #include "Interface1.hpp" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/ustring.hxx" #include "sal/types.h" diff --git a/cppu/qa/test_unotype.cxx b/cppu/qa/test_unotype.cxx index 0068dcedd463..ad457d516fa2 100644 --- a/cppu/qa/test_unotype.cxx +++ b/cppu/qa/test_unotype.cxx @@ -47,7 +47,7 @@ #include "com/sun/star/uno/XComponentContext.hpp" #include "com/sun/star/uno/XInterface.hpp" #include "cppu/unotype.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/ustring.h" #include "rtl/ustring.hxx" #include "sal/types.h" diff --git a/cppuhelper/inc/cppuhelper/weak.hxx b/cppuhelper/inc/cppuhelper/weak.hxx index f4b9c38d2215..9072ba6f6240 100644 --- a/cppuhelper/inc/cppuhelper/weak.hxx +++ b/cppuhelper/inc/cppuhelper/weak.hxx @@ -67,6 +67,12 @@ protected: */ virtual ~OWeakObject() SAL_THROW( (::com::sun::star::uno::RuntimeException) ); + /** disposes and resets m_pWeakConnectionPoint + @precond + m_refCount equals 0 + */ + void disposeWeakConnectionPoint(); + /** reference count. @attention diff --git a/cppuhelper/qa/ifcontainer/cppu_ifcontainer.cxx b/cppuhelper/qa/ifcontainer/cppu_ifcontainer.cxx index ddbc3f7c6f82..cfcfebf246e6 100644 --- a/cppuhelper/qa/ifcontainer/cppu_ifcontainer.cxx +++ b/cppuhelper/qa/ifcontainer/cppu_ifcontainer.cxx @@ -28,7 +28,7 @@ * ************************************************************************/ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include "com/sun/star/lang/XEventListener.hpp" #include "cppuhelper/interfacecontainer.hxx" diff --git a/cppuhelper/qa/ifcontainer/makefile.mk b/cppuhelper/qa/ifcontainer/makefile.mk index dd6c13fea52c..624bc797a64b 100644 --- a/cppuhelper/qa/ifcontainer/makefile.mk +++ b/cppuhelper/qa/ifcontainer/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -41,7 +41,7 @@ ENABLE_EXCEPTIONS=TRUE # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/cppu_ifcontainer.obj SHL1TARGET= cppu_ifcontainer @@ -49,6 +49,7 @@ SHL1STDLIBS=\ $(CPPUHELPERLIB) \ $(SALLIB) \ $(CPPULIB) \ + $(TESTSHL2LIB)\ $(CPPUNITLIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) diff --git a/cppuhelper/qa/propertysetmixin/makefile.mk b/cppuhelper/qa/propertysetmixin/makefile.mk index b081274d8e99..2ad56c05ff1c 100644 --- a/cppuhelper/qa/propertysetmixin/makefile.mk +++ b/cppuhelper/qa/propertysetmixin/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -54,7 +54,7 @@ INCPRE += -I$(MISC)$/$(TARGET)$/inc SHL1TARGET = $(TARGET) SHL1OBJS = $(SLO)$/test_propertysetmixin.obj -SHL1STDLIBS = $(CPPULIB) $(CPPUHELPERLIB) $(CPPUNITLIB) $(SALLIB) +SHL1STDLIBS = $(CPPULIB) $(CPPUHELPERLIB) $(CPPUNITLIB) $(SALLIB) $(TESTSHL2LIB) SHL1IMPLIB = i$(SHL1TARGET) DEF1NAME = $(SHL1TARGET) diff --git a/cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx b/cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx index 5336b60ae68a..ecb7220d110d 100644 --- a/cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx +++ b/cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx @@ -64,7 +64,7 @@ #include "com/sun/star/uno/XComponentContext.hpp" #include "cppuhelper/implbase1.hxx" #include "cppuhelper/servicefactory.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "osl/mutex.hxx" #include "osl/thread.h" #include "rtl/ref.hxx" diff --git a/cppuhelper/qa/unourl/cppu_unourl.cxx b/cppuhelper/qa/unourl/cppu_unourl.cxx index 21af4b8d1364..f80388d5d122 100644 --- a/cppuhelper/qa/unourl/cppu_unourl.cxx +++ b/cppuhelper/qa/unourl/cppu_unourl.cxx @@ -28,7 +28,7 @@ * ************************************************************************/ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include "cppuhelper/unourl.hxx" #include "rtl/malformeduriexception.hxx" diff --git a/cppuhelper/qa/unourl/makefile.mk b/cppuhelper/qa/unourl/makefile.mk index a611b135c7e9..a999532c5b4a 100644 --- a/cppuhelper/qa/unourl/makefile.mk +++ b/cppuhelper/qa/unourl/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -41,7 +41,7 @@ ENABLE_EXCEPTIONS=TRUE # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/cppu_unourl.obj SHL1TARGET= cppu_unourl @@ -49,6 +49,7 @@ SHL1STDLIBS=\ $(CPPUHELPERLIB) \ $(SALLIB) \ $(CPPULIB) \ + $(TESTSHL2LIB)\ $(CPPUNITLIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) diff --git a/cppuhelper/qa/weak/makefile.mk b/cppuhelper/qa/weak/makefile.mk index 95f1697ef7be..bb0072b4d0f3 100644 --- a/cppuhelper/qa/weak/makefile.mk +++ b/cppuhelper/qa/weak/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -41,7 +41,7 @@ DLLPRE = # no leading "lib" on .so files SHL1TARGET = $(TARGET) SHL1OBJS = $(SLO)$/test_weak.obj -SHL1STDLIBS = $(CPPULIB) $(CPPUHELPERLIB) $(CPPUNITLIB) $(SALLIB) +SHL1STDLIBS = $(CPPULIB) $(CPPUHELPERLIB) $(CPPUNITLIB) $(SALLIB) $(TESTSHL2LIB) SHL1VERSIONMAP = version.map SHL1IMPLIB = i$(SHL1TARGET) DEF1NAME = $(SHL1TARGET) @@ -53,4 +53,4 @@ SLOFILES = $(SHL1OBJS) ALLTAR: test test .PHONY: $(SHL1TARGETN) - testshl2 $(SHL1TARGETN) + $(TESTSHL2) $(SHL1TARGETN) diff --git a/cppuhelper/qa/weak/test_weak.cxx b/cppuhelper/qa/weak/test_weak.cxx index 98bbb6527276..0cf128d519d6 100644 --- a/cppuhelper/qa/weak/test_weak.cxx +++ b/cppuhelper/qa/weak/test_weak.cxx @@ -41,7 +41,7 @@ #include "com/sun/star/uno/XWeak.hpp" #include "cppuhelper/implbase1.hxx" #include "cppuhelper/weak.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/ref.hxx" #include "sal/types.h" diff --git a/cppuhelper/source/cc5_solaris_sparc.map b/cppuhelper/source/cc5_solaris_sparc.map index 0c3f1c556d64..0961c6830d1f 100755 --- a/cppuhelper/source/cc5_solaris_sparc.map +++ b/cppuhelper/source/cc5_solaris_sparc.map @@ -379,3 +379,8 @@ UDK_3.6 { # OOo 3.0 __1cEcppuSOPropertySetHelper2t5B6Mrn0ATOBroadcastHelperVar4n0AbIOMultiTypeInterfaceContainerHelper_nDcomDsunEstarDunoEType___pn0AWIEventNotificationHook_b_v_; __1cEcppuSOPropertySetHelper2t6Mrn0ATOBroadcastHelperVar4n0AbIOMultiTypeInterfaceContainerHelper_nDcomDsunEstarDunoEType___pn0AWIEventNotificationHook_b_v_; } UDK_3.5; + +UDK_3.7 { # OOo 3.3 + global: + __1cEcppuLOWeakObjectbAdisposeWeakConnectionPoint6M_v_; +} UDK_3.6; diff --git a/cppuhelper/source/component.cxx b/cppuhelper/source/component.cxx index d94614703be5..728f6815c309 100644 --- a/cppuhelper/source/component.cxx +++ b/cppuhelper/source/component.cxx @@ -90,6 +90,10 @@ void OComponentHelper::release() throw() { if (! rBHelper.bDisposed) { + // *before* again incrementing our ref count, ensure that our weak connection point + // will not create references to us anymore (via XAdapter::queryAdapted) + disposeWeakConnectionPoint(); + Reference<XInterface > xHoldAlive( *this ); // First dispose try diff --git a/cppuhelper/source/gcc3.map b/cppuhelper/source/gcc3.map index 819c3e046b30..9348e91525c0 100644 --- a/cppuhelper/source/gcc3.map +++ b/cppuhelper/source/gcc3.map @@ -373,3 +373,9 @@ UDK_3.5 { # OOo 3.0 _ZN4cppu18OPropertySetHelperC1ERNS_19OBroadcastHelperVarINS_34OMultiTypeInterfaceContainerHelperEN3com3sun4star3uno4TypeEEEPNS_22IEventNotificationHookEb; _ZN4cppu18OPropertySetHelperC2ERNS_19OBroadcastHelperVarINS_34OMultiTypeInterfaceContainerHelperEN3com3sun4star3uno4TypeEEEPNS_22IEventNotificationHookEb; } UDK_3.4; + +UDK_3.6 { # OOo 3.3 + global: + _ZN4cppu11OWeakObject26disposeWeakConnectionPointEv; +} UDK_3.5; + diff --git a/cppuhelper/source/implbase.cxx b/cppuhelper/source/implbase.cxx index 9caa4ca93615..acf05724c71b 100644 --- a/cppuhelper/source/implbase.cxx +++ b/cppuhelper/source/implbase.cxx @@ -247,6 +247,8 @@ void WeakComponentImplHelperBase::release() throw () { if (osl_decrementInterlockedCount( &m_refCount ) == 0) { + // ensure no other references are created, via the weak connection point, from now on + disposeWeakConnectionPoint(); // restore reference count: osl_incrementInterlockedCount( &m_refCount ); if (! rBHelper.bDisposed) { @@ -381,6 +383,8 @@ void WeakAggComponentImplHelperBase::release() OWeakAggObject::release(); } else if (osl_decrementInterlockedCount( &m_refCount ) == 0) { + // ensure no other references are created, via the weak connection point, from now on + disposeWeakConnectionPoint(); // restore reference count: osl_incrementInterlockedCount( &m_refCount ); if (! rBHelper.bDisposed) { diff --git a/cppuhelper/source/interfacecontainer.cxx b/cppuhelper/source/interfacecontainer.cxx index 88f25e192e49..cc5b7708f1d8 100644 --- a/cppuhelper/source/interfacecontainer.cxx +++ b/cppuhelper/source/interfacecontainer.cxx @@ -40,13 +40,6 @@ #include <hash_map> -#if OSL_DEBUG_LEVEL == 0 -# ifndef NDEBUG -# define NDEBUG -# endif -#endif -#include <assert.h> - #include <com/sun/star/lang/XEventListener.hpp> diff --git a/cppuhelper/source/msvc_win32_intel.map b/cppuhelper/source/msvc_win32_intel.map index a90ec88f3ca3..c999ae200ac2 100644 --- a/cppuhelper/source/msvc_win32_intel.map +++ b/cppuhelper/source/msvc_win32_intel.map @@ -271,3 +271,8 @@ UDK_3.5 { # OOo 3.0 global: ??0OPropertySetHelper@cppu@@QAE@AAU?$OBroadcastHelperVar@VOMultiTypeInterfaceContainerHelper@cppu@@VType@uno@star@sun@com@@@1@PAVIEventNotificationHook@1@_N@Z; } UDK_3.4; + +UDK_3.6 { # OOo 3.3 + global: + ?disposeWeakConnectionPoint@OWeakObject@cppu@@IAEXXZ; +} UDK_3.5; diff --git a/cppuhelper/source/tdmgr.cxx b/cppuhelper/source/tdmgr.cxx index 306ace09d592..6f2aa70ea2d5 100644 --- a/cppuhelper/source/tdmgr.cxx +++ b/cppuhelper/source/tdmgr.cxx @@ -688,17 +688,17 @@ static void SAL_CALL typelib_callback( catch (container::NoSuchElementException & exc) { (void) exc; // avoid warning about unused variable - OSL_ENSURE( - 0, OUStringToOString( - OUString( RTL_CONSTASCII_USTRINGPARAM( - "typelibrary type not available: ") ) + + OSL_TRACE( + "typelibrary type not available: %s", + OUStringToOString( exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() ); } catch (Exception & exc) { (void) exc; // avoid warning about unused variable - OSL_ENSURE( - 0, OUStringToOString( + OSL_TRACE( + "%s", + OUStringToOString( exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() ); } } diff --git a/cppuhelper/source/weak.cxx b/cppuhelper/source/weak.cxx index c4055eba4f8a..b518d2526e3b 100644 --- a/cppuhelper/source/weak.cxx +++ b/cppuhelper/source/weak.cxx @@ -216,25 +216,31 @@ void SAL_CALL OWeakObject::release() throw() if (osl_decrementInterlockedCount( &m_refCount ) == 0) { // notify/clear all weak-refs before object's dtor is executed // (which may check weak-refs to this object): - if (m_pWeakConnectionPoint != 0) { - OWeakConnectionPoint * const p = m_pWeakConnectionPoint; - m_pWeakConnectionPoint = 0; - try { - p->dispose(); - } - catch (RuntimeException const& exc) { - OSL_ENSURE( - false, OUStringToOString( - exc.Message, RTL_TEXTENCODING_ASCII_US ).getStr() ); - static_cast<void>(exc); - } - p->release(); - } + disposeWeakConnectionPoint(); // destroy object: delete this; } } +void OWeakObject::disposeWeakConnectionPoint() +{ + OSL_PRECOND( m_refCount == 0, "OWeakObject::disposeWeakConnectionPoint: only to be called with a ref count of 0!" ); + if (m_pWeakConnectionPoint != 0) { + OWeakConnectionPoint * const p = m_pWeakConnectionPoint; + m_pWeakConnectionPoint = 0; + try { + p->dispose(); + } + catch (RuntimeException const& exc) { + OSL_ENSURE( + false, OUStringToOString( + exc.Message, RTL_TEXTENCODING_ASCII_US ).getStr() ); + static_cast<void>(exc); + } + p->release(); + } +} + OWeakObject::~OWeakObject() SAL_THROW( (RuntimeException) ) { } diff --git a/cppuhelper/test/testidlclass.cxx b/cppuhelper/test/testidlclass.cxx index 8784f59d79e3..89b2d6411e77 100644 --- a/cppuhelper/test/testidlclass.cxx +++ b/cppuhelper/test/testidlclass.cxx @@ -30,11 +30,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_cppuhelper.hxx" -#if OSL_DEBUG_LEVEL == 0 -#undef NDEBUG -#define NDEBUG -#endif -#include <assert.h> #include <cppuhelper/stdidlclass.hxx> @@ -65,18 +60,18 @@ void testidlclass( const Reference < XMultiServiceFactory > &rSMgr) (XServiceInfo * ) 0 ); - assert( r.is() ); + OSL_ASSERT( r.is() ); { // test the xidlclassprovider interface ! Reference< XIdlClassProvider > rProv( r , UNO_QUERY ); - assert( rProv.is() ); + OSL_ASSERT( rProv.is() ); { Sequence < Reference < XIdlClass > > seq = rProv->getIdlClasses(); // is always one - assert( seq.getLength() == 1 ); + OSL_ASSERT( seq.getLength() == 1 ); // test the weak reference rProv->getIdlClasses(); @@ -89,7 +84,7 @@ void testidlclass( const Reference < XMultiServiceFactory > &rSMgr) } - assert( r->getName() == sImplName ); + OSL_ASSERT( r->getName() == sImplName ); // test equals Reference < XIdlClass > r2 = @@ -101,18 +96,18 @@ void testidlclass( const Reference < XMultiServiceFactory > &rSMgr) (XServiceInfo * ) 0 ); // test for implementation name - assert( r2->equals( r ) ); + OSL_ASSERT( r2->equals( r ) ); Sequence < Reference < XIdlClass > > seqIdlClass = r->getInterfaces(); //TODO ! // one idl class for one interface // this test fails, if core reflection fails ! -// assert( 1 == seqIdlClass.getLength() ); +// OSL_ASSERT( 1 == seqIdlClass.getLength() ); // Reference < XIdlClass > rIdlInterface = seqIdlClass.getArray()[0]; // check for IdlClass interface returned by Core Reflection -// assert( rIdlInterface.is() ); +// OSL_ASSERT( rIdlInterface.is() ); diff --git a/cppuhelper/test/testproptyphlp.cxx b/cppuhelper/test/testproptyphlp.cxx index e798f86cab54..d3b17ed3e83a 100644 --- a/cppuhelper/test/testproptyphlp.cxx +++ b/cppuhelper/test/testproptyphlp.cxx @@ -34,12 +34,6 @@ #include <com/sun/star/beans/Property.hpp> -#if OSL_DEBUG_LEVEL == 0 -#undef NDEBUG -#define NDEBUG -#endif -#include <assert.h> - using namespace ::com::sun::star::uno; using namespace ::cppu; @@ -51,27 +45,27 @@ void testPropertyTypeHelper() sal_Int32 i; convertPropertyValue( i , a ); - assert( 25 == i ); + OSL_ASSERT( 25 == i ); sal_Int16 i16; convertPropertyValue( i16 , a ); - assert( 25 == i16 ); + OSL_ASSERT( 25 == i16 ); sal_Int8 i8; convertPropertyValue( i8 , a ); - assert( 25 == i8 ); + OSL_ASSERT( 25 == i8 ); sal_uInt32 i32; convertPropertyValue( i32 , a ); - assert( 25 == i32 ); + OSL_ASSERT( 25 == i32 ); double d; convertPropertyValue( d , a ); - assert( 25. == d ); + OSL_ASSERT( 25. == d ); float f; convertPropertyValue( f , a ); - assert( 25. == f ); + OSL_ASSERT( 25. == f ); ::com::sun::star::beans::Property prop; @@ -83,11 +77,11 @@ void testPropertyTypeHelper() ::com::sun::star::beans::Property prop2; convertPropertyValue( prop2 , a ); - assert( prop.Handle == prop2.Handle && prop.Name == prop2.Name && prop.Attributes == prop2.Attributes ); + OSL_ASSERT( prop.Handle == prop2.Handle && prop.Name == prop2.Name && prop.Attributes == prop2.Attributes ); ::rtl::OUString ow; a <<= prop.Name; convertPropertyValue( ow , a ); - assert( ow == prop.Name ); + OSL_ASSERT( ow == prop.Name ); } diff --git a/cpputools/source/sp2bv/makefile.mk b/cpputools/source/sp2bv/makefile.mk index 2b80d6e431c6..e9ca09bff6df 100644 --- a/cpputools/source/sp2bv/makefile.mk +++ b/cpputools/source/sp2bv/makefile.mk @@ -34,7 +34,7 @@ PRJ=..$/.. PRJNAME=cpputools TARGET=sp2bv TARGETTYPE=CUI -.IF "$(OS)"!="IRIX" && "$(OS)" != "MACOSX" +.IF "$(OS)" != "MACOSX" # hack to get stdc++ linked NO_DEFAULT_STL=TRUE .ENDIF diff --git a/io/source/stm/omark.cxx b/io/source/stm/omark.cxx index 69ccf08fce6a..29d326170ff1 100644 --- a/io/source/stm/omark.cxx +++ b/io/source/stm/omark.cxx @@ -49,12 +49,6 @@ #include <osl/mutex.hxx> #include <rtl/ustrbuf.hxx> -#if OSL_DEBUG_LEVEL == 0 -# ifndef NDEBUG -# define NDEBUG -# endif -#endif -#include <assert.h> #include <string.h> @@ -632,7 +626,7 @@ sal_Int32 OMarkableInputStream::readBytes(Sequence< sal_Int8 >& aData, sal_Int32 sal_Int32 nToRead = nBytesToRead - ( m_pBuffer->getSize() - m_nCurrentPos ); nRead = m_input->readBytes( aData , nToRead ); - assert( aData.getLength() == nRead ); + OSL_ASSERT( aData.getLength() == nRead ); try { @@ -650,7 +644,7 @@ sal_Int32 OMarkableInputStream::readBytes(Sequence< sal_Int8 >& aData, sal_Int32 } } - assert( m_pBuffer->getSize() - m_nCurrentPos >= nBytesToRead ); + OSL_ASSERT( m_pBuffer->getSize() - m_nCurrentPos >= nBytesToRead ); m_pBuffer->readAt( m_nCurrentPos , aData , nBytesToRead ); diff --git a/io/test/stm/datatest.cxx b/io/test/stm/datatest.cxx index 3de10d5fe63e..b7515b3c5417 100644 --- a/io/test/stm/datatest.cxx +++ b/io/test/stm/datatest.cxx @@ -55,10 +55,6 @@ #include <osl/conditn.hxx> #include <osl/mutex.hxx> -#if OSL_DEBUG_LEVEL == 0 -#define NDEBUG -#endif -#include <assert.h> #include <string.h> using namespace ::rtl; @@ -209,13 +205,13 @@ sal_Int32 ODataStreamTest::test( rSource = Reference< XActiveDataSource > ( x, UNO_QUERY ); } - assert( rPipeInput.is() ); - assert( rPipeOutput.is() ); + OSL_ASSERT( rPipeInput.is() ); + OSL_ASSERT( rPipeOutput.is() ); rSink->setInputStream( rPipeInput ); rSource->setOutputStream( rPipeOutput ); - assert( rSink->getInputStream().is() ); - assert( rSource->getOutputStream().is() ); + OSL_ASSERT( rSink->getInputStream().is() ); + OSL_ASSERT( rSource->getOutputStream().is() ); if( 1 == hTestHandle ) { testSimple( rInput , rOutput ); @@ -778,10 +774,10 @@ sal_Int32 OObjectStreamTest::test( const OUString& TestName, Reference <XOutputStream > markableOutput( x , UNO_QUERY ); Reference <XActiveDataSource > markableSource( x , UNO_QUERY ); - assert( markableInput.is() ); - assert( markableOutput.is() ); - assert( markableSink.is() ); - assert( markableSource.is() ); + OSL_ASSERT( markableInput.is() ); + OSL_ASSERT( markableOutput.is() ); + OSL_ASSERT( markableSink.is() ); + OSL_ASSERT( markableSource.is() ); markableSink->setInputStream( rPipeInput ); markableSource->setOutputStream( rPipeOutput ); @@ -799,14 +795,14 @@ sal_Int32 OObjectStreamTest::test( const OUString& TestName, rSource = Reference <XActiveDataSource>( x, UNO_QUERY ); } - assert( rPipeInput.is() ); - assert( rPipeOutput.is() ); + OSL_ASSERT( rPipeInput.is() ); + OSL_ASSERT( rPipeOutput.is() ); rSink->setInputStream( markableInput ); rSource->setOutputStream( markableOutput ); - assert( rSink->getInputStream().is() ); - assert( rSource->getOutputStream().is() ); + OSL_ASSERT( rSink->getInputStream().is() ); + OSL_ASSERT( rSource->getOutputStream().is() ); if( 1 + DATASTREAM_TEST_MAX_HANDLE == hTestHandle ) { testObject( rOutput , rInput); diff --git a/io/test/stm/marktest.cxx b/io/test/stm/marktest.cxx index 88d52a09c891..20e4015ffa1f 100644 --- a/io/test/stm/marktest.cxx +++ b/io/test/stm/marktest.cxx @@ -46,12 +46,6 @@ #include <osl/conditn.hxx> #include <osl/mutex.hxx> -#if OSL_DEBUG_LEVEL == 0 -#define NDEBUG -#endif -#include <assert.h> -#include <string.h> - using namespace ::rtl; using namespace ::osl; using namespace ::cppu; @@ -159,8 +153,8 @@ sal_Int32 OMarkableOutputStreamTest::test( Reference< XOutputStream > rOutput( TestObject , UNO_QUERY ); - assert( rPipeInput.is() ); - assert( rOutput.is() ); + OSL_ASSERT( rPipeInput.is() ); + OSL_ASSERT( rOutput.is() ); if( 1 == hTestHandle ) { // checks usual streaming testSimple( rOutput , rPipeInput ); @@ -526,8 +520,8 @@ sal_Int32 OMarkableInputStreamTest::test( Reference < XInputStream > rInput( TestObject , UNO_QUERY ); - assert( rPipeOutput.is() ); - assert( rInput.is() ); + OSL_ASSERT( rPipeOutput.is() ); + OSL_ASSERT( rInput.is() ); if( 1 == hTestHandle ) { // checks usual streaming testSimple( rPipeOutput , rInput ); diff --git a/jurt/com/sun/star/lib/uno/environments/java/java_environment.java b/jurt/com/sun/star/lib/uno/environments/java/java_environment.java index 36404f28d57e..aa9a21a26b22 100644 --- a/jurt/com/sun/star/lib/uno/environments/java/java_environment.java +++ b/jurt/com/sun/star/lib/uno/environments/java/java_environment.java @@ -37,7 +37,6 @@ import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import java.util.HashMap; import java.util.Iterator; -import java.util.LinkedList; /** * The java_environment is the environment where objects and @@ -159,70 +158,64 @@ public final class java_environment implements IEnvironment { } private static final class Registry { - public Object register(Object object, String oid, Type type) { - synchronized (map) { - cleanUp(); - Level1Entry l1 = getLevel1Entry(oid); - if (l1 != null) { - Level2Entry l2 = l1.get(type); - if (l2 != null) { - Object o = l2.get(); - if (o != null) { - l2.acquire(); - return o; - } + public synchronized Object register( + Object object, String oid, Type type) + { + cleanUp(); + Level1Entry l1 = level1map.get(oid); + if (l1 != null) { + Level2Entry l2 = l1.level2map.get(type); + if (l2 != null) { + Object o = l2.get(); + if (o != null) { + l2.acquire(); + return o; } } - // TODO If a holder references an unreachable object, but still - // has a positive count, it is replaced with a new holder - // (referencing a reachable object, and with a count of 1). Any - // later calls to revoke that should decrement the count of the - // previous holder would now decrement the count of the new - // holder, removing it prematurely. This is a design flaw that - // will be fixed when IEnvironment.revokeInterface is changed to - // no longer use counting. (And this problem is harmless, as - // currently a holder either references a strongly held object - // and uses register/revoke to control it, or references a - // weakly held proxy and never revokes it.) - if (l1 == null) { - l1 = new Level1Entry(); - map.put(oid, l1); - } - l1.add(new Level2Entry(oid, type, object, queue)); } + // TODO If a holder references an unreachable object, but still has + // a positive count, it is replaced with a new holder (referencing a + // reachable object, and with a count of 1). Any later calls to + // revoke that should decrement the count of the previous holder + // would now decrement the count of the new holder, removing it + // prematurely. This is a design flaw that will be fixed when + // IEnvironment.revokeInterface is changed to no longer use + // counting. (And this problem is harmless, as currently a holder + // either references a strongly held object and uses register/revoke + // to control it, or references a weakly held proxy and never + // revokes it.) + if (l1 == null) { + l1 = new Level1Entry(); + level1map.put(oid, l1); + } + l1.level2map.put(type, new Level2Entry(oid, type, object, queue)); return object; } - public boolean revoke(String oid, Type type) { - synchronized (map) { - Level1Entry l1 = getLevel1Entry(oid); - Level2Entry l2 = null; - if (l1 != null) { - l2 = l1.get(type); - if (l2 != null && l2.release()) { - removeLevel2Entry(oid, l1, l2); - } + public synchronized boolean revoke(String oid, Type type) { + Level1Entry l1 = level1map.get(oid); + Level2Entry l2 = null; + if (l1 != null) { + l2 = l1.level2map.get(type); + if (l2 != null && l2.release()) { + removeLevel2Entry(l1, oid, type); } - cleanUp(); - return l2 != null; } + cleanUp(); + return l2 != null; } - public Object get(String oid, Type type) { - synchronized (map) { - Level1Entry l1 = getLevel1Entry(oid); - return l1 == null ? null : l1.find(type); - } + public synchronized Object get(String oid, Type type) { + Level1Entry l1 = level1map.get(oid); + return l1 == null ? null : l1.find(type); } - public void clear() { - synchronized (map) { - map.clear(); - cleanUp(); - } + public synchronized void clear() { + level1map.clear(); + cleanUp(); } - // must only be called while synchronized on map: + // must only be called while synchronized on this Registry: private void cleanUp() { for (;;) { Level2Entry l2 = (Level2Entry) queue.poll(); @@ -235,55 +228,38 @@ public final class java_environment implements IEnvironment { // created since now e1.get() == null), and only then e1 is // enqueued. To not erroneously remove the new e2 in that case, // check whether the map still contains e1: - String oid = l2.getOid(); - Level1Entry l1 = getLevel1Entry(oid); - if (l1 != null && l1.get(l2.getType()) == l2) { - removeLevel2Entry(oid, l1, l2); + Level1Entry l1 = level1map.get(l2.oid); + if (l1 != null && l1.level2map.get(l2.type) == l2) { + removeLevel2Entry(l1, l2.oid, l2.type); } } } - // must only be called while synchronized on map: - private Level1Entry getLevel1Entry(String oid) { - return (Level1Entry) map.get(oid); - } - - // must only be called while synchronized on map: - private void removeLevel2Entry(String oid, Level1Entry l1, - Level2Entry l2) { - if (l1.remove(l2)) { - map.remove(oid); + // must only be called while synchronized on this Registry: + private void removeLevel2Entry(Level1Entry l1, String oid, Type type) { + l1.level2map.remove(type); + if (l1.level2map.isEmpty()) { + level1map.remove(oid); } } private static final class Level1Entry { - // must only be called while synchronized on map: - public Level2Entry get(Type type) { - for (Iterator i = list.iterator(); i.hasNext();) { - Level2Entry l2 = (Level2Entry) i.next(); - if (l2.getType().equals(type)) { - return l2; - } - } - return null; - } - - // must only be called while synchronized on map: + // must only be called while synchronized on enclosing Registry: public Object find(Type type) { // First, look for an exactly matching entry; then, look for an // arbitrary entry for a subtype of the request type: - for (Iterator i = list.iterator(); i.hasNext();) { - Level2Entry l2 = (Level2Entry) i.next(); - if (l2.getType().equals(type)) { - Object o = l2.get(); - if (o != null) { - return o; - } + Level2Entry l2 = level2map.get(type); + if (l2 != null) { + Object o = l2.get(); + if (o != null) { + return o; } } - for (Iterator i = list.iterator(); i.hasNext();) { - Level2Entry l2 = (Level2Entry) i.next(); - if (type.isSupertypeOf(l2.getType())) { + for (Iterator<Level2Entry> i = level2map.values().iterator(); + i.hasNext();) + { + l2 = i.next(); + if (type.isSupertypeOf(l2.type)) { Object o = l2.get(); if (o != null) { return o; @@ -293,53 +269,37 @@ public final class java_environment implements IEnvironment { return null; } - // must only be called while synchronized on map: - public void add(Level2Entry l2) { - list.add(l2); - } - - // must only be called while synchronized on map: - public boolean remove(Level2Entry l2) { - list.remove(l2); - return list.isEmpty(); - } - - private final LinkedList list = new LinkedList(); // of Level2Entry + public final HashMap<Type, Level2Entry> level2map = + new HashMap<Type, Level2Entry>(); } - private static final class Level2Entry extends WeakReference { - public Level2Entry(String oid, Type type, Object object, - ReferenceQueue queue) { + private static final class Level2Entry extends WeakReference<Object> { + public Level2Entry( + String oid, Type type, Object object, ReferenceQueue queue) + { super(object, queue); this.oid = oid; this.type = type; } - public String getOid() { - return oid; - } - - public Type getType() { - return type; - } - - // must only be called while synchronized on map: + // must only be called while synchronized on enclosing Registry: public void acquire() { ++count; } - // must only be called while synchronized on map: + // must only be called while synchronized on enclosing Registry: public boolean release() { return --count == 0; } - private final String oid; - private final Type type; + public final String oid; + public final Type type; + private int count = 1; } - private final HashMap map = new HashMap(); - // from OID (String) to Level1Entry + private final HashMap<String, Level1Entry> level1map = + new HashMap<String, Level1Entry>(); private final ReferenceQueue queue = new ReferenceQueue(); } diff --git a/jvmfwk/plugins/sunmajor/javaenvsetup/makefile.mk b/jvmfwk/plugins/sunmajor/javaenvsetup/makefile.mk index 29aa95854d33..55fb0e2d3c0d 100755 --- a/jvmfwk/plugins/sunmajor/javaenvsetup/makefile.mk +++ b/jvmfwk/plugins/sunmajor/javaenvsetup/makefile.mk @@ -34,9 +34,7 @@ PRJ=..$/..$/.. PRJNAME=javaldx TARGET=javaldx TARGETTYPE=CUI -.IF "$(OS)"!="IRIX" NO_DEFAULT_STL=TRUE -.ENDIF LIBTARGET=NO ENABLE_EXCEPTIONS=true diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx index 56972ea0e66f..e7f55eb91595 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx @@ -54,13 +54,6 @@ public: } test; #endif -SunVersion::SunVersion(): m_nUpdateSpecial(0), - m_preRelease(Rel_NONE), - m_bValid(false) -{ - memset(m_arVersionParts, 0, sizeof(m_arVersionParts)); -} - SunVersion::SunVersion(const rtl::OUString &usVer): m_nUpdateSpecial(0), m_preRelease(Rel_NONE), usVersion(usVer) diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunversion.hxx b/jvmfwk/plugins/sunmajor/pluginlib/sunversion.hxx index f6114672b17c..51b4ecf10221 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/sunversion.hxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/sunversion.hxx @@ -92,7 +92,6 @@ protected: PreRelease m_preRelease; public: - SunVersion(); SunVersion(const char * szVer); SunVersion(const rtl::OUString& usVer); ~SunVersion(); diff --git a/jvmfwk/plugins/sunmajor/pluginlib/util.cxx b/jvmfwk/plugins/sunmajor/pluginlib/util.cxx index a823d551af88..674dd2103236 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/util.cxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/util.cxx @@ -300,13 +300,14 @@ class AsynchReader: public Thread public: AsynchReader(oslFileHandle & rHandle); - +#if OSL_DEBUG_LEVEL >= 2 /** only call this function after this thread has finished. That is, call join on this instance and then call getData. */ OString getData(); +#endif }; AsynchReader::AsynchReader(oslFileHandle & rHandle): @@ -314,11 +315,13 @@ AsynchReader::AsynchReader(oslFileHandle & rHandle): { } +#if OSL_DEBUG_LEVEL >= 2 OString AsynchReader::getData() { OSL_ASSERT(isRunning() == sal_False ); return OString(m_arData.get(), m_nDataSize); } +#endif void AsynchReader::run() { diff --git a/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx b/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx index 680a1be74f41..b1be7cefc1a9 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx @@ -70,9 +70,11 @@ namespace jfw_plugin #define JFW_PLUGIN_ARCH "ia64" #elif defined M68K #define JFW_PLUGIN_ARCH "m68k" -#else // SPARC, INTEL, POWERPC, MIPS, ARM, IA64, M68K +#elif defined HPPA +#define JFW_PLUGIN_ARCH "parisc" +#else // SPARC, INTEL, POWERPC, MIPS, ARM, IA64, M68K, HPPA #error unknown plattform -#endif // SPARC, INTEL, POWERPC, MIPS, ARM +#endif // SPARC, INTEL, POWERPC, MIPS, ARM, IA64, M68K, HPPA class MalformedVersionException diff --git a/offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl b/offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl index 17f72a2be100..6a7a49b826df 100644 --- a/offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl +++ b/offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl @@ -42,6 +42,9 @@ #include <com/sun/star/util/Color.idl> #endif +#ifndef __com_sun_star_style_VerticalAlignment_idl__ +#include <com/sun/star/style/VerticalAlignment.idl> +#endif //============================================================================= @@ -262,6 +265,14 @@ published service UnoControlCurrencyFieldModel this is possible.</p> */ [optional, property] short MouseWheelBehavior; + + //------------------------------------------------------------------------- + + /** specifies the vertical alignment of the text in the control. + + @since OpenOffice.org 3.3 + */ + [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign; }; //============================================================================= diff --git a/offapi/com/sun/star/awt/UnoControlDateFieldModel.idl b/offapi/com/sun/star/awt/UnoControlDateFieldModel.idl index d14f602e817a..e5f8207e1ae9 100644 --- a/offapi/com/sun/star/awt/UnoControlDateFieldModel.idl +++ b/offapi/com/sun/star/awt/UnoControlDateFieldModel.idl @@ -42,6 +42,9 @@ #include <com/sun/star/util/Color.idl> #endif +#ifndef __com_sun_star_style_VerticalAlignment_idl__ +#include <com/sun/star/style/VerticalAlignment.idl> +#endif //============================================================================= @@ -274,6 +277,14 @@ published service UnoControlDateFieldModel this is possible.</p> */ [optional, property] short MouseWheelBehavior; + + //------------------------------------------------------------------------- + + /** specifies the vertical alignment of the text in the control. + + @since OpenOffice.org 3.3 + */ + [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign; }; //============================================================================= diff --git a/offapi/com/sun/star/awt/UnoControlEditModel.idl b/offapi/com/sun/star/awt/UnoControlEditModel.idl index 705c9f206030..708af3edaaca 100644 --- a/offapi/com/sun/star/awt/UnoControlEditModel.idl +++ b/offapi/com/sun/star/awt/UnoControlEditModel.idl @@ -42,6 +42,9 @@ #include <com/sun/star/util/Color.idl> #endif +#ifndef __com_sun_star_style_VerticalAlignment_idl__ +#include <com/sun/star/style/VerticalAlignment.idl> +#endif //============================================================================= @@ -274,6 +277,14 @@ published service UnoControlEditModel @since OOo 3.1 */ [optional, property] short WritingMode; + + //------------------------------------------------------------------------- + + /** specifies the vertical alignment of the text in the control. + + @since OpenOffice.org 3.3 + */ + [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign; }; //============================================================================= diff --git a/offapi/com/sun/star/awt/UnoControlFileControlModel.idl b/offapi/com/sun/star/awt/UnoControlFileControlModel.idl index eafde096fd73..aba49c351400 100644 --- a/offapi/com/sun/star/awt/UnoControlFileControlModel.idl +++ b/offapi/com/sun/star/awt/UnoControlFileControlModel.idl @@ -42,6 +42,9 @@ #include <com/sun/star/util/Color.idl> #endif +#ifndef __com_sun_star_style_VerticalAlignment_idl__ +#include <com/sun/star/style/VerticalAlignment.idl> +#endif //============================================================================= @@ -169,6 +172,13 @@ published service UnoControlFileControlModel */ [property] com::sun::star::util::Color TextLineColor; + //------------------------------------------------------------------------- + + /** specifies the vertical alignment of the text in the control. + + @since OpenOffice.org 3.3 + */ + [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign; }; //============================================================================= diff --git a/offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl b/offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl index 1575e1f6d6a6..a4c8bff2db3f 100644 --- a/offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl +++ b/offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl @@ -46,6 +46,9 @@ #include <com/sun/star/util/XNumberFormatsSupplier.idl> #endif +#ifndef __com_sun_star_style_VerticalAlignment_idl__ +#include <com/sun/star/style/VerticalAlignment.idl> +#endif //============================================================================= @@ -307,6 +310,14 @@ published service UnoControlFormattedFieldModel this is possible.</p> */ [optional, property] short MouseWheelBehavior; + + //------------------------------------------------------------------------- + + /** specifies the vertical alignment of the text in the control. + + @since OpenOffice.org 3.3 + */ + [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign; }; //============================================================================= diff --git a/offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl b/offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl index 4846980a974c..8db4dec74d4b 100644 --- a/offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl +++ b/offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl @@ -42,6 +42,9 @@ #include <com/sun/star/util/Color.idl> #endif +#ifndef __com_sun_star_style_VerticalAlignment_idl__ +#include <com/sun/star/style/VerticalAlignment.idl> +#endif //============================================================================= @@ -250,6 +253,14 @@ published service UnoControlNumericFieldModel this is possible.</p> */ [optional, property] short MouseWheelBehavior; + + //------------------------------------------------------------------------- + + /** specifies the vertical alignment of the text in the control. + + @since OpenOffice.org 3.3 + */ + [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign; }; //============================================================================= diff --git a/offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl b/offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl index b3bb7691e333..a155588191ca 100644 --- a/offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl +++ b/offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl @@ -42,6 +42,9 @@ #include <com/sun/star/util/Color.idl> #endif +#ifndef __com_sun_star_style_VerticalAlignment_idl__ +#include <com/sun/star/style/VerticalAlignment.idl> +#endif //============================================================================= @@ -209,6 +212,14 @@ published service UnoControlPatternFieldModel this is possible.</p> */ [optional, property] short MouseWheelBehavior; + + //------------------------------------------------------------------------- + + /** specifies the vertical alignment of the text in the control. + + @since OpenOffice.org 3.3 + */ + [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign; }; //============================================================================= diff --git a/offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl b/offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl index 79bed704660f..0412ebc8c129 100644 --- a/offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl +++ b/offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl @@ -42,6 +42,9 @@ #include <com/sun/star/util/Color.idl> #endif +#ifndef __com_sun_star_style_VerticalAlignment_idl__ +#include <com/sun/star/style/VerticalAlignment.idl> +#endif //============================================================================= @@ -254,6 +257,14 @@ published service UnoControlTimeFieldModel this is possible.</p> */ [optional, property] short MouseWheelBehavior; + + //------------------------------------------------------------------------- + + /** specifies the vertical alignment of the text in the control. + + @since OpenOffice.org 3.3 + */ + [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign; }; //============================================================================= diff --git a/offapi/com/sun/star/awt/XTopWindow2.idl b/offapi/com/sun/star/awt/XTopWindow2.idl new file mode 100644 index 000000000000..0cc289d42b17 --- /dev/null +++ b/offapi/com/sun/star/awt/XTopWindow2.idl @@ -0,0 +1,76 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __com_sun_star_awt_XTopWindow2_idl__ +#define __com_sun_star_awt_XTopWindow2_idl__ + +#include <com/sun/star/awt/XTopWindow.idl> +#include <com/sun/star/lang/IndexOutOfBoundsException.idl> + +//============================================================================= + +module com { module sun { module star { module awt { + +//============================================================================= + +/** extends XTopWindow with additional functionality + */ +interface XTopWindow2 : XTopWindow +{ + /** controls whether the window is currently maximized + */ + [attribute] boolean IsMaximized; + + /** controls whether the window is currently minimized + */ + [attribute] boolean IsMinimized; + + /** controls on which display the window is shown. + + <p>When retrieving this property, in case the window is positioned on multiple displays, + the number returned will be of the display containing the upper left pixel of the frame + area (that is of the client area on system decorated windows, or the frame area of + undecorated resp. owner decorated windows).</p> + + @throws ::com::sun::star::lang::IndexOutOfBoundsException + if you attempt to set this property to a value which does not correspond to the number + of an existing screen. + + @see com::sun::star::awt::DisplayAccess + @see com::sun::star::awt::DisplayInfo + */ + [attribute] long Display + { + set raises (::com::sun::star::lang::IndexOutOfBoundsException); + }; +}; + +//============================================================================= + +}; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/awt/makefile.mk b/offapi/com/sun/star/awt/makefile.mk index c0c501cbe2c5..dd2e9857124c 100644 --- a/offapi/com/sun/star/awt/makefile.mk +++ b/offapi/com/sun/star/awt/makefile.mk @@ -305,6 +305,7 @@ IDLFILES=\ XToggleButton.idl\ XToolkit.idl\ XTopWindow.idl\ + XTopWindow2.idl\ XTopWindowListener.idl\ XUnitConversion.idl\ XUnoControlContainer.idl\ diff --git a/offapi/com/sun/star/document/DocumentEvent.idl b/offapi/com/sun/star/document/DocumentEvent.idl index 1391f9becaf5..0b5b2cd5a205 100644 --- a/offapi/com/sun/star/document/DocumentEvent.idl +++ b/offapi/com/sun/star/document/DocumentEvent.idl @@ -52,6 +52,7 @@ module com { module sun { module star { module document { anymore.</p> @see XDocumentEventBroadcaster + @since OpenOffice.org 3.1 */ struct DocumentEvent : ::com::sun::star::lang::EventObject { diff --git a/offapi/com/sun/star/document/XDocumentEventBroadcaster.idl b/offapi/com/sun/star/document/XDocumentEventBroadcaster.idl index 596adf722ea8..5780d3f92bbf 100644 --- a/offapi/com/sun/star/document/XDocumentEventBroadcaster.idl +++ b/offapi/com/sun/star/document/XDocumentEventBroadcaster.idl @@ -61,6 +61,7 @@ interface XDocumentEventListener; anymore.</p> @see DocumentEvent + @since OpenOffice.org 3.1 */ interface XDocumentEventBroadcaster { diff --git a/offapi/com/sun/star/document/XDocumentEventListener.idl b/offapi/com/sun/star/document/XDocumentEventListener.idl index 345e320cecae..b98d81a73251 100644 --- a/offapi/com/sun/star/document/XDocumentEventListener.idl +++ b/offapi/com/sun/star/document/XDocumentEventListener.idl @@ -50,6 +50,7 @@ module com { module sun { module star { module document { anymore.</p> @see XDocumentEventBroadcaster + @since OpenOffice.org 3.1 */ interface XDocumentEventListener : ::com::sun::star::lang::XEventListener { diff --git a/offapi/com/sun/star/form/FormController.idl b/offapi/com/sun/star/form/FormController.idl index 03e4bffc2074..4bd94946f1c1 100644 --- a/offapi/com/sun/star/form/FormController.idl +++ b/offapi/com/sun/star/form/FormController.idl @@ -84,127 +84,26 @@ module runtime { //============================================================================= -/** specifies a component controlling the interaction between the user and form functionality. - - <p>As soon as a form (containing controls) is to be presented to the user, - there is a need for an instance controlling the user interaction.<br/> - Such a <type>FormController</type> is responsible for dialog processing, - like controlling the tab order and the grouping of controls.</p> - - <p>As a form may contain one or many subforms, a <type>FormController</type> may - contain one or more other <type>FormController</type>s, so the form model structure or hierarchy - is reflected in the structure of <type>FormController</type>s.</p> - - <h3>Responsibilities</h3> - <p>A <type>FormController</type> is responsible for a <type scope="com::sun::star::awt">UnoControlContainer</type>, - and all controls therein.</p> - - <p>Furthermore, a form controller is responsible for preventing invalid user input. That is, if the form - contains controls bound to a database, or to an external validator, then the form controller will - check their current value when the current record is to be saved to the database.</p> - - <p>First, it will check whether any controls with an external validator exist. If so, those validators - will be asked to validate the current control content. If this fails, the message provided by the validator - is displayed to the user, the control is focused, and the update of the record is vetoed.</p> - - <p>Second, the controls are examined for NULL values. If a control is bound to a database field which - is declared to be <code>NOT NULL</code>, no auto-increment field, but still <NULL/>, then an error - message is shown to the user saying that input is required, the respective control is focused, and - the update of the record is vetoed.</p> - - <p>Note that you can precent the second check - for database fields containing <NULL/> values - on - a per-form and a per-database basis.<br/> - For the former, you need to add a boolean property <code>FormsCheckRequiredFields</code> to the form - (aka the <code>FormController</code>'s model), using its - <member scope="com::sun::star::beans">XPropertyContainer::addProperty</member> method, with a value - of <FALSE/>.<br/> - For the latter, you need to set the respective property of the data source's <code>Settings</code> - (also named <code>FormsCheckRequiredFields</code>) to <FALSE/>.</p> - - <p>Alternatively, you can prevent the check on a per-control basis, using the - <member>DataAwareControlModel::InputRequired</member> property of a single control model.</p> - - @see com::sun::star::form::component:Form - @see com::sun::star::awt::XTabController - @see com::sun::star::form::binding::BindableControlModel - @see com::sun::star::sdb::DataSource::Settings +/** is superseded by <type scope="com::sun::star::form::runtime">FormController</type>. + @deprecated */ published service FormController { - /** allows delegating form controller functionality to the component - - <p>If a control which the controller is responsible for supports the <type scope="com::sun::star::frame">XDispatchProviderInterception</type> - interface, the controller registers a dispatch interceptor. Then, the control can try to delegate part of its - functionality to the controller by querying the dispatch interceptor for it.</p> - */ [optional] service FormControllerDispatcher; - - /** denotes the instance which is used to implement operations on the form which the controller - works for. - - <p>This instance can be used, for instance, to determine the current state of certain form features.</p> - */ [optional, property] ::com::sun::star::form::runtime::XFormOperations FormOperations; /** is used for notifying the (de)activation of the controller. */ interface com::sun::star::form::XFormController; - - /** is used for tab controlling and grouping of the controls. - */ interface com::sun::star::awt::XTabController; - - - /** A FormController may have a parent controller, such as when the related form is a subform. - */ interface com::sun::star::container::XChild; - - - /** A FormController must be disposable. - */ interface com::sun::star::lang::XComponent; - - - /** A FormController must provide access to its sub controllers. - */ interface com::sun::star::container::XEnumerationAccess; - - - /** A FormController must communicate if any of its children (means sub controllers) or contained - controls have been modified. - */ interface com::sun::star::util::XModifyBroadcaster; - - /** used to notify deletions of data in the form before they happen. - - <p>A form controller listens for deletion events at the form it is responsible for.<br/> - If and only if no <type>XConfirmDeleteListener</type> is registered at - the controller, it uses an own dialog to ask the user for confirmation.</p> - - <p>You may use this interface to integrate your own confirmation dialogs.</p> - */ interface com::sun::star::form::XConfirmDeleteBroadcaster; - - /** used to notify errors which happen in the form the controller is responsible for. - - <p>A form controller listens for error events at the form it is responsible for.<br/> - If and only if no <type scope="com::sun::star::sdb">XSQLErrorListener</type> is registered at the controller, it - uses an own dialog to notify the user of the error.</p> - - */ interface com::sun::star::sdb::XSQLErrorBroadcaster; - - /** is used for multiplexing row set events happening on the form which the controller is responsible for. - */ interface com::sun::star::sdb::XRowSetApproveBroadcaster; - - /** is used broadcasting parameter events in the form. - - <p>A form controller listens for parameter events at the form it is responsible for.<br/> - If and only if no <type>XDatabaseParameterListener</type> is registered at the controller, it - uses an own dialog to ask the user for parameter values.</p> - */ interface com::sun::star::form::XDatabaseParameterBroadcaster; }; diff --git a/offapi/com/sun/star/form/FormControllerDispatcher.idl b/offapi/com/sun/star/form/FormControllerDispatcher.idl index 96cab9ee73f1..8e2513b62102 100644 --- a/offapi/com/sun/star/form/FormControllerDispatcher.idl +++ b/offapi/com/sun/star/form/FormControllerDispatcher.idl @@ -40,177 +40,13 @@ module com { module sun { module star { module form { //============================================================================= -/** specifies a component which can be used to dispatch form controller functionality. +/** is not used anymore, and superseded by <type scope="com::sun::star::form::runtime">FormController</type> and + <type scope="com::sun::star::form::runtime">FormOperations</type>. - <p>A form controller dispatcher is an instance which provides access to dispatchers - (<type scope="com::sun::star::frame">XDispatch</type>) for certain form controller - functionality.</p> - - <p>The way how access to these dispatchers is provided is not defined. It may either - be directly via an <type scope="com::sun::star::frame">XDispatchProvider</type> interface, - or indirectly, e.g. by registering dispatch interceptors (<type scope="com::sun::star::frame">XDispatchProviderInterceptor</type>) - at another instance which supports this (by exposing the <type scope="com::sun::star::frame">XDispatchProviderInterception</type> - interface).</p> - - <p>In any scenario, foreign components have a (implicit or explicit) possibility to request a dispatcher - for a given URL.</p> - - <p>Below, there's a list of URLs which have a defined meaning - if a <type>FormControllerDispatcher</type> - implementation supports one of them, there must be a guaranteed semantices. However, concrete implementations - may support an arbitrary sub or super set of these URLs.</p> - - <p>In general, all URLs start with the same prefix, namely <em>.uno:FormController/</em>. To this, a suffix is - appended which describes the requested functionality.<br/> - Example: The URL suffix for deleting the current record is <em>deleteRecord</em>, so the complete URL for - requesting a dispatcher for this functionality is <em>.uno:FormController/deleteRecord</em>.</p> - - <p>Some URLs may require parameters. For this, the sequence of <type scope="com::sun::star::beans">PropertyValue</type>s - passed to the <member scope="com::sun::star::frame">XDispatch::dispatch</member> call is used - every property value is - used as one named parameter.</p> - - <p>For all URLs, interested parties can register as status listeners (<type scope="com::sun::star::frame">XStatusListener</type>) - at the dispatchers, and be notified whenever the functionality associated with the URL becomes enabled or - disabled.<br/> - For instance, the URL with the suffix <em>moveToFirst</em> is associated with moving the form to the first - record, and it will be disabled in case the form is already positioned on the first record.</p> - - <p>Nearly all of the functionality offered by a <type>FormControllerDispatcher</type> can also be - reached by other means. E.g., moving a form to its first record can be achieved by calling the - method <member scope="com::sun::star::sdbc">XResultSet::first</member> of the form.<br/> - However, the advantage of using a <type>FormControllerDispatcher</type> is that it's usually implemented - by a component which has additional knowledge about the form. For instance, in a document which - displays a form, there might be a control which contains uncommitted changes, plus a control - whose changes were already committed to the current record, but <em>not</em> to the database. Simply - calling <member scope="com::sun::star::sdbc">XResultSet::first</member> on the form would lose - both the content in the uncommitted control, and the changes in the current record.<br/> - An <type>FormControllerDispatcher</type> is expected to care for both of these.</p> - - <table style="width:100%;" border="0" cellpadding="2" cellspacing="2"><tbody> - - <tr style="vertical-align: top;"> - <td><b>URL suffix</b></td> - <td><b>functionality</b></td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>positionForm</em></td> - <td>positions the form on a record given by absolute number.<br/> - There's one parameter for this functionality, named <em>Position</em>, which must be a long - value specifying the absolute position to which the form should be moved</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>RecordCount</em></td> - <td>This is a passive functionality: It cannot be dispatched, instead, interested parties may - use the dispatcher to add as <type scope="com::sun::star::frame">XStatusListener</type>, and be - notified when the record count changes.<br/> - The status value which is being notified (<member scope="com::sun::star::frame">FeatureStateEvent::State</member>) - is a string which can be used to display the record count. In particular, if the record count is not yet known - (<member scope="com::sun::star::sdb">RowSet::IsRowCountFinal</member> is <FALSE/>), this is indicated in the - string, too.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>moveToFirst</em></td> - <td>moves the form to the first record</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>moveToPrev</em></td> - <td>moves the form to the record preceding the current one</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>moveToNext</em></td> - <td>moves the form to the record after the current one</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>moveToLast</em></td> - <td>moves the form to the last record</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>moveToNew</em></td> - <td>moves the form to the virtual "insert row", where new records can be inserted</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>saveRecord</em></td> - <td>Commits any potentially pending changes in the current control, and saves the current record to - the database, or inserts a new record if the form is currently positioned on the virtual insertion row.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>undoRecord</em></td> - <td>reverts the changes done to the current record. Basically, this means refreshing the - current row from the database, and updating all controls with the new content.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>deleteRecord</em></td> - <td>deletes the current record, after asking the user for confirmation.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>refreshForm</em></td> - <td>reloads the complete form. After this, the form is positioned on the first record</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>sortUp</em></td> - <td>Adds an order clause to the form, to sort it ascending by the field which the current control is bound to, - and then reloads the form.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>sortDown</em></td> - <td>Adds an order clause to the form, to sort it descending by the field which the current control is bound to, - and then reloads the form.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>sort</em></td> - <td>opens an dialog, which allows the user to manipulate the current sorting order of the form. If the dialog - is closed with OK, the form is reloaded after setting the new sorting order.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>autoFilter</em></td> - <td>creates, from the current control, a filter for the form. This is, if the current control is bound to - the field, say, "customer", and contains the value "Furs, Inc.", then a filter "customer = 'Furs, Inc.'" - is created and set at the form. After this, the form is reloaded.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>filter</em></td> - <td>opens an dialog, which allows the user to manipulate the current filter of the form. If the dialog - is closed with OK, the form is reloaded after setting the new filter.</td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>applyFilter</em></td> - <td><p>Toggles the <member scope="com::sun::star::sdb">RowSet::ApplyFilter</member> property - of the form.</p> - <p>Additionally, status listeners will be provided with the current (boolean) state of this property - in the <member scope="com::sun::star::frame">FeatureStateEvent::State</member> member of the event - notified by the dispatcher.</p></td> - </tr> - - <tr style="vertical-align: top;"> - <td><em>removeFilterOrder</em></td> - <td>completely removes any filter and sorting order from the form, and reloads it.</td> - </tr> - - </tbody></table> - - @see FormController + @deprecated */ published service FormControllerDispatcher { - //------------------------------------------------------------------------- - /** allows direct access to the dispatchers provided by the component. - */ [optional] interface com::sun::star::frame::XDispatchProvider; }; diff --git a/offapi/com/sun/star/form/XFormController.idl b/offapi/com/sun/star/form/XFormController.idl index 832ec077b264..e1ca56c0b276 100644 --- a/offapi/com/sun/star/form/XFormController.idl +++ b/offapi/com/sun/star/form/XFormController.idl @@ -49,57 +49,14 @@ //============================================================================= -/** provides functionality to control the activation of forms controls. - - <p>There is a duality of forms (<type scope="com::sun::star::form::component">DataForm</type>) - and form controllers. In a document view, for every loaded form there is a form controller which is - responsible for exactly the controls which's models are direct children of the form.<br/> - - In some sense, a form controller is the view representation of a form, like a <em>form control</em> is the - view representation of a <em>form control model</em>.<br/> - - This is also reflected in this interface: If you call - <method scope="com::sun::star::awt">XTabController::getModel</method> on a form controller, the form which - the controller is responsible for will be returned.<br/> - - As always in the model-view-paradigm, there is no way from a model to its controller, mostly, because for - <em>one</em> given form, there is one controller for <em>every</em> view of the document.</p> - - <p>A controller is called <em>active</em> if one of the controls it is responsible for has the focus, - else inactive. To be notified whenever this activation state of a given controller changes, you can - add listeners.</p> - - @see com::sun::star::form::component::Form +/** is superseded by <type scope="com::sun::star::form::runtime">XFormController</type>. + @deprecated */ published interface XFormController: com::sun::star::awt::XTabController { - //------------------------------------------------------------------------- - - /** access to the currently active control - - @returns - the currently active control, or <NULL/> if there is no such control - */ - com::sun::star::awt::XControl getCurrentControl(); - - //------------------------------------------------------------------------- - - /** adds the specified listener to receive notifications whenever the activation state of - the controller changes. - - @param l - the listener to add. - */ - [oneway] void addActivateListener( [in] com::sun::star::form::XFormControllerListener l ); - - //------------------------------------------------------------------------- - - /** removes the specified listener - - @param l - the listener to remove. - */ - [oneway] void removeActivateListener( [in] com::sun::star::form::XFormControllerListener l ); + ::com::sun::star::awt::XControl getCurrentControl(); + [oneway] void addActivateListener( [in] ::com::sun::star::form::XFormControllerListener l ); + [oneway] void removeActivateListener( [in] ::com::sun::star::form::XFormControllerListener l ); }; diff --git a/offapi/com/sun/star/form/runtime/FilterEvent.idl b/offapi/com/sun/star/form/runtime/FilterEvent.idl new file mode 100644 index 000000000000..8ec7b202e175 --- /dev/null +++ b/offapi/com/sun/star/form/runtime/FilterEvent.idl @@ -0,0 +1,64 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __com_sun_star_form_runtime_FilterEvent_idl__ +#define __com_sun_star_form_runtime_FilterEvent_idl__ + +#include <com/sun/star/lang/EventObject.idl> + +//============================================================================= + +module com { module sun { module star { module form { module runtime { + +//============================================================================= + +/** is an event fired by a filter controller, when the filter managed by the controller changes. + + @see XFilterController + + @since OpenOffice.org 3.3 + */ +struct FilterEvent : ::com::sun::star::lang::EventObject +{ + /** denotes the index of the <em>disjunctive term</em> to which the event applies, if any. + */ + long DisjunctiveTerm; + + /** denotes the index of the <em>filter component</em> to which the event applies, if any. + */ + long FilterComponent; + + /** denotes the <em>predicate expression</em> associated with the event. + */ + string PredicateExpression; +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/form/runtime/FormController.idl b/offapi/com/sun/star/form/runtime/FormController.idl new file mode 100644 index 000000000000..17501ffa162c --- /dev/null +++ b/offapi/com/sun/star/form/runtime/FormController.idl @@ -0,0 +1,51 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ +
+#ifndef __offapi_com_sun_star_form_runtime_FormController_idl__ +#define __offapi_com_sun_star_form_runtime_FormController_idl__ + +#include <com/sun/star/form/runtime/XFormController.idl> + +//============================================================================= + +module com { module sun { module star { module form { module runtime { + +//============================================================================= + +/** specifies a component controlling the interaction between the user and multiple + form controls belonging to a single form. + */ +service FormController +{ + interface XFormController; +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/form/runtime/FormOperations.idl b/offapi/com/sun/star/form/runtime/FormOperations.idl index c9390ac25918..984a09e0d7c4 100644 --- a/offapi/com/sun/star/form/runtime/FormOperations.idl +++ b/offapi/com/sun/star/form/runtime/FormOperations.idl @@ -34,8 +34,8 @@ #ifndef __com_sun_star_form_runtime_XFormOperations_idl__ #include <com/sun/star/form/runtime/XFormOperations.idl> #endif -#ifndef __com_sun_star_form_XFormController_idl__ -#include <com/sun/star/form/XFormController.idl> +#ifndef __com_sun_star_form_runtime_XFormController_idl__ +#include <com/sun/star/form/runtime/XFormController.idl> #endif #ifndef __com_sun_star_form_XForm_idl__ #include <com/sun/star/form/XForm.idl> diff --git a/offapi/com/sun/star/form/runtime/XFilterController.idl b/offapi/com/sun/star/form/runtime/XFilterController.idl new file mode 100644 index 000000000000..5ee9bab57540 --- /dev/null +++ b/offapi/com/sun/star/form/runtime/XFilterController.idl @@ -0,0 +1,180 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __offapi_com_sun_star_form_runtime_XFilterController_idl__ +#define __offapi_com_sun_star_form_runtime_XFilterController_idl__ + +#include <com/sun/star/awt/XControl.idl> +#include <com/sun/star/lang/IndexOutOfBoundsException.idl> + +//============================================================================= + +module com { module sun { module star { module form { module runtime { + +//============================================================================= + +interface XFilterControllerListener; + +/** provides access to a form based filter for a database form + + <p>In a form based filter, form controls bound to a searchable database field are replaced with a control + which allows entering a search expression. This so-called <em>predicate expression</em> is basically a part of an + SQL <code>WHERE</code> clause, but without the the part denoting the database column. For instance, if you + have a form control bound to a table column named <code>Name</code>, then entering the string + <q>LIKE '%Smith%'</q> effectively consitutes a SQL <code>WHERE</code> clause <code>"Name" LIKE '%Smith%'</code>.</p> + + <p>In the actual document view, there are usually some relaxations to this. For instance, keywords such as + <code>LIKE</code> might be localized, according to OpenOffice.org's UI locale. Also, for an equality criterion, + the equality sign <code>=</code> is usually omitted. However, this interface here provides programmatic access + to the form based filter, so those relaxations are not considered here.</p> + + <p>The filter maintained by a filter controller is, logically, a disjunctive normal form of an SQL <code>WHERE</code> + class. That is, it is a disjunction of <em>m</em> terms, where each term is a conjunction of <em>n</em> clauses + of the form <code><column> <predicate> <literal></code> or of the form <code><em><column> + IS [NOT] NULL</em></code>.</p> + + <p><em>n</em> equals the number of filter controls which the filter controller is responsible for. This number + doesn't change during one session of the form based filter. On the other hand, <em>m</em>, the number of disjunctive + terms, is dynamic.</p> + + <a name="active_term"></a> + <p>With the above, there are potentially <em>m * n</em> <em>predicate expressions</em> (though usually only a fraction + of those will actually exist). Since in a form based filter, there are only <em>n</em> filter controls, and each + filter control displays exactly one <em>predicate expression</em>, this means that only a part of the complete + filter can be displayed, in particular, only one <em>disjunctive term</em> can be displayed at a time. Thus, + the filter controller knows the concept of an <em>active term</em>, denoted by the <member>ActiveTerm</member> + attribute, controls which of the terms is currently displayed in the form controls.</p> + + @see XFormController + @see com::sun::star::sdbc::XResultSetMetaData::isSearchable + @see com::sun::star::sdb::XSingleSelectQueryAnalyzer::getStructuredFilter + @see com::sun::star::sdb::SQLFilterOperator + + @since OpenOffice.org 3.3 + */ +interface XFilterController +{ + /** registers a listener to be notified of certain changes in the form based filter. + + <p>Registering the same listener multiple times results in multiple notifications of the same event, + and also requires multiple revocations of the listener. + */ + void addFilterControllerListener( [in] XFilterControllerListener _Listener ); + + /** revokes a listener which was previously registered to be notified of certain changes in the form based filter. + */ + void removeFilterControllerListener( [in] XFilterControllerListener _Listener ); + + /** is the number of <em>filter components</em>, or filter controls, which the filter controller is responsible + for. + + <p>This number is constant during one session of the form based filter.</p> + */ + [attribute, readonly] long FilterComponents; + + /** is the number of <em>disjunctive terms</em> of the filter expression represented by the form based filter. + */ + [attribute, readonly] long DisjunctiveTerms; + + /** denotes the <a href="#active_term"><em>active term</em></a> of the filter controller. + */ + [attribute] long ActiveTerm + { + set raises ( ::com::sun::star::lang::IndexOutOfBoundsException ); + }; + + /** sets a given <em>predicate expression</em> + + @param _Component + denotes the filter component whose expression is to be set. Must be greater than or equal to 0, and smaller than + <member>FilterComponents</member>. + + @param _Term + denotes the <em>disjunctive term</em> in which the expression is to be set. Must be greater than or equal to 0, + and smaller than <member>DisjunctiveTerms</member>. + + @param _PredicateExpression + denotes the <em>predicate expression</em> to set for the given filter component in the given term. + + @throws ::com::sun::star::lang::IndexOutOfBoundsException + if one of the indexes is out of the allowed range + */ + void + setPredicateExpression( [in] long _Component, [in] long _Term, [in] string _PredicateExpression ) + raises( ::com::sun::star::lang::IndexOutOfBoundsException ); + + /** retrieves the filter component with the given index. + + <p>The filter control has the same control model as the control which it stands in for. Consequently, you can use this method + to obtain the database column which the filter control works on, by examining the control model's <code>BoundField</code> + property.</p> + + @param _Component + denotes the index of the filter component whose control should be obtained. Must be greater than or equal to 0, + and smaller than <member>FilterComponents</member>. + + @throws ::com::sun::star::lang::IndexOutOfBoundsException + if <arg>_Component</arg> is out of the allowed range. + + @see ::com::sun::star::form::component::DataAwareControlModel::BoundField + */ + ::com::sun::star::awt::XControl + getFilterComponent( [in] long _Component ) + raises( ::com::sun::star::lang::IndexOutOfBoundsException ); + + /** retrieves the entirety of the <em>predicate expressions</em> represented by the filter controller. + + <p>Each element of the returned sequence is a <em>disjunctive term</em>, having exactly <member>FilterComponents</member> + elements, which denote the single <em>predicate expressions</em> of this term.</p> + */ + sequence< sequence< string > > + getPredicateExpressions(); + + /** removes a given <em>disjunctive term</em> + + @param _Term + the index of the term to remove. Must be greater than or equal to 0, and smaller than + <member>DisjunctiveTerms</member>. + + @throws ::com::sun::star::lang::IndexOutOfBoundsException + if <arg>_Term</arg> is out of the allowed range. + */ + void + removeDisjunctiveTerm( [in] long _Term ) + raises( ::com::sun::star::lang::IndexOutOfBoundsException ); + + /** appends an empty disjunctive term to the list of terms. + */ + void + appendEmptyDisjunctiveTerm(); +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/form/runtime/XFilterControllerListener.idl b/offapi/com/sun/star/form/runtime/XFilterControllerListener.idl new file mode 100644 index 000000000000..230ba9656d81 --- /dev/null +++ b/offapi/com/sun/star/form/runtime/XFilterControllerListener.idl @@ -0,0 +1,84 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __com_sun_star_form_runtime_XFilterControllerListener_idl__ +#define __com_sun_star_form_runtime_XFilterControllerListener_idl__ + +#include <com/sun/star/lang/XEventListener.idl> +#include <com/sun/star/form/runtime/FilterEvent.idl> + +//============================================================================= + +module com { module sun { module star { module form { module runtime { + +//============================================================================= + +/** is implemented by components listening for events fired by an <type>XFilterController</type>. + + @since OpenOffice.org 3.3 +*/ +interface XFilterControllerListener : ::com::sun::star::lang::XEventListener +{ + /** is fired when a single <em>predicate expression</em> of the filter represented by the filter + controller changed. + + <p><member>FilterEvent::DisjunctiveTerm</member> is the index of the <em>disjunctive term</em> in which the + expression changed. This usually equals <member>XFilterController::ActiveTerm</member>.</p> + + <p><member>FilterEvent::FilterComponent</member> denotes the index of the filter component whose + <em>predicate expression</em> changed.</p> + + <p><member>FilterEvent::PredicateExpression</member> is the new <em>predicate expressions</em>.</p> + */ + void predicateExpressionChanged( [in] FilterEvent _Event ); + + /** is fired when a <em>disjunctive term</em> was removed from the filter of the filter controller. + + <p><member>FilterEvent::DisjunctiveTerm</member> is the index of the <em>disjunctive term</em> which was + removed.</p> + + <p><member>FilterEvent::FilterComponent</member> and <member>FilterEvent::PredicateExpression</member> are not + used for this event type.</p> + */ + void disjunctiveTermRemoved( [in] FilterEvent _Event ); + + /** is fired when a <em>disjunctive term</em> was added to the filter of the filter controller. + + <p><member>FilterEvent::DisjunctiveTerm</member> is the index of the <em>disjunctive term</em> which was + added.</p> + + <p><member>FilterEvent::FilterComponent</member> and <member>FilterEvent::PredicateExpression</member> are not + used for this event type.</p> + */ + void disjunctiveTermAdded( [in] FilterEvent _Event ); +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/form/runtime/XFormController.idl b/offapi/com/sun/star/form/runtime/XFormController.idl new file mode 100644 index 000000000000..f0573383860a --- /dev/null +++ b/offapi/com/sun/star/form/runtime/XFormController.idl @@ -0,0 +1,373 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __offapi_com_sun_star_form_runtime_XFormController_idl__ +#define __offapi_com_sun_star_form_runtime_XFormController_idl__ + +#include <com/sun/star/awt/XTabController.idl> +#include <com/sun/star/container/XChild.idl> +#include <com/sun/star/lang/XComponent.idl> +#include <com/sun/star/container/XIndexAccess.idl> +#include <com/sun/star/container/XEnumerationAccess.idl> +#include <com/sun/star/util/XModifyBroadcaster.idl> +#include <com/sun/star/util/XModeSelector.idl> +#include <com/sun/star/form/XConfirmDeleteBroadcaster.idl> +#include <com/sun/star/sdb/XSQLErrorBroadcaster.idl> +#include <com/sun/star/sdb/XRowSetApproveBroadcaster.idl> +#include <com/sun/star/form/XDatabaseParameterBroadcaster2.idl> +#include <com/sun/star/form/XFormControllerListener.idl> +#include <com/sun/star/task/XInteractionHandler.idl> +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/form/runtime/XFilterController.idl> + +//============================================================================= + +module com { module sun { module star { module form { module runtime { + +interface XFormOperations; +interface XFormControllerContext; + +//============================================================================= + +/** specifies a component controlling the interaction between the user and form functionality. + + <p>As soon as a form (containing controls) is to be presented to the user, + there is a need for an instance controlling the user interaction.<br/> + Such a <code>FormController</code> is responsible for dialog processing, + like controlling the tab order and the grouping of controls.</p> + + <p>As a form may contain one or many subforms, a <type>FormController</type> may + contain one or more other <type>FormController</type>s, so the form model structure or hierarchy + is reflected in the structure of <type>FormController</type>s. That is, retrieving the parent of + the model of a controller will give you the same object as retrieving the model of the parent of + the controller. Similarly, retrieving the model of the <code>n</code><sup>th</sup> child of + a controller gives you the same object as retrieving the <code>n</code><sup>th</sup> child of + the model of the controller.</p> + + <p>A controller is called <em>active</em> if one of the controls it is responsible for has the focus, + else inactive. To be notified whenever this activation state of a given controller changes, you can + add listeners.</p> + + <p>This interface supersedes the <type scope="com::sun::star::form">FormController</type>.</p> + + <h3>Responsibilities</h3> + <p>A <type>FormController</type> is responsible for a <type scope="com::sun::star::awt">UnoControlContainer</type>, + and all controls therein.</p> + + <p>Furthermore, a form controller is responsible for preventing invalid user input. That is, if the form + contains controls bound to a database, or to an external validator, then the form controller will + check their current value when the current record is to be saved to the database.</p> + + <p>First, it will check whether any controls with an external validator exist. If so, those validators + will be asked to validate the current control content. If this fails, the message provided by the validator + is displayed to the user, the control is focused, and the update of the record is vetoed.</p> + + <p>Second, the controls are examined for NULL values. If a control is bound to a database field which + is declared to be <code>NOT NULL</code>, no auto-increment field, but still <NULL/>, then an error + message is shown to the user saying that input is required, the respective control is focused, and + the update of the record is vetoed.</p> + + <p>Note that you can precent the second check - for database fields containing <NULL/> values - on + a per-form and a per-database basis.<br/> + For the former, you need to add a boolean property <code>FormsCheckRequiredFields</code> to the form + (aka the <code>FormController</code>'s model), using its + <member scope="com::sun::star::beans">XPropertyContainer::addProperty</member> method, with a value + of <FALSE/>.<br/> + For the latter, you need to set the respective property of the data source's <code>Settings</code> + (also named <code>FormsCheckRequiredFields</code>) to <FALSE/>.</p> + + <p>Alternatively, you can prevent the check on a per-control basis, using the + <member>DataAwareControlModel::InputRequired</member> property of a single control model.</p> + + <p>If a control which the controller is responsible for supports the <type scope="com::sun::star::frame">XDispatchProviderInterception</type> + interface, the controller registers a dispatch interceptor. Then, the control can try to delegate part of its + functionality to the controller by querying the dispatch interceptor for it.</p> + + <p>Below, there's a list of URLs which have a defined meaning - if an implementation supports one of them, + there must be a guaranteed semantices. However, concrete implementations may support an arbitrary sub or super + set of these URLs.</p> + + <p>In general, all URLs start with the same prefix, namely <em>.uno:FormController/</em>. To this, a suffix is + appended which describes the requested functionality.<br/> + Example: The URL suffix for deleting the current record is <em>deleteRecord</em>, so the complete URL for + requesting a dispatcher for this functionality is <em>.uno:FormController/deleteRecord</em>.</p> + + <p>Some URLs may require parameters. For this, the sequence of <type scope="com::sun::star::beans">PropertyValue</type>s + passed to the <member scope="com::sun::star::frame">XDispatch::dispatch</member> call is used - every property value is + used as one named parameter.</p> + + <p>For all URLs, interested parties can register as status listeners (<type scope="com::sun::star::frame">XStatusListener</type>) + at the dispatchers, and be notified whenever the functionality associated with the URL becomes enabled or + disabled.<br/> + For instance, the URL with the suffix <em>moveToFirst</em> is associated with moving the form to the first + record, and it will be disabled in case the form is already positioned on the first record.</p> + + <table style="width:100%;" border="0" cellpadding="2" cellspacing="2"><tbody> + + <tr style="vertical-align: top;"> + <td><b>URL suffix</b></td> + <td><b>functionality</b></td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>positionForm</em></td> + <td>positions the form on a record given by absolute number.<br/> + There's one parameter for this functionality, named <em>Position</em>, which must be a long + value specifying the absolute position to which the form should be moved</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>RecordCount</em></td> + <td>This is a passive functionality: It cannot be dispatched, instead, interested parties may + use the dispatcher to add as <type scope="com::sun::star::frame">XStatusListener</type>, and be + notified when the record count changes.<br/> + The status value which is being notified (<member scope="com::sun::star::frame">FeatureStateEvent::State</member>) + is a string which can be used to display the record count. In particular, if the record count is not yet known + (<member scope="com::sun::star::sdb">RowSet::IsRowCountFinal</member> is <FALSE/>), this is indicated in the + string, too.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>moveToFirst</em></td> + <td>moves the form to the first record</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>moveToPrev</em></td> + <td>moves the form to the record preceding the current one</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>moveToNext</em></td> + <td>moves the form to the record after the current one</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>moveToLast</em></td> + <td>moves the form to the last record</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>moveToNew</em></td> + <td>moves the form to the virtual "insert row", where new records can be inserted</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>saveRecord</em></td> + <td>Commits any potentially pending changes in the current control, and saves the current record to + the database, or inserts a new record if the form is currently positioned on the virtual insertion row.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>undoRecord</em></td> + <td>reverts the changes done to the current record. Basically, this means refreshing the + current row from the database, and updating all controls with the new content.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>deleteRecord</em></td> + <td>deletes the current record, after asking the user for confirmation.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>refreshForm</em></td> + <td>reloads the complete form. After this, the form is positioned on the first record</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>sortUp</em></td> + <td>Adds an order clause to the form, to sort it ascending by the field which the current control is bound to, + and then reloads the form.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>sortDown</em></td> + <td>Adds an order clause to the form, to sort it descending by the field which the current control is bound to, + and then reloads the form.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>sort</em></td> + <td>opens an dialog, which allows the user to manipulate the current sorting order of the form. If the dialog + is closed with OK, the form is reloaded after setting the new sorting order.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>autoFilter</em></td> + <td>creates, from the current control, a filter for the form. This is, if the current control is bound to + the field, say, "customer", and contains the value "Furs, Inc.", then a filter "customer = 'Furs, Inc.'" + is created and set at the form. After this, the form is reloaded.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>filter</em></td> + <td>opens an dialog, which allows the user to manipulate the current filter of the form. If the dialog + is closed with OK, the form is reloaded after setting the new filter.</td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>applyFilter</em></td> + <td><p>Toggles the <member scope="com::sun::star::sdb">RowSet::ApplyFilter</member> property + of the form.</p> + <p>Additionally, status listeners will be provided with the current (boolean) state of this property + in the <member scope="com::sun::star::frame">FeatureStateEvent::State</member> member of the event + notified by the dispatcher.</p></td> + </tr> + + <tr style="vertical-align: top;"> + <td><em>removeFilterOrder</em></td> + <td>completely removes any filter and sorting order from the form, and reloads it.</td> + </tr> + + </tbody></table> + + @see ::com::sun::star::form::component:Form + @see ::com::sun::star::form::binding::BindableControlModel + @see ::com::sun::star::sdb::DataSource::Settings + + @since OpenOffice.org 3.3 + */ +interface XFormController +{ + /** is used for tab controlling and grouping of the controls. + + <p>The model obtained via <member scope="com::sun::star::awt">XTabController::getModel</member> is the form for which the + controller is responsible.</p> + */ + interface ::com::sun::star::awt::XTabController; + + /** allows access to the parent controller. + */ + interface ::com::sun::star::container::XChild; + + /** allows access to the sub controllers. + */ + interface ::com::sun::star::container::XIndexAccess; + + /** allows enumerating sub controllers + */ + interface ::com::sun::star::container::XEnumerationAccess; + + /** allows life time control of the controller. + */ + interface ::com::sun::star::lang::XComponent; + + /** allows to register as listener for modifications in the controls which the controller is responsible + for. + */ + interface ::com::sun::star::util::XModifyBroadcaster; + + /** used to notify deletions of data in the form before they happen. + + <p>A form controller listens for deletion events at the form it is responsible for. If and only if no + <type scope="com::sun::star::form">XConfirmDeleteListener</type> is registered at + the controller, it uses an own dialog to ask the user for confirmation.</p> + */ + interface ::com::sun::star::form::XConfirmDeleteBroadcaster; + + /** is used to notify errors which happen in the form the controller is responsible for. + + <p>A form controller listens for error events at the form it is responsible for. If and only if no + <type scope="com::sun::star::sdb">XSQLErrorListener</type> is registered at the controller, it + uses an own dialog to notify the user of the error.</p> + + */ + interface ::com::sun::star::sdb::XSQLErrorBroadcaster; + + /** is used for multiplexing row set events happening on the form which the controller is responsible for. + */ + interface ::com::sun::star::sdb::XRowSetApproveBroadcaster; + + /** is used broadcasting parameter events in the form. + + <p>A form controller listens for parameter events at the form it is responsible for. If and only if no + <type scope="com::sun::star::form">XDatabaseParameterListener</type> is registered at the controller, it + uses an own dialog to ask the user for parameter values.</p> + */ + interface ::com::sun::star::form::XDatabaseParameterBroadcaster2; + + /** allows switching the form controller to different operation modes. + + <a name="mode_selector"></a> + <p>The two modes usually (but not necessarily) supported by a form controller are the <code>DataMode</code> + and the <code>FilterMode</code>, where the former is the usual modus operandi for displaying and modifying + data, and the latter is a special mode to enter a filter for the database form which the controller is + responsible for.</p> + */ + interface ::com::sun::star::util::XModeSelector; + + /** allows controlling the filter mode. + + <p>If the form controller supports a <a href="#mode_selector">form based filter mode</a>, then it shall also + support the <type>XFilterController</type> interface, which allows controlling this mode.</p> + */ + [optional] interface XFilterController; + + /** denotes the instance which is used to implement operations on the form which the controller + works for. + + <p>This instance can be used, for instance, to determine the current state of certain form features.</p> + */ + [attribute, readonly] XFormOperations FormOperations; + + /** provicdes access to the currently active control + */ + [attribute, readonly] ::com::sun::star::awt::XControl CurrentControl; + + /** allows to delegate certain tasks to the context of the form controller + */ + [attribute] XFormControllerContext Context; + + /** used (if not <NULL/>) for user interactions triggered by the form controller. + */ + [attribute] ::com::sun::star::task::XInteractionHandler InteractionHandler; + + /** adds the specified listener to receive notifications whenever the activation state of + the controller changes. + */ + void addActivateListener( [in] ::com::sun::star::form::XFormControllerListener _Listener ); + + /** removes the specified listener from the list of components to receive notifications whenever the activation + state of the controller changes. + */ + void removeActivateListener( [in] ::com::sun::star::form::XFormControllerListener _Listener ); + + /** adds a controller to the list of child controllers + @throws ::com::sun::star::lang::IllegalArgumentException + if the given controller is <NULL/>, or cannot rightfully be a child controller. Since controllers + mirror the hierarchy of the forms the are responsible for, this means that the form of the given + child controller must be a child of the controller at which the method is invoked. + */ + void addChildController( [in] XFormController _ChildController ) + raises ( ::com::sun::star::lang::IllegalArgumentException ); +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/form/runtime/XFormControllerContext.idl b/offapi/com/sun/star/form/runtime/XFormControllerContext.idl new file mode 100644 index 000000000000..da0999ee17a7 --- /dev/null +++ b/offapi/com/sun/star/form/runtime/XFormControllerContext.idl @@ -0,0 +1,57 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __offapi_com_sun_star_form_runtime_XFormControllerContext_idl__ +#define __offapi_com_sun_star_form_runtime_XFormControllerContext_idl__ + +#include <com/sun/star/awt/XControl.idl> + +//============================================================================= + +module com { module sun { module star { module form { module runtime { + +//============================================================================= + +/** provides a context for a <type>FormController</type> + +<p>A <type>FormController</type> knows about the controls it is responsible + for, and about the control container which those controls live in. However, it doesn't know + about a possible larger context, like a scrollable view which the controls are embedded into. + To compensate this, it can be provided a <code>XFormControllerContext</code>.</p> + */ +interface XFormControllerContext +{ + /** ensures the given control is visible, by scrolling the view if necessary. + */ + void makeVisible( [in] ::com::sun::star::awt::XControl _Control ); +}; + +//============================================================================= + +}; }; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/form/runtime/XFormOperations.idl b/offapi/com/sun/star/form/runtime/XFormOperations.idl index 24552584aa29..10b568923ec5 100644 --- a/offapi/com/sun/star/form/runtime/XFormOperations.idl +++ b/offapi/com/sun/star/form/runtime/XFormOperations.idl @@ -44,8 +44,8 @@ #ifndef __com_sun_star_sdbc_XResultSetUpdate_idl__ #include <com/sun/star/sdbc/XResultSetUpdate.idl> #endif -#ifndef __com_sun_star_form_XFormController_idl__ -#include <com/sun/star/form/XFormController.idl> +#ifndef __com_sun_star_form_runtime_XFormController_idl__ +#include <com/sun/star/form/runtime/XFormController.idl> #endif #ifndef __com_sun_star_lang_IllegalArgumentException_idl__ #include <com/sun/star/lang/IllegalArgumentException.idl> @@ -115,7 +115,7 @@ interface XFormOperations : ::com::sun::star::lang::XComponent case some functionality will not be available. In particular, every feature which relies on the active control of the controller might be of limited use.</p> */ - [attribute, readonly] ::com::sun::star::form::XFormController Controller; + [attribute, readonly] ::com::sun::star::form::runtime::XFormController Controller; /** retrieves the current state of the given feature diff --git a/offapi/com/sun/star/form/runtime/makefile.mk b/offapi/com/sun/star/form/runtime/makefile.mk index 81c66826793b..97c4451edf40 100644 --- a/offapi/com/sun/star/form/runtime/makefile.mk +++ b/offapi/com/sun/star/form/runtime/makefile.mk @@ -42,10 +42,16 @@ PACKAGE=com$/sun$/star$/form$/runtime # ------------------------------------------------------------------------ IDLFILES=\ - FeatureState.idl\ + FeatureState.idl \ + FilterEvent.idl \ FormFeature.idl \ FormOperations.idl \ + FormController.idl \ XFeatureInvalidation.idl \ + XFilterController.idl \ + XFilterControllerListener.idl \ + XFormController.idl \ + XFormControllerContext.idl \ XFormOperations.idl \ # ------------------------------------------------------------------ diff --git a/offapi/com/sun/star/frame/XSessionManagerListener2.idl b/offapi/com/sun/star/frame/XSessionManagerListener2.idl new file mode 100644 index 000000000000..51e8643e459a --- /dev/null +++ b/offapi/com/sun/star/frame/XSessionManagerListener2.idl @@ -0,0 +1,56 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: XSessionManagerListener.idl,v $ + * $Revision: 1.4 $ + * + * 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. + * + ************************************************************************/ +#ifndef __com_sun_star_frame_XSessionManagerListener2_idl__ +#define __com_sun_star_frame_XSessionManagerListener2_idl__ + +#ifndef __com_sun_star_lang_XEventListener_idl__ +#include <com/sun/star/lang/XEventListener.idl> +#endif + +#ifndef __com_sun_star_frame_XSessionManagerListener_idl__ +#include <com/sun/star/frame/XSessionManagerListener.idl> +#endif +//============================================================================= + +module com { module sun { module star { module frame { + + interface XSessionManagerListener2 : XSessionManagerListener + { + /** doQuit gets called when the session manager has decided + the application should quit. Under these circumstances bringing up + further UI will usually be impossible and must be avoided. + */ + [oneway] void doQuit(); + }; + +}; }; }; }; + + +#endif diff --git a/offapi/com/sun/star/frame/makefile.mk b/offapi/com/sun/star/frame/makefile.mk index 789a0f6e499e..0d0650a701fb 100644 --- a/offapi/com/sun/star/frame/makefile.mk +++ b/offapi/com/sun/star/frame/makefile.mk @@ -142,6 +142,7 @@ IDLFILES=\ XRecordableDispatch.idl\ XSessionManagerClient.idl\ XSessionManagerListener.idl\ + XSessionManagerListener2.idl\ XStatusListener.idl\ XStatusbarController.idl\ XStorable.idl\ diff --git a/offapi/com/sun/star/modules.idl b/offapi/com/sun/star/modules.idl index d91c8edad1ff..81bcb46f06a0 100644 --- a/offapi/com/sun/star/modules.idl +++ b/offapi/com/sun/star/modules.idl @@ -78,9 +78,6 @@ module chart {}; */ module chart2 {}; -/// Non-JDBC conform database interfaces <b>(deprecated)</d> -module data {}; - /// Access to the tree of configuration data. module configuration {}; diff --git a/offapi/com/sun/star/presentation/XSlideShow.idl b/offapi/com/sun/star/presentation/XSlideShow.idl index 3d7f928249c9..88bbef3b16fb 100644 --- a/offapi/com/sun/star/presentation/XSlideShow.idl +++ b/offapi/com/sun/star/presentation/XSlideShow.idl @@ -93,6 +93,25 @@ interface XSlideShow : ::com::sun::star::uno::XInterface */ boolean nextEffect(); + /** Undo the last effect in the main sequence of the slideshow.<p> + + The current slide is displayed as if the last user-triggered effect + has never been triggered. If there is no previous effect on the + current slide then slideEnded(true) is called at the registered + XSlideShowListener objects, which can then trigger a change to the + previous slide. Note that this command is executed asynchronously. + Multiple calls to update() may be necessary to complete its execution. + If there is currently no slideshow running, this method does + nothing.<p> + + @return <TRUE/>, if the previous effect was successfully + triggered. This method returns <FALSE/>, if there is no show + running, the first effect on the first slide was not yet + triggered, or the implementation failed to trigger the previous + effect. + */ + boolean previousEffect(); + /** Start a shape-intrinsic animation or activity.<p> This method starts an animation or activity intrinsic to the @@ -145,8 +164,24 @@ interface XSlideShow : ::com::sun::star::uno::XInterface a different slide, this will still work but will not have any performance improvements </li> + <li>name: SkipAllMainSequenceEffects, value: boolean. + When <TRUE/> then all main sequence effects on the new slide + are triggered. This is typically used when going back one + effect leads to the previous slide. On that slide all + effects have to be shown in order to continue the backward + travelling. + When <FALSE/>, the default, then no main sequence effect is + triggered. + </li> + <li>name: SkipSlideTransition, value: boolean. + When <TRUE/> then the slide transition animation, if there + is any, is not displayed. This is typically used when going + back one effect leads to the previous slide. Typically used + together with SkipAllMainSequenceEffects also being <TRUE/>. + When <FALSE/>, the default, then the slide transition + effect, if it exists, is played. + </li> </ul> - */ void displaySlide( [in] ::com::sun::star::drawing::XDrawPage xSlide, diff --git a/offapi/com/sun/star/presentation/XSlideShowController.idl b/offapi/com/sun/star/presentation/XSlideShowController.idl index 9476604a2c77..8ddc9931e163 100644 --- a/offapi/com/sun/star/presentation/XSlideShowController.idl +++ b/offapi/com/sun/star/presentation/XSlideShowController.idl @@ -121,6 +121,14 @@ interface XSlideShowController //------------------------------------------------------------------------- + /** undo the last effects that where triggered by a generic trigger. + <p>If there is no previous effect that can be undone then the + previous slide will be displayed. + */ + void gotoPreviousEffect(); + + //------------------------------------------------------------------------- + /** goto and display first slide */ void gotoFirstSlide(); diff --git a/offapi/com/sun/star/presentation/XSlideShowListener.idl b/offapi/com/sun/star/presentation/XSlideShowListener.idl index 90b7dec18e84..46786eabc03c 100644 --- a/offapi/com/sun/star/presentation/XSlideShowListener.idl +++ b/offapi/com/sun/star/presentation/XSlideShowListener.idl @@ -65,8 +65,12 @@ interface XSlideShowListener : ::com::sun::star::animations::XAnimationListener /** Notify that the current slide has ended, e.g. the user has clicked on the slide. Calling displaySlide() twice will not issue this event. + @param reverse + For the default order (forward) this flag is <FALSE/>. + When the main sequence was traversed in reverse order then this + flag is <TRUE/>. */ - void slideEnded(); + void slideEnded( [in] boolean reverse ); /** Notifies that a hyperlink has been clicked. @param hyperLink hyperlink URL diff --git a/offapi/com/sun/star/sdb/DataSourceBrowser.idl b/offapi/com/sun/star/sdb/DataSourceBrowser.idl index 36c73ae9da2c..0690321608a4 100644 --- a/offapi/com/sun/star/sdb/DataSourceBrowser.idl +++ b/offapi/com/sun/star/sdb/DataSourceBrowser.idl @@ -168,13 +168,11 @@ published service DataSourceBrowser <p> With a data source browser implementing this interface, external components have access to <ul><li>the grid control which is used to display the currently selected table/query - (see - <method scope="com.sun.star.form">XFormController::getControls()</method> - ) + (see <method scope="com::sun::star::awt">XTabController::getControls</method>) </li> <li>the data form used for displaying objects. As always for components implementing this service, the object returned by - <method scope="com.sun.star.awt">XTabController::getModel()</method>isadataform. + <method scope="com::sun::star::awt">XTabController::getModel</method>is a dataform. </li> </ul> </p> diff --git a/offapi/com/sun/star/sdb/DatabaseContext.idl b/offapi/com/sun/star/sdb/DatabaseContext.idl index e82cce64de3d..623b28c887b8 100644 --- a/offapi/com/sun/star/sdb/DatabaseContext.idl +++ b/offapi/com/sun/star/sdb/DatabaseContext.idl @@ -52,6 +52,8 @@ module com { module sun { module star { module sdb { +published interface XDatabaseRegistrations; + /** is the context for accessing datasource. <p> @@ -65,12 +67,10 @@ */ published service DatabaseContext { - /** Enumeration on all registered data sources. */ interface com::sun::star::container::XEnumerationAccess; - /** NameAccess on all registered data sources. <p>One exception is the <method "com.sun.star.container.XNameAccess">getByName</method>, this method also allows to ask for a <member "DataAccessDescriptor">DatabaseLocation</member>. @@ -89,6 +89,19 @@ published service DatabaseContext /** Interface for creation of new datasources. */ interface com::sun::star::lang::XSingleServiceFactory; + + /** allows to access and modify the configuration data for registered data source. + + <p>The main purpose of this interface is to allow you to register data sources which you know + by URL only, and have not yet loaded.</p> + + <p>Also, it hides the details of the configuration data where the data source registrations + are maintained, so if possible at all, you should use this interface, instead of modifying or + querying the configuration data directly.</p> + + @since OpenOffice.org 3.3 + */ + [optional] interface XDatabaseRegistrations; }; //============================================================================= diff --git a/offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl b/offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl new file mode 100644 index 000000000000..3f2a82aa13cb --- /dev/null +++ b/offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl @@ -0,0 +1,60 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __com_sun_star_sdb_DatabaseRegistrationEvent_idl__ +#define __com_sun_star_sdb_DatabaseRegistrationEvent_idl__ + +#include <com/sun/star/lang/EventObject.idl> + +//============================================================================= + +module com { module sun { module star { module sdb { + +//============================================================================= + +/** describes a change in a database registration + + @see XDatabaseRegistrations + @see XDatabaseRegistrationsListener + + @since OpenOffice.org 3.3 + */ +struct DatabaseRegistrationEvent : ::com::sun::star::lang::EventObject +{ + /// is the name of the database registration affected by the event + string Name; + /// is the old location of the database which is affected by the event + string OldLocation; + /// is the new location of the database which is affected by the event + string NewLocation; +}; + +//============================================================================= + +}; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/sdb/XDatabaseAccess.idl b/offapi/com/sun/star/sdb/XDatabaseAccess.idl index a9091be56ce5..61667e73a1af 100644 --- a/offapi/com/sun/star/sdb/XDatabaseAccess.idl +++ b/offapi/com/sun/star/sdb/XDatabaseAccess.idl @@ -54,60 +54,17 @@ //============================================================================= -/** is used to connect to a data access bean. A data access bean represents a - database connection and provides additional information related to the connection - such as forms, reports, or queries. +/** is not to be used anymore + @deprecated */ published interface XDatabaseAccess: com::sun::star::sdbc::XDataSource { - - /** indicates that connections already exist. - @returns - <TRUE/> if so - */ boolean hasConnections(); - //------------------------------------------------------------------------- - - /** attempts to establish a database connection, that can not be shared with - other components. This should be used for transaction processing. - @param user - the user name - @param password - the password - @returns - an isolated connection object - @throws com::sun::star::sdbc::SQLException - if a database access error occurs. - @see com::sun::star::sdbc::XConnection - */ com::sun::star::sdbc::XConnection getIsolatedConnection([in]string user, [in]string password) raises (com::sun::star::sdbc::SQLException); - //------------------------------------------------------------------------- - - /** closes the all connections to database. This request could be aborted by - listeners of the component. - @throws com::sun::star::sdbc::SQLException - if a database access error occurs. - */ boolean suspendConnections() raises (com::sun::star::sdbc::SQLException); - //------------------------------------------------------------------------- - - /** adds the specified listener to receive the events "connectionChanged", - "approveConnectionClose", and "connectionClosing". - @param listener - the listener to append - @see com::sun::star::sdb::XDatabaseAccessListener - */ [oneway] void addDatabaseAccessListener([in]XDatabaseAccessListener listener); - //------------------------------------------------------------------------- - - /** removes the specified listener. - @param listener - the listener to append - @see com::sun::star::sdb::XDatabaseAccessListener - */ - [oneway] void removeDatabaseAccessListener( - [in]XDatabaseAccessListener listener); + [oneway] void removeDatabaseAccessListener([in]XDatabaseAccessListener listener); }; //============================================================================= diff --git a/offapi/com/sun/star/sdb/XDatabaseAccessListener.idl b/offapi/com/sun/star/sdb/XDatabaseAccessListener.idl index 1c9361f9da09..2a502f632d86 100644 --- a/offapi/com/sun/star/sdb/XDatabaseAccessListener.idl +++ b/offapi/com/sun/star/sdb/XDatabaseAccessListener.idl @@ -37,44 +37,13 @@ module com { module sun { module star { module sdb { -/** is used for receiving "connectionChanged", "approveConnectionClose", and - "connectionClosing" events posted by a database access bean. - - - <p> - A database access bean setting may be changed to connect to a different database. - In that case, the connection of the bean must be closed and a new connection must - be established. The could affect the current data processing on the bean, as it - could be shared by a number of components. To prevent the bean from closing it's - connection, a DatabaseAccessListener could abort the closing. - </p> +/** is not to be used anymore + @deprecated */ published interface XDatabaseAccessListener: com::sun::star::lang::XEventListener { - - /** indicates that a new connection for the bean has been established. - @param evenet - the event happend - */ [oneway] void connectionChanged([in]com::sun::star::lang::EventObject event); - //------------------------------------------------------------------------- - - /** indicates that the connection of the bean will be closed. If there are pending - actions on the connection of the bean, "approveConnectionClosing" should return - <FALSE/>. - - @param evenet - the event happend - @returns - <TRUE/> when approved, otherwise <FALSE/> - */ boolean approveConnectionClosing([in]com::sun::star::lang::EventObject event); - //------------------------------------------------------------------------- - - /** indicates that the connection will definitely be closed. - @param evenet - the event happend - */ [oneway] void connectionClosing([in]com::sun::star::lang::EventObject event); }; diff --git a/offapi/com/sun/star/sdb/XDatabaseEnvironment.idl b/offapi/com/sun/star/sdb/XDatabaseEnvironment.idl index 2e7f9b46200c..5cb3aa4832fd 100644 --- a/offapi/com/sun/star/sdb/XDatabaseEnvironment.idl +++ b/offapi/com/sun/star/sdb/XDatabaseEnvironment.idl @@ -54,39 +54,14 @@ //============================================================================= -/** specifies the root of the data access beans. It provides the possiblity - to open a data access bean, which contains tables, queries, forms, and - report documents, or to open a connection to a database. +/** is not to be used anymore. @deprecated */ published interface XDatabaseEnvironment: com::sun::star::sdbc::XDriverManager { - //------------------------------------------------------------------------- - - /** returns an existing DatabaseAccess bean specified by it's URL. - - - <p>Database Access beans are always shared, so if there's a second request - for the same bean, the same instance of the bean will be returned, if it is still alive. - </p> - @param URL - a database url of the form sdbc:subprotocol:subname - @returns - the database access object for this url - */ XDatabaseAccess getDatabaseAccess([in]string URL) raises (com::sun::star::sdbc::SQLException); - //------------------------------------------------------------------------- - - /** creates a new DatabaseAccess bean specified by it's URL. - @param URL - a database url of the form sdbc:subprotocol:subname - @param title - the title of the database access - @returns - the new created database access object for this url - */ XDatabaseAccess createDatabaseAccess([in]string URL, [in]string title) raises (com::sun::star::sdbc::SQLException); }; diff --git a/offapi/com/sun/star/sdb/XDatabaseRegistrations.idl b/offapi/com/sun/star/sdb/XDatabaseRegistrations.idl new file mode 100644 index 000000000000..ce8e54b8d359 --- /dev/null +++ b/offapi/com/sun/star/sdb/XDatabaseRegistrations.idl @@ -0,0 +1,158 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __com_sun_star_sdb_XDatabaseRegistrations_idl__ +#define __com_sun_star_sdb_XDatabaseRegistrations_idl__ + +#include <com/sun/star/container/NoSuchElementException.idl> +#include <com/sun/star/container/ElementExistException.idl> +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/lang/IllegalAccessException.idl> + +//============================================================================= + +module com { module sun { module star { module sdb { + +interface XDatabaseRegistrationsListener; + +//============================================================================= + +/** provides access to the application-wide registered databases. + + <p>This interface provides a mere wrapper around the respective configuration data, + this way hiding the concrete configuration structure from its clients. You should, + if possible at all, use this interface, instead of modifying or querying the configuration + data directly.</p> + + @since OpenOffice.org 3.3 + */ +interface XDatabaseRegistrations +{ + /** determines whether a database is registered under the given name. + + @throws ::com::sun::star::lang::IllegalArgumentException + if the given name is empty + */ + boolean hasRegisteredDatabase( [in] string Name ) + raises ( ::com::sun::star::lang::IllegalArgumentException + ); + + /** returns the names of all registered databases + */ + sequence< string > + getRegistrationNames(); + + /** returns the location of the database registered under the given name + + @throws ::com::sun::star::lang::IllegalArgumentException + if the given name is empty + + @throws ::com::sun::star::container::NoSuchElementException + if there is no database registered under this name + */ + string getDatabaseLocation( [in] string Name ) + raises ( ::com::sun::star::lang::IllegalArgumentException + , ::com::sun::star::container::NoSuchElementException + ); + + /** registers a database, given by location, under a given name + + @throws ::com::sun::star::lang::IllegalArgumentException + if the given name is empty, or the given location is invalid. + + @throws ::com::sun::star::container::ElementExistException + if there already is a databases registered under the given name. + */ + void registerDatabaseLocation( [in] string Name, [in] string Location ) + raises ( ::com::sun::star::lang::IllegalArgumentException + , ::com::sun::star::container::ElementExistException + ); + + /** revokes the registration of a database, given by name + + @throws ::com::sun::star::lang::IllegalArgumentException + if the given name is empty + + @throws ::com::sun::star::container::NoSuchElementException + if there is no database registered under this name + + @throws ::com::sun::star::lang::IllegalAccessException + if the registration data for this database is read-only + */ + void revokeDatabaseLocation( [in] string Name ) + raises ( ::com::sun::star::lang::IllegalArgumentException + , ::com::sun::star::container::NoSuchElementException + , ::com::sun::star::lang::IllegalAccessException + ); + + /** changes the location of a given database registration + + @throws ::com::sun::star::lang::IllegalArgumentException + if the given name is empty, or the given location is invalid. + + @throws ::com::sun::star::container::NoSuchElementException + if there is no database registered under this name + + @throws ::com::sun::star::lang::IllegalAccessException + if the registration data for this database is read-only + */ + void changeDatabaseLocation( [in] string Name, [in] string NewLocation ) + raises ( ::com::sun::star::lang::IllegalArgumentException + , ::com::sun::star::container::NoSuchElementException + , ::com::sun::star::lang::IllegalAccessException + ); + + /** determines whether the registration data for a database given by name is + read-only. + + <p>In this case, attempts to revoke this registration will fail.</p> + + @throws ::com::sun::star::lang::IllegalArgumentException + if the given name is empty + + @throws ::com::sun::star::container::NoSuchElementException + if there is no database registered under this name + */ + boolean isDatabaseRegistrationReadOnly( [in] string Name ) + raises ( ::com::sun::star::lang::IllegalArgumentException + , ::com::sun::star::container::NoSuchElementException + ); + + /** registers a listener which is notified of changes in the registered databases + */ + void addDatabaseRegistrationsListener( [in] XDatabaseRegistrationsListener Listener ); + + /** revokes a previously registered listener + */ + void removeDatabaseRegistrationsListener( [in] XDatabaseRegistrationsListener Listener ); +}; + +//============================================================================= + +}; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl b/offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl new file mode 100644 index 000000000000..f5fc65513d6e --- /dev/null +++ b/offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl @@ -0,0 +1,70 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* 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. +************************************************************************/ + +#ifndef __com_sun_star_sdb_XDatabaseRegistrationsListener_idl__ +#define __com_sun_star_sdb_XDatabaseRegistrationsListener_idl__ + +#include <com/sun/star/lang/XEventListener.idl> +#include <com/sun/star/sdb/DatabaseRegistrationEvent.idl> + +//============================================================================= + +module com { module sun { module star { module sdb { + +//============================================================================= + +/** implemented by components which want to be notified of changes in the application-wide registered + databases. + + @see XDatabaseRegistrations + + @since OpenOffice.org 3.3 + */ +interface XDatabaseRegistrationsListener : ::com::sun::star::lang::XEventListener +{ + /** called when a database has been registered + */ + void registeredDatabaseLocation( [in] DatabaseRegistrationEvent Event ); + + /** called when a database registration has been revoked + */ + void revokedDatabaseLocation( [in] DatabaseRegistrationEvent Event ); + + /** called when a the location of a registered database changed + + <p>Note that this talks about registration data only. That is, if the actual file denoted by the database + registration is moved, this is in no way monitored or reported. Only (successful) calls to + <member>XDatabaseRegistrations::changeDatabaseLocation</member> are reported here.</p> + */ + void changedDatabaseLocation( [in] DatabaseRegistrationEvent Event ); +}; + +//============================================================================= + +}; }; }; }; + +//============================================================================= + +#endif diff --git a/offapi/com/sun/star/sdb/makefile.mk b/offapi/com/sun/star/sdb/makefile.mk index b535584fc4b8..3e76283ecf18 100644 --- a/offapi/com/sun/star/sdb/makefile.mk +++ b/offapi/com/sun/star/sdb/makefile.mk @@ -62,6 +62,7 @@ IDLFILES=\ DatabaseContext.idl \ DatabaseDocument.idl \ DatabaseEnvironment.idl \ + DatabaseRegistrationEvent.idl \ DataColumn.idl \ DataSettings.idl \ DataSource.idl \ @@ -113,6 +114,8 @@ IDLFILES=\ XDataAccessDescriptorFactory.idl \ XDatabaseAccess.idl \ XDatabaseAccessListener.idl \ + XDatabaseRegistrations.idl \ + XDatabaseRegistrationsListener.idl \ XDatabaseEnvironment.idl \ XDocumentDataSource.idl \ XFormDocumentsSupplier.idl \ diff --git a/offapi/com/sun/star/ui/ItemStyle.idl b/offapi/com/sun/star/ui/ItemStyle.idl index 6c20d06e9a56..6646c5ec5c72 100644 --- a/offapi/com/sun/star/ui/ItemStyle.idl +++ b/offapi/com/sun/star/ui/ItemStyle.idl @@ -127,6 +127,7 @@ constants ItemStyle /** specifies if an icon is placed on left side of the text, like an entry in a taskbar. <p>This style is only valid if the item describes a toolbar item and visible if style of the toolbar is set to symboltext.</p> + <p> This style can also be used for custom toolbars and menus, in a custom toolbar an item's Style setting can used to override the toolbar container setting, the style can be bitwise OR-ed with <member scope="::com::sun::star::ui::ItemStyle">TEXT</member> to define text, text+icon or icon only is to be displayed. Similarly for menu items, an items Style can override the application setting to display either text or icon ( note: for menu an icon only setting interpreted as icon+text ) </p> */ const short ICON = 128; @@ -149,6 +150,10 @@ constants ItemStyle <p>This style is only valid if the item describes a toolbar item.</p> */ const short DROPDOWN_ONLY = 1024; + /** indicates if icon, text or text+icon is displayed for the item. + <p> This style can be used for custom toolbars and menus, in a custom toolbar an item's Style setting can used to override the toolbar container setting, the style can be bitwise OR-ed with <member scope="com::sun::star::ui::ItemStyle">ICON</member> to define text, text+icon or icon only is to be displayed. Similarly for menu items, an items Style can override the application setting to display either text or icon ( note: for menu an icon only setting interpreted as icon+text ) </p> + */ + const short TEXT = 2048; }; }; }; }; }; diff --git a/offapi/com/sun/star/util/Duration.idl b/offapi/com/sun/star/util/Duration.idl new file mode 100644 index 000000000000..39f3ca8114ce --- /dev/null +++ b/offapi/com/sun/star/util/Duration.idl @@ -0,0 +1,104 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: DateTime.idl,v $ + * $Revision: 1.7 $ + * + * 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. + * + ************************************************************************/ + +#ifndef __com_sun_star_util_Duration_idl__ +#define __com_sun_star_util_Duration_idl__ + + +//======================================================================== + +module com { module sun { module star { module util { + +//======================================================================== + +/** represents a duration. + + <p> + A duration is the difference of 2 <type>DateTime</type>s. + </p> + + <p> + Note that there are no constraints on the ranges of the members, + except that every member must be non-negative: + for example, a Duration of 400 Days is valid. + </p> + + @since OOo 3.3 + */ +struct Duration +{ + //-------------------------------------------------------------------- + /** explicit sign bit. + */ + boolean Negative; + + //-------------------------------------------------------------------- + /** contains the years. + */ + unsigned short Years; + + //-------------------------------------------------------------------- + /** contains the months. + */ + unsigned short Months; + + //-------------------------------------------------------------------- + /** contains the days. + */ + unsigned short Days; + + //-------------------------------------------------------------------- + /** contains the hours. + */ + unsigned short Hours; + + //-------------------------------------------------------------------- + /** contains the minutes. + */ + unsigned short Minutes; + + //-------------------------------------------------------------------- + /** contains the seconds. + */ + unsigned short Seconds; + + //-------------------------------------------------------------------- + /** contains the hundredth seconds. + */ + unsigned short HundredthSeconds; + +}; + +//======================================================================== + +}; }; }; }; + +#endif + diff --git a/offapi/com/sun/star/util/makefile.mk b/offapi/com/sun/star/util/makefile.mk index 44fbdf9065b2..e5f9aab136c3 100644 --- a/offapi/com/sun/star/util/makefile.mk +++ b/offapi/com/sun/star/util/makefile.mk @@ -53,6 +53,7 @@ IDLFILES=\ DateTime.idl\ DateTimeRange.idl\ DiskFullException.idl\ + Duration.idl\ ElementChange.idl \ Endianness.idl \ FileIOException.idl\ diff --git a/offapi/com/sun/star/view/DuplexMode.idl b/offapi/com/sun/star/view/DuplexMode.idl new file mode 100644 index 000000000000..6d5d84ff4abc --- /dev/null +++ b/offapi/com/sun/star/view/DuplexMode.idl @@ -0,0 +1,69 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: PaperFormat.idl,v $ + * $Revision: 1.7 $ + * + * 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. + * + ************************************************************************/ +#ifndef __com_sun_star_view_DuplexMode_idl__ +#define __com_sun_star_view_DuplexMode_idl__ + + +//============================================================================= + +module com { module sun { module star { module view { + +//============================================================================= + +/** These constants specify available duplex modes + */ +constants DuplexMode +{ + //------------------------------------------------------------------------- + /** specifies an unknown duplex mode. + */ + const short UNKNOWN = 0; + + //------------------------------------------------------------------------- + /** specifies that there is no duplex mode enabled + */ + const short OFF = 1; + + //------------------------------------------------------------------------- + /** specifies a long edge duplex mode + */ + const short LONGEDGE = 2; + + //------------------------------------------------------------------------- + /** specifies a short edge duplex mode + */ + const short SHORTEDGE = 3; +}; + +//============================================================================= + +}; }; }; }; + +#endif diff --git a/offapi/com/sun/star/view/PrintOptions.idl b/offapi/com/sun/star/view/PrintOptions.idl index 6bd67e0f52bd..df65229a0854 100644 --- a/offapi/com/sun/star/view/PrintOptions.idl +++ b/offapi/com/sun/star/view/PrintOptions.idl @@ -85,6 +85,13 @@ published service PrintOptions Otherwhise following actions (as e.g. closing the corresponding model) can fail. */ [optional, property] boolean Wait; + + //------------------------------------------------------------------------- + /** determines the duplex mode for the print job. + + @see <type>DuplexMode</type> for more information about supported values + */ + [optional, property] short DuplexMode; }; //============================================================================= diff --git a/offapi/com/sun/star/view/XFormLayerAccess.idl b/offapi/com/sun/star/view/XFormLayerAccess.idl index a5a96dd31e5d..16d8fb5137c3 100644 --- a/offapi/com/sun/star/view/XFormLayerAccess.idl +++ b/offapi/com/sun/star/view/XFormLayerAccess.idl @@ -37,8 +37,8 @@ #ifndef __com_sun_star_form_XForm_idl__ #include <com/sun/star/form/XForm.idl> #endif -#ifndef __com_sun_star_form_XFormController_idl__ -#include <com/sun/star/form/XFormController.idl> +#ifndef __com_sun_star_form_runtime_XFormController_idl__ +#include <com/sun/star/form/runtime/XFormController.idl> #endif #ifndef __com_sun_star_lang_IllegalArgumentException_idl__ #include <com/sun/star/lang/IllegalArgumentException.idl> @@ -73,10 +73,10 @@ interface XFormLayerAccess @see isDesignMode @see setDesignMode - @see ::com::sun::star::form::FormController + @see ::com::sun::star::form::runtime::FormController @see ::com::sun::star::form::runtime::FormOperations */ - ::com::sun::star::form::XFormController + ::com::sun::star::form::runtime::XFormController getFormController( [in] ::com::sun::star::form::XForm Form ); diff --git a/offapi/com/sun/star/view/makefile.mk b/offapi/com/sun/star/view/makefile.mk index 04dbdc77abac..1db50d0ece89 100644 --- a/offapi/com/sun/star/view/makefile.mk +++ b/offapi/com/sun/star/view/makefile.mk @@ -73,7 +73,8 @@ IDLFILES=\ XPrintJobBroadcaster.idl\ XPrintJobListener.idl\ XMultiSelectionSupplier.idl\ - SelectionType.idl + SelectionType.idl\ + DuplexMode.idl # ------------------------------------------------------------------ diff --git a/offapi/util/makefile.mk b/offapi/util/makefile.mk index d3157dac31df..34fde4014a5b 100644 --- a/offapi/util/makefile.mk +++ b/offapi/util/makefile.mk @@ -180,12 +180,12 @@ $(OUT)$/ucrdoc$/types_doc.db : $(OUT)$/ucrdoc$/offapi_doc.db $(SOLARBINDIR)$/udk #JSC: i have removed the doc rdb because all type information is already in the # types.rdb, even the service and singleton type info. IDL docu isn't checked. $(REGISTRYCHECKFLAG) : $(UCR)$/types.db $(OUT)$/ucrdoc$/types_doc.db - $(REGCOMPARE) -f -t -r1 $(REFERENCE_RDB) -r2 $(UCR)$/types.db \ + $(COMMAND_ECHO)$(REGCOMPARE) -f -t -r1 $(REFERENCE_RDB) -r2 $(UCR)$/types.db \ && echo > $(REGISTRYCHECKFLAG) #JSC: new target to prepare some UNO type statistics, the ouput will be later used # for versioning of UNO cli type libraries $(UNOTYPE_STATISTICS) : $(REGISTRYCHECKFLAG) - $(AUGMENT_LIBRARY_PATH) $(PERL) checknewapi.pl $(UCR)$/types.db $(REFERENCE_RDB) "$(RSCREVISION)" "$(REGVIEWTOOL)" > $@ + $(COMMAND_ECHO)$(AUGMENT_LIBRARY_PATH) $(PERL) checknewapi.pl $(UCR)$/types.db $(REFERENCE_RDB) "$(RSCREVISION)" "$(REGVIEWTOOL)" > $@ .INCLUDE : target.mk diff --git a/pyuno/source/loader/makefile.mk b/pyuno/source/loader/makefile.mk index 6e4f96ed7014..f9f00e4f13ae 100644 --- a/pyuno/source/loader/makefile.mk +++ b/pyuno/source/loader/makefile.mk @@ -42,7 +42,7 @@ DLLPRE = #------------------------------------------------------------------- -.IF "$(OS)$(CPU)$(COMEX)" == "SOLARISS4" +.IF "$(OS)$(COMEX)" == "SOLARIS4" # no -Bdirect for SunWS CC DIRECT = $(LINKFLAGSDEFS) .ENDIF diff --git a/pyuno/source/module/makefile.mk b/pyuno/source/module/makefile.mk index 2357d0062ed0..2928d29668aa 100644 --- a/pyuno/source/module/makefile.mk +++ b/pyuno/source/module/makefile.mk @@ -42,7 +42,7 @@ LINKFLAGSDEFS = # do not fail with missing symbols .IF "$(L10N_framework)"=="" #------------------------------------------------------------------- -.IF "$(OS)$(CPU)$(COMEX)" == "SOLARISS4" +.IF "$(OS)$(COMEX)" == "SOLARIS4" # no -Bdirect for SunWS CC DIRECT = $(LINKFLAGSDEFS) .ENDIF diff --git a/pyuno/source/module/pyuno_gc.cxx b/pyuno/source/module/pyuno_gc.cxx index 513c14a99378..1e0ca08ff954 100644 --- a/pyuno/source/module/pyuno_gc.cxx +++ b/pyuno/source/module/pyuno_gc.cxx @@ -43,6 +43,12 @@ public: }; StaticDestructorGuard guard; +static bool isAfterUnloadOrPy_Finalize() +{ + return g_destructorsOfStaticObjectsHaveBeenCalled || + !Py_IsInitialized(); +} + class GCThread : public ::osl::Thread { PyObject *mPyObject; @@ -64,7 +70,7 @@ GCThread::GCThread( PyInterpreterState *interpreter, PyObject * object ) : void GCThread::run() { // otherwise we crash here, when main has been left already - if( g_destructorsOfStaticObjectsHaveBeenCalled ) + if( isAfterUnloadOrPy_Finalize() ) return; try { @@ -100,7 +106,7 @@ void GCThread::onTerminated() void decreaseRefCount( PyInterpreterState *interpreter, PyObject *object ) { // otherwise we crash in the last after main ... - if( g_destructorsOfStaticObjectsHaveBeenCalled ) + if( isAfterUnloadOrPy_Finalize() ) return; // delegate to a new thread, because there does not seem diff --git a/registry/source/keyimpl.cxx b/registry/source/keyimpl.cxx index 281c8e27cbf0..b41fbbb5ada9 100644 --- a/registry/source/keyimpl.cxx +++ b/registry/source/keyimpl.cxx @@ -365,7 +365,7 @@ RegError ORegKey::setValue(const OUString& valueName, RegValueType vType, RegVal return REG_SET_VALUE_FAILED; } - rValue.flush(); + //rValue.flush(); rtl_freeMemory(pBuffer); return REG_NO_ERROR; } @@ -424,7 +424,7 @@ RegError ORegKey::setLongListValue(const OUString& valueName, sal_Int32* pValueL return REG_SET_VALUE_FAILED; } - rValue.flush(); + //rValue.flush(); rtl_freeMemory(pBuffer); return REG_NO_ERROR; } @@ -492,7 +492,7 @@ RegError ORegKey::setStringListValue(const OUString& valueName, sal_Char** pValu return REG_SET_VALUE_FAILED; } - rValue.flush(); + //rValue.flush(); rtl_freeMemory(pBuffer); return REG_NO_ERROR; } @@ -560,7 +560,7 @@ RegError ORegKey::setUnicodeListValue(const OUString& valueName, sal_Unicode** p return REG_SET_VALUE_FAILED; } - rValue.flush(); + //rValue.flush(); rtl_freeMemory(pBuffer); return REG_NO_ERROR; } diff --git a/registry/source/regimpl.cxx b/registry/source/regimpl.cxx index 8a4dd8b88ee9..b9edca734232 100644 --- a/registry/source/regimpl.cxx +++ b/registry/source/regimpl.cxx @@ -848,7 +848,7 @@ RegError ORegistry::eraseKey(ORegKey* pKey, const OUString& keyName) { return REG_DELETE_KEY_FAILED; } - sFile.flush(); + //sFile.flush(); // set flag deleted !!! ((ORegKey*)hOldKey)->setDeleted(sal_True); @@ -894,7 +894,7 @@ RegError ORegistry::deleteSubkeysAndValues(ORegKey* pKey) { return REG_DELETE_VALUE_FAILED; } - ((OStoreFile&)pKey->getStoreFile()).flush(); + //((OStoreFile&)pKey->getStoreFile()).flush(); } _err = rStoreDir.next(iter); @@ -1065,7 +1065,7 @@ RegError ORegistry::loadAndSaveValue(ORegKey* pTargetKey, { return REG_VALUE_NOT_EXISTS; } - pSourceKey->getStoreFile().flush(); + //pSourceKey->getStoreFile().flush(); pBuffer = (sal_uInt8*)rtl_allocateMemory(VALUE_HEADERSIZE); @@ -1137,7 +1137,7 @@ RegError ORegistry::loadAndSaveValue(ORegKey* pTargetKey, rtl_freeMemory(pBuffer); return REG_INVALID_VALUE; } - rTargetFile.flush(); + //rTargetFile.flush(); if (rwBytes != nSize) { @@ -1482,6 +1482,20 @@ RegError ORegistry::dumpRegistry(RegKeyHandle hKey) const return REG_NO_ERROR; } +RegError ORegistry::flush() +{ + REG_GUARD(m_mutex); + + if (m_file.isValid()) + { + m_file.flush(); + return REG_NO_ERROR; + } else + { + return REG_REGISTRY_NOT_EXISTS; + } +} + //********************************************************************* // dumpValue() diff --git a/registry/source/regimpl.hxx b/registry/source/regimpl.hxx index c32dcf3527df..32baf9cc6ed5 100644 --- a/registry/source/regimpl.hxx +++ b/registry/source/regimpl.hxx @@ -113,6 +113,8 @@ public: RegError dumpRegistry(RegKeyHandle hKey) const; + RegError flush(); + ~ORegistry(); sal_Bool isReadOnly() const diff --git a/registry/source/registry.cxx b/registry/source/registry.cxx index cb145b3910c2..139646f7cdc7 100644 --- a/registry/source/registry.cxx +++ b/registry/source/registry.cxx @@ -430,6 +430,8 @@ static RegError REGISTRY_CALLTYPE mergeKey(RegHandle hReg, */ _ret = pKey->closeKey(pNewKey); + if (_ret == REG_NO_ERROR ) + _ret = pReg->flush(); return _ret; } diff --git a/sal/inc/osl/endian.h b/sal/inc/osl/endian.h index b0d2922839be..09529a48840f 100644 --- a/sal/inc/osl/endian.h +++ b/sal/inc/osl/endian.h @@ -118,20 +118,6 @@ extern "C" { # include <machine/param.h> #endif -#ifdef IRIX -# include <sys/endian.h> -# if BYTE_ORDER == LITTLE_ENDIAN -# undef _BIG_ENDIAN -# undef _PDP_ENDIAN -# elif BYTE_ORDER == BIG_ENDIAN -# undef _LITTLE_ENDIAN -# undef _PDP_ENDIAN -# elif BYTE_ORDER == PDP_ENDIAN -# undef _LITTLE_ENDIAN -# undef _BIG_ENDIAN -# endif -#endif - #ifdef _WIN16 # define _LITTLE_ENDIAN #endif @@ -166,8 +152,7 @@ extern "C" { #if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \ !defined(LINUX) && !defined(NETBSD) && !defined(SCO) && \ !defined(AIX) && !defined(HPUX) && \ - !defined(SOLARIS) && !defined(IRIX) && \ - !defined(MACOSX) && !defined(FREEBSD) + !defined(SOLARIS) && !defined(MACOSX) && !defined(FREEBSD) # error "Target platform not specified !" #endif diff --git a/sal/inc/osl/thread.hxx b/sal/inc/osl/thread.hxx index 0df24e07587a..b770120c167e 100644 --- a/sal/inc/osl/thread.hxx +++ b/sal/inc/osl/thread.hxx @@ -117,7 +117,7 @@ public: osl_joinWithThread(m_hThread); } - sal_Bool SAL_CALL isRunning() + sal_Bool SAL_CALL isRunning() const { return osl_isThreadRunning(m_hThread); } @@ -128,7 +128,7 @@ public: osl_setThreadPriority(m_hThread, Priority); } - oslThreadPriority SAL_CALL getPriority() + oslThreadPriority SAL_CALL getPriority() const { return m_hThread ? osl_getThreadPriority(m_hThread) : osl_Thread_PriorityUnknown; } diff --git a/sal/inc/rtl/math.hxx b/sal/inc/rtl/math.hxx index 5760340cc6a4..4891b7565647 100644 --- a/sal/inc/rtl/math.hxx +++ b/sal/inc/rtl/math.hxx @@ -357,17 +357,28 @@ inline bool isSignBitSet(double d) */ inline void setInf(double * pd, bool bNegative) { - reinterpret_cast< sal_math_Double * >(pd)->w32_parts.msw - = bNegative ? 0xFFF00000 : 0x7FF00000; - reinterpret_cast< sal_math_Double * >(pd)->w32_parts.lsw = 0; + union + { + double sd; + sal_math_Double md; + }; + md.w32_parts.msw = bNegative ? 0xFFF00000 : 0x7FF00000; + md.w32_parts.lsw = 0; + *pd = sd; } /** Set a QNAN. */ inline void setNan(double * pd) { - reinterpret_cast< sal_math_Double * >(pd)->w32_parts.msw = 0x7FFFFFFF; - reinterpret_cast< sal_math_Double * >(pd)->w32_parts.lsw = 0xFFFFFFFF; + union + { + double sd; + sal_math_Double md; + }; + md.w32_parts.msw = 0x7FFFFFFF; + md.w32_parts.lsw = 0xFFFFFFFF; + *pd = sd; } /** If a value is a valid argument for sin(), cos(), tan(). diff --git a/sal/inc/rtl/uuid.h b/sal/inc/rtl/uuid.h index 6451ac7738d6..76911dd841fb 100644 --- a/sal/inc/rtl/uuid.h +++ b/sal/inc/rtl/uuid.h @@ -201,8 +201,6 @@ void SAL_CALL rtl_createNamedUuid( #define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 10 #elif MACOSX #define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 100000 -#elif IRIX -#define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 10 #else #error "System time resolution must be calculated!" #endif diff --git a/sal/inc/sal/alloca.h b/sal/inc/sal/alloca.h index 703027277f18..912e58eff06e 100644 --- a/sal/inc/sal/alloca.h +++ b/sal/inc/sal/alloca.h @@ -31,7 +31,7 @@ #ifndef INCLUDED_SAL_ALLOCA_H #define INCLUDED_SAL_ALLOCA_H -#if defined (SOLARIS) || defined (LINUX) || defined (IRIX) || defined(__EMX__) +#if defined (SOLARIS) || defined (LINUX) || defined(__EMX__) #ifndef INCLUDED_ALLOCA_H #include <alloca.h> diff --git a/sal/inc/sal/config.h b/sal/inc/sal/config.h index f16165fe72cb..c9d31a437758 100644 --- a/sal/inc/sal/config.h +++ b/sal/inc/sal/config.h @@ -102,7 +102,7 @@ extern "C" { #define SAL_SYSCONFIGFILE( name ) name ".ini" #endif -#if defined(SOLARIS) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(SCO) || defined(IRIX) +#if defined(SOLARIS) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(SCO) #define SAL_UNX #define SAL_DLLEXTENSION ".so" #define SAL_DLLPREFIX "lib" diff --git a/sal/osl/os2/file.cxx b/sal/osl/os2/file.cxx index e89ce6450bee..f3c1ad015de0 100644 --- a/sal/osl/os2/file.cxx +++ b/sal/osl/os2/file.cxx @@ -2343,7 +2343,7 @@ oslFileError SAL_CALL osl_syncFile(oslFileHandle Handle) # define __OSL_STATFS_IS_CASE_PRESERVING_FS(a) ((__OSL_MSDOS_SUPER_MAGIC != (a).f_type)) #endif /* LINUX */ -#if defined(SOLARIS) || defined(IRIX) +#if defined(SOLARIS) # define __OSL_STATFS_STRUCT struct statvfs # define __OSL_STATFS(dir, sfs) statvfs((dir), (sfs)) # define __OSL_STATFS_BLKSIZ(a) ((sal_uInt64)((a).f_frsize)) @@ -2355,7 +2355,7 @@ oslFileError SAL_CALL osl_syncFile(oslFileHandle Handle) of the target platforms fix it!!!! */ # define __OSL_STATFS_IS_CASE_SENSITIVE_FS(a) (1) # define __OSL_STATFS_IS_CASE_PRESERVING_FS(a) (1) -#endif /* SOLARIS || IRIX*/ +#endif /* SOLARIS */ # define __OSL_STATFS_INIT(a) (memset(&(a), 0, sizeof(__OSL_STATFS_STRUCT))) diff --git a/sal/osl/os2/nlsupport.c b/sal/osl/os2/nlsupport.c index 0efccaa787e6..b05332bab0ea 100644 --- a/sal/osl/os2/nlsupport.c +++ b/sal/osl/os2/nlsupport.c @@ -411,9 +411,6 @@ void _imp_getProcessLocale( rtl_Locale ** ppLocale ) int _imp_setProcessLocale( rtl_Locale * pLocale ) { -#ifdef IRIX - char env_buf[80]; -#endif char locale_buf[64]; /* convert rtl_Locale to locale string */ @@ -421,11 +418,7 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) { /* only change env vars that exist already */ if( getenv( "LC_ALL" ) ) { -#if defined( IRIX ) - snprintf(env_buf, sizeof(env_buf), "LC_ALL=%s", locale_buf); - env_buf[sizeof(env_buf)] = '\0'; - putenv(env_buf); -#elif defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined( __EMX__ ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined( __EMX__ ) setenv( "LC_ALL", locale_buf, 1); #else setenv( "LC_ALL", locale_buf ); @@ -433,11 +426,7 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) } if( getenv( "LC_CTYPE" ) ) { -#if defined( IRIX ) - snprintf(env_buf, sizeof(env_buf), "LC_CTYPE=%s", locale_buf); - env_buf[sizeof(env_buf)] = '\0'; - putenv(env_buf); -#elif defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined( __EMX__ ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined( __EMX__ ) setenv("LC_CTYPE", locale_buf, 1 ); #else setenv( "LC_CTYPE", locale_buf ); @@ -445,11 +434,7 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) } if( getenv( "LANG" ) ) { -#if defined( IRIX ) - snprintf(env_buf, sizeof(env_buf), "LANG=%s", locale_buf); - env_buf[sizeof(env_buf)] = '\0'; - putenv(env_buf); -#elif defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined( __EMX__ ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined( __EMX__ ) setenv("LC_CTYPE", locale_buf, 1 ); #else setenv( "LANG", locale_buf ); diff --git a/sal/osl/os2/socket.c b/sal/osl/os2/socket.c index de70e5b8885a..1c6603b55932 100644 --- a/sal/osl/os2/socket.c +++ b/sal/osl/os2/socket.c @@ -48,7 +48,7 @@ #undef HAVE_POLL_H #endif -#if defined(LINUX) || defined (IRIX) || defined(NETBSD) || defined ( FREEBSD ) || defined (MACOSX) +#if defined(LINUX) || defined(NETBSD) || defined ( FREEBSD ) || defined (MACOSX) #include <sys/poll.h> #define HAVE_POLL_H #endif /* HAVE_POLL_H */ diff --git a/sal/osl/os2/system.h b/sal/osl/os2/system.h index 565dfe3ea9c6..ef7626e9c036 100644 --- a/sal/osl/os2/system.h +++ b/sal/osl/os2/system.h @@ -306,36 +306,6 @@ extern unsigned int nanosleep(unsigned int); # define PTHREAD_SIGACTION cma_sigaction #endif -#ifdef IRIX -# define AF_IPX -1 -# include <pthread.h> -# include <semaphore.h> -# include <sched.h> -# include <sys/socket.h> -# include <sys/un.h> -# include <sys/stropts.h> -# include <netinet/tcp.h> -# include <procfs/procfs.h> -# include <sys/endian.h> -# if BYTE_ORDER == LITTLE_ENDIAN -# undef _BIG_ENDIAN -# undef _PDP_ENDIAN -# elif BYTE_ORDER == BIG_ENDIAN -# undef _LITTLE_ENDIAN -# undef _PDP_ENDIAN -# elif BYTE_ORDER == PDP_ENDIAN -# undef _LITTLE_ENDIAN -# undef _BIG_ENDIAN -# endif -# define SA_FAMILY_DECL \ - union { struct { short sa_family2; } sa_generic; } sa_union -# define PTR_SIZE_T(s) ((int *)&(s)) -# define NO_PTHREAD_PRIORITY -# include <dlfcn.h> -# define IOCHANNEL_TRANSFER_BSD -extern char *strdup(const char *); -#endif - #ifdef SOLARIS # include <shadow.h> # include <sys/procfs.h> @@ -389,7 +359,7 @@ char *macxp_tempnam( const char *tmpdir, const char *prefix ); #if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \ !defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD) && !defined(SCO) && \ !defined(AIX) && !defined(HPUX) && \ - !defined(SOLARIS) && !defined(IRIX) && !defined(MAC) && \ + !defined(SOLARIS) && !defined(MAC) && \ !defined(MACOSX) # error "Target plattform not specified !" #endif diff --git a/sal/osl/unx/backtrace.c b/sal/osl/unx/backtrace.c index 437d31157049..886da0c3bee5 100755 --- a/sal/osl/unx/backtrace.c +++ b/sal/osl/unx/backtrace.c @@ -207,54 +207,6 @@ void backtrace_symbols_fd( void **buffer, int size, int fd ) } #endif /* defined FREEBSD */ -#if defined(IRIX) -#include <stdio.h> -#include <rld_interface.h> -#include <exception.h> -#include <sys/signal.h> -#include <unistd.h> - -/* Need extra libs -lexc -ldwarf -lelf */ - -int backtrace( void **buffer, int max_frames ) -{ - struct sigcontext context; - int i = 0; - - memset(&context, 0, sizeof(struct sigcontext)); - - exc_setjmp(&context); - while(context.sc_pc != 1 && i < max_frames) { - exc_unwind(&context, 0); - if(context.sc_pc != 1) { - *(buffer++) = (void *)context.sc_pc; - i++; - } - } - return(i); -} - -void backtrace_symbols_fd( void **buffer, int size, int fd ) -{ - FILE *fp = fdopen( fd, "w" ); - struct sigcontext context; - char *name; - - if ( fp ) { - while(context.sc_pc!=1) { - if(context.sc_pc != 1) { - exc_unwind_name(&context, 0, &name); - fprintf(fp, " 0x%012lx %.100s\n", context.sc_pc, name ? name : "<unknown function>"); - free(name); - } - } - - fflush( fp ); - fclose( fp ); - } -} -#endif /* defined IRIX */ - #ifdef LINUX #ifndef _GNU_SOURCE diff --git a/sal/osl/unx/file.cxx b/sal/osl/unx/file.cxx index 8e7d76cda614..e02485cdf4ce 100644 --- a/sal/osl/unx/file.cxx +++ b/sal/osl/unx/file.cxx @@ -466,6 +466,7 @@ oslFileError FileHandle_Impl::readFileAt ( oslFileError result = syncFile(); if (result != osl_File_E_None) return (result); + m_bufptr = -1, m_buflen = 0; if (nBytesRequested >= m_bufsiz) { @@ -535,6 +536,7 @@ oslFileError FileHandle_Impl::writeFileAt ( oslFileError result = syncFile(); if (result != osl_File_E_None) return (result); + m_bufptr = -1, m_buflen = 0; if (nBytesToWrite >= m_bufsiz) { @@ -1009,7 +1011,7 @@ SAL_CALL osl_syncFile(oslFileHandle Handle) FileHandle_Impl::Guard lock (&(pImpl->m_mutex)); - OSL_FILE_TRACE("osl_syncFile(%d)", pImpl->m_fd); + OSL_TRACE("osl_syncFile(%d)", pImpl->m_fd); oslFileError result = pImpl->syncFile(); if (result != osl_File_E_None) return (result); diff --git a/sal/osl/unx/file_misc.cxx b/sal/osl/unx/file_misc.cxx index 3f3cf02fb010..0bde1616f6ae 100644 --- a/sal/osl/unx/file_misc.cxx +++ b/sal/osl/unx/file_misc.cxx @@ -29,6 +29,7 @@ #include "osl/diagnose.h" #include "osl/thread.h" +#include <osl/signal.h> #include "rtl/alloc.h" #include "system.h" @@ -48,6 +49,8 @@ #include <sys/stat.h> #include <sys/mman.h> +#include <algorithm> + /************************************************************************ * ToDo * @@ -1002,7 +1005,6 @@ static int oslDoCopyFile(const sal_Char* pszSourceFileName, const sal_Char* pszD int SourceFileFD=0; int DestFileFD=0; int nRet=0; - void* pSourceFile=0; SourceFileFD=open(pszSourceFileName,O_RDONLY); if ( SourceFileFD < 0 ) @@ -1011,15 +1013,6 @@ static int oslDoCopyFile(const sal_Char* pszSourceFileName, const sal_Char* pszD return nRet; } - DestFileFD=open(pszDestFileName, O_WRONLY | O_CREAT, mode); - - if ( DestFileFD < 0 ) - { - nRet=errno; - close(SourceFileFD); - return nRet; - } - /* HACK: because memory mapping fails on various platforms if the size of the source file is 0 byte */ if (0 == nSourceSize) @@ -1029,56 +1022,79 @@ static int oslDoCopyFile(const sal_Char* pszSourceFileName, const sal_Char* pszD return 0; } - /* FIXME doCopy: fall back code for systems not having mmap */ - /* mmap file -- open dest file -- write once -- fsync it */ - pSourceFile=mmap(0,nSourceSize,PROT_READ,MAP_PRIVATE,SourceFileFD,0); - - if ( pSourceFile == MAP_FAILED ) + // read and lseek are used to check the possibility to access the data + // not a nice solution, but it allows to avoid a crash in case it is an opened samba file + // generally, reading of one byte should not affect the performance + char nCh; + if ( 1 != read( SourceFileFD, &nCh, 1 ) + || -1 == lseek( SourceFileFD, 0, SEEK_SET ) ) { - /* it's important to set nRet before the hack - otherwise errno may be changed by lstat */ nRet = errno; - close(SourceFileFD); - close(DestFileFD); - + (void) close( SourceFileFD ); return nRet; } - nRet = write(DestFileFD,pSourceFile,nSourceSize); + DestFileFD=open(pszDestFileName, O_WRONLY | O_CREAT, mode); - /* #112584# if 'write' could not write the requested number of bytes - we have to fail of course; because it's not exactly specified if 'write' - sets errno if less than requested byte could be written we set nRet - explicitly to ENOSPC */ - if ((nRet < 0) || (nRet != sal::static_int_cast< int >(nSourceSize))) + if ( DestFileFD < 0 ) { - if (nRet < 0) - nRet = errno; - else - nRet = ENOSPC; - + nRet=errno; close(SourceFileFD); - close(DestFileFD); - munmap((char*)pSourceFile,nSourceSize); return nRet; } - nRet = munmap((char*)pSourceFile,nSourceSize); - if ( nRet < 0 ) + size_t nWritten = 0; + size_t nRemains = nSourceSize; + + /* mmap file -- open dest file -- write -- fsync it at the end */ + void* pSourceFile = mmap( 0, nSourceSize, PROT_READ, MAP_SHARED, SourceFileFD, 0 ); + if ( pSourceFile != MAP_FAILED ) { - nRet=errno; - close(SourceFileFD); - close(DestFileFD); - return nRet; + nWritten = write( DestFileFD, pSourceFile, nSourceSize ); + nRemains -= nWritten; + munmap( (char*)pSourceFile, nSourceSize ); } - close(SourceFileFD); + if ( nRemains ) + { + /* mmap has problems, try the direct streaming */ + char pBuffer[32000]; + size_t nRead = 0; - // Removed call to 'fsync' again (#112584#) and instead - // evaluate the return value of 'close' in order to detect - // and report ENOSPC and other erronous conditions on close - if (close(DestFileFD) == -1) - return errno; - else - return 0; + nRemains = nSourceSize; + + if ( -1 != lseek( SourceFileFD, 0, SEEK_SET ) + && -1 != lseek( DestFileFD, 0, SEEK_SET ) ) + { + do + { + nRead = 0; + nWritten = 0; + + size_t nToRead = std::min( (size_t)32000, nRemains ); + nRead = read( SourceFileFD, pBuffer, nToRead ); + if ( (size_t)-1 != nRead ) + nWritten = write( DestFileFD, pBuffer, nRead ); + + if ( (size_t)-1 != nWritten ) + nRemains -= nWritten; + } + while( nRemains && (size_t)-1 != nRead && nRead == nWritten ); + } + } + + if ( nRemains ) + { + if ( errno ) + nRet = errno; + else + nRet = ENOSPC; + } + + close( SourceFileFD ); + if ( close( DestFileFD ) == -1 && nRet == 0 ) + nRet = errno; + + return nRet; } + diff --git a/sal/osl/unx/file_volume.cxx b/sal/osl/unx/file_volume.cxx index a3b7109123b7..4489368a4c9b 100644 --- a/sal/osl/unx/file_volume.cxx +++ b/sal/osl/unx/file_volume.cxx @@ -76,16 +76,6 @@ static const sal_Char* MOUNTTAB="/etc/mtab"; * This information is stored only in the kernel. */ /* static const sal_Char* MOUNTTAB="/etc/mtab"; */ -#elif defined(IRIX) - -#include <mntent.h> -#include <sys/mount.h> -#include <sys/statvfs.h> -#define HAVE_STATFS_H -#include <sys/quota.h> -//#include <ctype.h> -static const sal_Char* MOUNTTAB="/etc/mtab"; - #elif defined(MACOSX) #include <ufs/ufs/quota.h> @@ -140,12 +130,6 @@ static sal_Bool osl_isFloppyMounted(oslVolumeDeviceHandleImpl* pDevice); static sal_Bool osl_getFloppyMountEntry(const sal_Char* pszPath, oslVolumeDeviceHandleImpl* pItem); #endif /* LINUX */ - -#if defined(IRIX) -static sal_Bool osl_isFloppyMounted(oslVolumeDeviceHandleImpl* pDevice); -static sal_Bool osl_getFloppyMountEntry(const sal_Char* pszPath, oslVolumeDeviceHandleImpl* pItem); -#endif /* IRIX */ - #ifdef DEBUG_OSL_FILE static void osl_printFloppyHandle(oslVolumeDeviceHandleImpl* hFloppy); #endif /* DEBUG_OSL_FILE */ @@ -220,7 +204,7 @@ oslFileError osl_getVolumeInformation( rtl_uString* ustrDirectoryURL, oslVolumeI # define __OSL_STATFS_IS_CASE_PRESERVING_FS(a) ((__OSL_MSDOS_SUPER_MAGIC != (a).f_type)) #endif /* LINUX */ -#if defined(SOLARIS) || defined(IRIX) +#if defined(SOLARIS) # define __OSL_STATFS_STRUCT struct statvfs # define __OSL_STATFS(dir, sfs) statvfs((dir), (sfs)) # define __OSL_STATFS_BLKSIZ(a) ((sal_uInt64)((a).f_frsize)) @@ -232,7 +216,7 @@ oslFileError osl_getVolumeInformation( rtl_uString* ustrDirectoryURL, oslVolumeI of the target platforms fix it!!!! */ # define __OSL_STATFS_IS_CASE_SENSITIVE_FS(a) (1) # define __OSL_STATFS_IS_CASE_PRESERVING_FS(a) (1) -#endif /* SOLARIS || IRIX*/ +#endif /* SOLARIS */ # define __OSL_STATFS_INIT(a) (memset(&(a), 0, sizeof(__OSL_STATFS_STRUCT))) @@ -1093,411 +1077,6 @@ osl_isFloppyMounted (oslVolumeDeviceHandleImpl* pDevice) } #endif /* LINUX */ -/****************************************************************************** - * - * IRIX FLOPPY FUNCTIONS - * - *****************************************************************************/ - -#if defined(IRIX) -static oslVolumeDeviceHandle osl_isFloppyDrive(const sal_Char* pszPath) -{ - oslVolumeDeviceHandleImpl* pItem = osl_newVolumeDeviceHandleImpl (); - sal_Bool bRet = sal_False; - -#ifdef TRACE_OSL_FILE - fprintf(stderr,"In osl_isFloppyDrive\n"); -#endif - - bRet=osl_getFloppyMountEntry(pszPath,pItem); - - if ( bRet == sal_False ) - { -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_isFloppyDrive [not a floppy]\n"); -#endif - rtl_freeMemory(pItem); - return 0; - } - - -#ifdef DEBUG_OSL_FILE - osl_printFloppyHandle(pItem); -#endif -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_isFloppyDrive [ok]\n"); -#endif - - return (oslVolumeDeviceHandle) pItem; -} - - -static oslFileError osl_mountFloppy(oslVolumeDeviceHandle hFloppy) -{ - sal_Bool bRet = sal_False; - oslVolumeDeviceHandleImpl* pItem=0; - int nRet; - sal_Char pszCmd[PATH_MAX]; - sal_Char* pszMountProg = "mount"; - sal_Char* pszSuDo = 0; - sal_Char* pszTmp = 0; - - pszCmd[0] = '\0'; - -#ifdef TRACE_OSL_FILE - fprintf(stderr,"In osl_mountFloppy\n"); -#endif - - pItem = (oslVolumeDeviceHandleImpl*) hFloppy; - - if ( pItem == 0 ) - { -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_mountFloppy [pItem == 0]\n"); -#endif - - return osl_File_E_INVAL; - } - - if ( pItem->ident[0] != 'O' || pItem->ident[1] != 'V' || pItem->ident[2] != 'D' || pItem->ident[3] != 'H' ) - { -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_mountFloppy [invalid handle]\n"); -#endif - return osl_File_E_INVAL; - } - - bRet = osl_isFloppyMounted(pItem); - if ( bRet == sal_True ) - { -#ifdef DEBUG_OSL_FILE - fprintf(stderr,"detected mounted floppy at '%s'\n",pItem->pszMountPoint); -#endif - return osl_File_E_BUSY; - } - - /* mfe: we can't use the mount(2) system call!!! */ - /* even if we are root */ - /* since mtab is not updated!!! */ - /* but we need it to be updated */ - /* some "magic" must be done */ - -/* nRet = mount(pItem->pszDevice,pItem->pszMountPoint,0,0,0); */ -/* if ( nRet != 0 ) */ -/* { */ -/* nRet=errno; */ -/* #ifdef DEBUG_OSL_FILE */ -/* perror("mount"); */ -/* #endif */ -/* } */ - - pszTmp = getenv("SAL_MOUNT_MOUNTPROG"); - if ( pszTmp != 0 ) - { - pszMountProg=pszTmp; - } - - pszTmp=getenv("SAL_MOUNT_SU_DO"); - if ( pszTmp != 0 ) - { - pszSuDo=pszTmp; - } - - if ( pszSuDo != 0 ) - { - snprintf(pszCmd, sizeof(pszCmd), "%s %s %s %s",pszSuDo,pszMountProg,pItem->pszDevice,pItem->pszMountPoint); - } - else - { - snprintf(pszCmd, sizeof(pszCmd), "%s %s",pszMountProg,pItem->pszMountPoint); - } - - -#ifdef DEBUG_OSL_FILE - fprintf(stderr,"executing '%s'\n",pszCmd); -#endif - - nRet = system(pszCmd); - -#ifdef DEBUG_OSL_FILE - fprintf(stderr,"call returned '%i'\n",nRet); - fprintf(stderr,"exit status is '%i'\n", WEXITSTATUS(nRet)); -#endif - - - switch ( WEXITSTATUS(nRet) ) - { - case 0: - nRet=0; - break; - - case 2: - nRet=EPERM; - break; - - case 4: - nRet=ENOENT; - break; - - case 8: - nRet=EINTR; - break; - - case 16: - nRet=EPERM; - break; - - case 32: - nRet=EBUSY; - break; - - case 64: - nRet=EAGAIN; - break; - - default: - nRet=EBUSY; - break; - } - - return ((0 == nRet) ? oslTranslateFileError(OSL_FET_SUCCESS, nRet) : oslTranslateFileError(OSL_FET_ERROR, nRet)); -} - -static oslFileError osl_unmountFloppy(oslVolumeDeviceHandle hFloppy) -{ - oslVolumeDeviceHandleImpl* pItem=0; - int nRet=0; - sal_Char pszCmd[PATH_MAX]; - sal_Char* pszTmp = 0; - sal_Char* pszSuDo = 0; - sal_Char* pszUmountProg = "umount"; - - pszCmd[0] = '\0'; - -#ifdef TRACE_OSL_FILE - fprintf(stderr,"In osl_unmountFloppy\n"); -#endif - - pItem = (oslVolumeDeviceHandleImpl*) hFloppy; - - if ( pItem == 0 ) - { -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_unmountFloppy [pItem==0]\n"); -#endif - return osl_File_E_INVAL; - } - - if ( pItem->ident[0] != 'O' || pItem->ident[1] != 'V' || pItem->ident[2] != 'D' || pItem->ident[3] != 'H' ) - { -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_unmountFloppy [invalid handle]\n"); -#endif - return osl_File_E_INVAL; - } - - /* mfe: we can't use the umount(2) system call!!! */ - /* even if we are root */ - /* since mtab is not updated!!! */ - /* but we need it to be updated */ - /* some "magic" must be done */ - -/* nRet=umount(pItem->pszDevice); */ -/* if ( nRet != 0 ) */ -/* { */ -/* nRet = errno; */ - -/* #ifdef DEBUG_OSL_FILE */ -/* perror("mount"); */ -/* #endif */ -/* } */ - - - pszTmp = getenv("SAL_MOUNT_UMOUNTPROG"); - if ( pszTmp != 0 ) - { - pszUmountProg=pszTmp; - } - - pszTmp = getenv("SAL_MOUNT_SU_DO"); - if ( pszTmp != 0 ) - { - pszSuDo=pszTmp; - } - - if ( pszSuDo != 0 ) - { - snprintf(pszCmd, sizeof(pszCmd), "%s %s %s",pszSuDo,pszUmountProg,pItem->pszMountPoint); - } - else - { - snprintf(pszCmd, sizeof(pszCmd), "%s %s",pszUmountProg,pItem->pszMountPoint); - } - - -#ifdef DEBUG_OSL_FILE - fprintf(stderr,"executing '%s'\n",pszCmd); -#endif - - nRet = system(pszCmd); - -#ifdef DEBUG_OSL_FILE - fprintf(stderr,"call returned '%i'\n",nRet); - fprintf(stderr,"exit status is '%i'\n", WEXITSTATUS(nRet)); -#endif - - switch ( WEXITSTATUS(nRet) ) - { - case 0: - nRet=0; - break; - - default: - nRet=EBUSY; - break; - } - -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_unmountFloppy [ok]\n"); -#endif - - return ((0 == nRet) ? oslTranslateFileError(OSL_FET_SUCCESS, nRet) : oslTranslateFileError(OSL_FET_ERROR, nRet)); - -/* return osl_File_E_None;*/ -} - -static sal_Bool osl_getFloppyMountEntry(const sal_Char* pszPath, oslVolumeDeviceHandleImpl* pItem) -{ - struct mntent* pMountEnt=0; - sal_Char buffer[PATH_MAX]; - FILE* mntfile=0; - int nRet=0; - - buffer[0] = '\0'; - - mntfile = setmntent(MOUNTTAB,"r"); - -#ifdef TRACE_OSL_FILE - fprintf(stderr,"In osl_getFloppyMountEntry\n"); -#endif - - memset(buffer, 0, sizeof(buffer)); - strncpy(buffer, pszPath, sizeof(buffer) - 1); - -#ifdef DEBUG_OSL_FILE - fprintf(stderr,"Checking mount of %s\n",buffer); -#endif - - - if ( mntfile == 0 ) - { - nRet=errno; -#ifdef DEBUG_OSL_FILE - perror("mounttab"); -#endif -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_getFloppyMountEntry [mntfile]\n"); -#endif - return sal_False; - } - - pMountEnt=getmntent(mntfile); - while ( pMountEnt != 0 ) - { -#ifdef DEBUG_OSL_FILE -/* fprintf(stderr,"mnt_fsname : %s\n",pMountEnt->mnt_fsname); */ -/* fprintf(stderr,"mnt_dir : %s\n",pMountEnt->mnt_dir); */ -/* fprintf(stderr,"mnt_type : %s\n",pMountEnt->mnt_type);*/ -#endif - if ( strcmp(pMountEnt->mnt_dir,buffer) == 0 && - strncmp(pMountEnt->mnt_fsname,"/dev/fd",strlen("/dev/fd")) == 0 ) - { - - memset(pItem->pszMountPoint, 0, sizeof(pItem->pszMountPoint)); - strncpy(pItem->pszMountPoint, pMountEnt->mnt_dir, sizeof(pItem->pszMountPoint) - 1); - - memset(pItem->pszFilePath, 0, sizeof(pItem->pszFilePath)); - strncpy(pItem->pszFilePath, pMountEnt->mnt_dir, sizeof(pItem->pszFilePath) - 1); - - memset(pItem->pszDevice, 0, sizeof(pItem->pszDevice)); - strncpy(pItem->pszDevice, pMountEnt->mnt_fsname, sizeof(pItem->pszDevice) - 1); - - fclose(mntfile); -#ifdef DEBUG_OSL_FILE - fprintf(stderr,"Mount Point found '%s'\n",pItem->pszMountPoint); -#endif -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_getFloppyMountEntry [found]\n"); -#endif - return sal_True; - } -#ifdef DEBUG_OSL_FILE -/* fprintf(stderr,"=================\n");*/ -#endif - pMountEnt=getmntent(mntfile); - } - -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_getFloppyMountEntry [not found]\n"); -#endif - - fclose(mntfile); - return sal_False; -} - -static sal_Bool osl_isFloppyMounted(oslVolumeDeviceHandleImpl* pDevice) -{ - sal_Char buffer[PATH_MAX]; - oslVolumeDeviceHandleImpl* pItem=0; - sal_Bool bRet=0; - - buffer[0] = '\0'; - -#ifdef TRACE_OSL_FILE - fprintf(stderr,"In osl_isFloppyMounted\n"); -#endif - - pItem = osl_newVolumeDeviceHandleImpl (); - if ( pItem == 0 ) - return osl_File_E_NOMEM; - - memset(buffer, 0, sizeof(buffer)); - strncpy(buffer, pDevice->pszMountPoint, sizeof(buffer) - 1); - -#ifdef DEBUG_OSL_FILE - fprintf(stderr,"Checking mount of %s\n",buffer); -#endif - - bRet = osl_getFloppyMountEntry(buffer,pItem); - - if ( bRet == sal_False ) - { -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_isFloppyMounted [not mounted]\n"); -#endif - return sal_False; - } - - if (strcmp(pItem->pszMountPoint, pDevice->pszMountPoint) == 0 && - strcmp(pItem->pszDevice,pDevice->pszDevice) == 0) - { -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_isFloppyMounted [is mounted]\n"); -#endif - rtl_freeMemory(pItem); - return sal_True; - } - -#ifdef TRACE_OSL_FILE - fprintf(stderr,"Out osl_isFloppyMounted [may be EBUSY]\n"); -#endif - - rtl_freeMemory(pItem); - return sal_False; -} -#endif /* IRIX */ - - /* NetBSD floppy functions have to be added here. Until we have done that, * we use the MACOSX definitions for nonexistent floppy. * */ diff --git a/sal/osl/unx/makefile.mk b/sal/osl/unx/makefile.mk index 0e728c29dbcd..eac4c24cdfa9 100644 --- a/sal/osl/unx/makefile.mk +++ b/sal/osl/unx/makefile.mk @@ -55,7 +55,8 @@ CXXFLAGS+= $(LFS_CFLAGS) # --- Files -------------------------------------------------------- -SLOFILES= $(SLO)$/conditn.obj \ +SLOFILES= \ + $(SLO)$/conditn.obj \ $(SLO)$/diagnose.obj \ $(SLO)$/semaphor.obj \ $(SLO)$/socket.obj \ @@ -74,7 +75,7 @@ SLOFILES= $(SLO)$/conditn.obj \ $(SLO)$/util.obj \ $(SLO)$/tempfile.obj\ $(SLO)$/file.obj \ - $(SLO)$/file_misc.obj \ + $(SLO)$/file_misc.obj\ $(SLO)$/file_url.obj\ $(SLO)$/file_error_transl.obj\ $(SLO)$/file_path_helper.obj\ @@ -84,6 +85,7 @@ SLOFILES= $(SLO)$/conditn.obj \ $(SLO)$/process_impl.obj\ $(SLO)$/salinit.obj + #.IF "$(UPDATER)"=="YES" OBJFILES= $(OBJ)$/conditn.obj \ $(OBJ)$/diagnose.obj \ @@ -104,7 +106,7 @@ OBJFILES= $(OBJ)$/conditn.obj \ $(OBJ)$/util.obj \ $(OBJ)$/tempfile.obj\ $(OBJ)$/file.obj \ - $(OBJ)$/file_misc.obj \ + $(OBJ)$/file_misc.obj\ $(OBJ)$/file_url.obj\ $(OBJ)$/file_error_transl.obj\ $(OBJ)$/file_path_helper.obj\ diff --git a/sal/osl/unx/module.c b/sal/osl/unx/module.c index d486aad00e01..ffb0ebb61e7b 100644 --- a/sal/osl/unx/module.c +++ b/sal/osl/unx/module.c @@ -35,32 +35,6 @@ #include <osl/process.h> #include <osl/file.h> -#ifdef IRIX -#ifndef _RLD_INTERFACE_DLFCN_H_DLADDR -#define _RLD_INTERFACE_DLFCN_H_DLADDR -typedef struct DL_INFO { - const char * dli_fname; - void * dli_fbase; - const char * dli_sname; - void * dli_saddr; - int dli_version; - int dli_reserved1; - long dli_reserved[4]; -} Dl_info; -#endif -#include <rld_interface.h> -#define _RLD_DLADDR 14 -int dladdr(void *address, Dl_info *dl); - -int dladdr(void *address, Dl_info *dl) -{ - void *v; - v = _rld_new_interface(_RLD_DLADDR,address,dl); - - return (int)v; -} -#endif - #include "system.h" #if OSL_DEBUG_LEVEL > 1 diff --git a/sal/osl/unx/nlsupport.c b/sal/osl/unx/nlsupport.c index e5390089e6d7..5f3741be883e 100644 --- a/sal/osl/unx/nlsupport.c +++ b/sal/osl/unx/nlsupport.c @@ -33,7 +33,7 @@ #include <osl/process.h> #include <rtl/memory.h> -#if defined(LINUX) || defined(SOLARIS) || defined(IRIX) || defined(NETBSD) || defined(FREEBSD) || defined(MACOSX) +#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || defined(FREEBSD) || defined(MACOSX) #include <pthread.h> #ifndef MACOSX #include <locale.h> @@ -42,7 +42,7 @@ #include <osl/module.h> #include <osl/thread.h> #endif /* !MACOSX */ -#endif /* LINUX || SOLARIS || IRIX || NETBSD || MACOSX */ +#endif /* LINUX || SOLARIS || NETBSD || MACOSX */ #include <string.h> @@ -229,13 +229,12 @@ static rtl_Locale * _parse_locale( const char * locale ) return NULL; } -#if defined(LINUX) || defined(SOLARIS) || defined(IRIX) || defined(NETBSD) || defined(FREEBSD) +#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || defined(FREEBSD) /* * This implementation of osl_getTextEncodingFromLocale maps * from nl_langinfo(CODESET) to rtl_textencoding defines. - * nl_langinfo() is supported only on Linux and Solaris. - * nl_langinfo() is supported only on Linux, Solaris and IRIX, + * nl_langinfo() is supported only on Linux, Solaris, * >= NetBSD 1.6 and >= FreeBSD 4.4 * * This routine is SLOW because of the setlocale call, so @@ -299,24 +298,6 @@ const _pair _nl_language_list[] = { /* XXX MS-874 is an extension to tis620, so this is not * really equivalent */ -#elif defined(IRIX) - -const _pair _nl_language_list[] = { - { "big5", RTL_TEXTENCODING_BIG5 }, /* China - Traditional Chinese */ - { "eucCN", RTL_TEXTENCODING_EUC_CN }, /* China */ - { "eucgbk", RTL_TEXTENCODING_DONTKNOW }, /* China - Simplified Chinese */ - { "eucJP", RTL_TEXTENCODING_EUC_JP }, /* Japan */ - { "eucKR", RTL_TEXTENCODING_EUC_KR }, /* Korea */ - { "eucTW", RTL_TEXTENCODING_EUC_TW }, /* Taiwan - Traditional Chinese */ - { "gbk", RTL_TEXTENCODING_GBK }, /* China - Simplified Chinese */ - { "ISO8859-1", RTL_TEXTENCODING_ISO_8859_1 }, /* Western */ - { "ISO8859-2", RTL_TEXTENCODING_ISO_8859_2 }, /* Central European */ - { "ISO8859-5", RTL_TEXTENCODING_ISO_8859_5 }, /* Cyrillic */ - { "ISO8859-7", RTL_TEXTENCODING_ISO_8859_7 }, /* Greek */ - { "ISO8859-9", RTL_TEXTENCODING_ISO_8859_9 }, /* Turkish */ - { "ISO8859-15", RTL_TEXTENCODING_ISO_8859_15 }, /* Western Updated (w/Euro sign) */ - { "sjis", RTL_TEXTENCODING_SHIFT_JIS } /* Japan */ -}; #elif defined(LINUX) || defined(NETBSD) @@ -552,7 +533,7 @@ const _pair _nl_language_list[] = { { "UTF-8", RTL_TEXTENCODING_UTF8 } /* ISO-10646/UTF-8 */ }; -#endif /* ifdef SOLARIS IRIX LINUX FREEBSD NETBSD */ +#endif /* ifdef SOLARIS LINUX FREEBSD NETBSD */ static pthread_mutex_t aLocalMutex = PTHREAD_MUTEX_INITIALIZER; @@ -927,9 +908,6 @@ void _imp_getProcessLocale( rtl_Locale ** ppLocale ) int _imp_setProcessLocale( rtl_Locale * pLocale ) { -#ifdef IRIX - char env_buf[80]; -#endif char locale_buf[64]; /* convert rtl_Locale to locale string */ @@ -937,11 +915,7 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) { /* only change env vars that exist already */ if( getenv( "LC_ALL" ) ) { -#if defined( IRIX ) - snprintf(env_buf, sizeof(env_buf), "LC_ALL=%s", locale_buf); - env_buf[sizeof(env_buf)] = '\0'; - putenv(env_buf); -#elif defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) setenv( "LC_ALL", locale_buf, 1); #else setenv( "LC_ALL", locale_buf ); @@ -949,11 +923,7 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) } if( getenv( "LC_CTYPE" ) ) { -#if defined( IRIX ) - snprintf(env_buf, sizeof(env_buf), "LC_CTYPE=%s", locale_buf); - env_buf[sizeof(env_buf)] = '\0'; - putenv(env_buf); -#elif defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) setenv("LC_CTYPE", locale_buf, 1 ); #else setenv( "LC_CTYPE", locale_buf ); @@ -961,11 +931,7 @@ int _imp_setProcessLocale( rtl_Locale * pLocale ) } if( getenv( "LANG" ) ) { -#if defined( IRIX ) - snprintf(env_buf, sizeof(env_buf), "LANG=%s", locale_buf); - env_buf[sizeof(env_buf)] = '\0'; - putenv(env_buf); -#elif defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) +#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) setenv("LC_CTYPE", locale_buf, 1 ); #else setenv( "LANG", locale_buf ); diff --git a/sal/osl/unx/process.c b/sal/osl/unx/process.c index a1f47cdf76a5..e3f78ff2f2b4 100644 --- a/sal/osl/unx/process.c +++ b/sal/osl/unx/process.c @@ -49,7 +49,7 @@ #endif #include "system.h" -#if defined(SOLARIS) || defined(IRIX) +#if defined(SOLARIS) # include <sys/procfs.h> #endif #include <osl/diagnose.h> @@ -269,7 +269,7 @@ static sal_Bool sendFdPipe(int PipeFD, int SocketFD) cmptr->cmsg_level = SOL_SOCKET; cmptr->cmsg_type = SCM_RIGHTS; cmptr->cmsg_len = CONTROLLEN; - *(int*)CMSG_DATA(cmptr) = SocketFD; + memcpy(CMSG_DATA(cmptr), &SocketFD, sizeof(int)); #endif @@ -360,7 +360,7 @@ static oslSocket receiveFdPipe(int PipeFD) ( msghdr.msg_controllen == CONTROLLEN ) ) { OSL_TRACE("receiveFdPipe : received '%i' bytes\n",nRead); - newfd = *(int*)CMSG_DATA(cmptr); + memcpy(&newfd, CMSG_DATA(cmptr), sizeof(int)); } #endif else @@ -431,10 +431,8 @@ oslSocket osl_receiveResourcePipe(oslPipe pPipe) static void ChildStatusProc(void *pData) { - int i; -/* int first = 0;*/ - pid_t pid; -/* int status;*/ + pid_t pid = -1; + int status = 0; int channel[2]; ProcessData data; ProcessData *pdata; @@ -447,25 +445,31 @@ static void ChildStatusProc(void *pData) in our child process */ memcpy(&data, pData, sizeof(data)); - socketpair(AF_UNIX, SOCK_STREAM, 0, channel); + if (socketpair(AF_UNIX, SOCK_STREAM, 0, channel) == -1) + status = errno; fcntl(channel[0], F_SETFD, FD_CLOEXEC); fcntl(channel[1], F_SETFD, FD_CLOEXEC); /* Create redirected IO pipes */ + if ( status == 0 && data.m_pInputWrite ) + if (pipe( stdInput ) == -1) + status = errno; - if ( data.m_pInputWrite ) - pipe( stdInput ); - - if ( data.m_pOutputRead ) - pipe( stdOutput ); + if ( status == 0 && data.m_pOutputRead ) + if (pipe( stdOutput ) == -1) + status = errno; - if ( data.m_pErrorRead ) - pipe( stdError ); + if ( status == 0 && data.m_pErrorRead ) + if (pipe( stdError ) == -1) + status = errno; - if ((pid = fork()) == 0) + if ( (status == 0) && ((pid = fork()) == 0) ) { /* Child */ + int chstatus = 0; + sal_Int32 nWrote; + if (channel[0] != -1) close(channel[0]); if ((data.m_uid != (uid_t)-1) && ((data.m_uid != getuid()) || (data.m_gid != getgid()))) @@ -481,20 +485,15 @@ static void ChildStatusProc(void *pData) #endif } - if ((data.m_uid == (uid_t)-1) || ((data.m_uid == getuid()) && (data.m_gid == getgid()))) + if (data.m_pszDir) + chstatus = chdir(data.m_pszDir); + if (chstatus == 0 && ((data.m_uid == (uid_t)-1) || ((data.m_uid == getuid()) && (data.m_gid == getgid())))) { - if (data.m_pszDir) - chdir(data.m_pszDir); - + int i; for (i = 0; data.m_pszEnv[i] != NULL; i++) putenv(data.m_pszEnv[i]); -#if defined(LINUX) && !defined(NPTL) - /* mfe: linux likes to have just one thread when the exec family is called */ - /* this np function has this purpose ... */ - pthread_kill_other_threads_np(); -#endif OSL_TRACE("ChildStatusProc : starting '%s'",data.m_pszArgs[0]); /* Connect std IO to pipe ends */ @@ -537,7 +536,9 @@ static void ChildStatusProc(void *pData) OSL_TRACE("ChildStatusProc : starting '%s' failed",data.m_pszArgs[0]); /* if we reach here, something went wrong */ - write(channel[1], &errno, sizeof(errno)); + nWrote = write(channel[1], &errno, sizeof(errno)); + if (nWrote != sizeof(errno)) + OSL_TRACE("sendFdPipe : sending failed (%s)",strerror(errno)); if (channel[1] != -1) close(channel[1]); @@ -545,8 +546,7 @@ static void ChildStatusProc(void *pData) } else { /* Parent */ - int status; - + int i = -1; if (channel[1] != -1) close(channel[1]); /* Close unused pipe ends */ @@ -554,15 +554,17 @@ static void ChildStatusProc(void *pData) if (stdOutput[1] != -1) close( stdOutput[1] ); if (stdError[1] != -1) close( stdError[1] ); - while (((i = read(channel[0], &status, sizeof(status))) < 0)) + if (pid > 0) { - if (errno != EINTR) - break; + while (((i = read(channel[0], &status, sizeof(status))) < 0)) + { + if (errno != EINTR) + break; + } } if (channel[0] != -1) close(channel[0]); - if ((pid > 0) && (i == 0)) { pid_t child_pid; @@ -1368,48 +1370,6 @@ oslProcessError SAL_CALL osl_getProcessInfo(oslProcess Process, oslProcessData F return (pInfo->Fields == Fields) ? osl_Process_E_None : osl_Process_E_Unknown; } -#elif defined(IRIX) - - int fd; - sal_Char name[PATH_MAX + 1]; - - snprintf(name, sizeof(name), "/proc/%u", pid); - - if ((fd = open(name, O_RDONLY)) >= 0) - { - prstatus_t prstatus; - prpsinfo_t prpsinfo; - - if (ioctl(fd, PIOCSTATUS, &prstatus) >= 0 && - ioctl(fd, PIOCPSINFO, &prpsinfo) >= 0) - { - if (Fields & osl_Process_CPUTIMES) - { - pInfo->UserTime.Seconds = prstatus.pr_utime.tv_sec; - pInfo->UserTime.Nanosec = prstatus.pr_utime.tv_nsec; - pInfo->SystemTime.Seconds = prstatus.pr_stime.tv_sec; - pInfo->SystemTime.Nanosec = prstatus.pr_stime.tv_nsec; - - pInfo->Fields |= osl_Process_CPUTIMES; - } - - if (Fields & osl_Process_HEAPUSAGE) - { - int pagesize = getpagesize(); - - pInfo->HeapUsage = prpsinfo.pr_size*pagesize; - - pInfo->Fields |= osl_Process_HEAPUSAGE; - } - - close(fd); - - return (pInfo->Fields == Fields) ? osl_Process_E_None : osl_Process_E_Unknown; - } - else - close(fd); - } - #elif defined(LINUX) if ( (Fields & osl_Process_CPUTIMES) || (Fields & osl_Process_HEAPUSAGE) ) diff --git a/sal/osl/unx/profile.c b/sal/osl/unx/profile.c index a01d292e23b6..a0ea4c59ffdd 100644 --- a/sal/osl/unx/profile.c +++ b/sal/osl/unx/profile.c @@ -263,12 +263,9 @@ static oslProfile SAL_CALL osl_psz_openProfile(const sal_Char *pszProfileName, o pProfile->m_Stamp = OslProfile_getFileStamp(pFile); bRet=loadProfile(pFile, pProfile); + bRet &= realpath(pszProfileName, pProfile->m_FileName) != NULL; OSL_ASSERT(bRet); - /* #109261# using osl profiles is deprecated */ - /* OSL_VERIFY(NULL != realpath(pszProfileName, pProfile->m_FileName)); */ - realpath(pszProfileName, pProfile->m_FileName); - if (pProfile->m_pFile == NULL) closeFileImpl(pFile,pProfile->m_Flags); @@ -1338,6 +1335,7 @@ static osl_TStamp closeFileImpl(osl_TFile* pFile, oslProfileOption Flags) static sal_Bool OslProfile_rewindFile(osl_TFile* pFile, sal_Bool bTruncate) { + sal_Bool bRet = sal_True; #ifdef TRACE_OSL_PROFILE OSL_TRACE("In osl_OslProfile_rewindFile\n"); #endif @@ -1349,14 +1347,14 @@ static sal_Bool OslProfile_rewindFile(osl_TFile* pFile, sal_Bool bTruncate) #ifdef DEBUG_OSL_PROFILE OSL_TRACE("rewinding\n"); #endif - lseek(pFile->m_Handle, SEEK_SET, 0L); + bRet = (lseek(pFile->m_Handle, SEEK_SET, 0L) == 0L); if (bTruncate) { #ifdef DEBUG_OSL_PROFILE OSL_TRACE("truncating\n"); #endif - ftruncate(pFile->m_Handle, 0L); + bRet &= (ftruncate(pFile->m_Handle, 0L) == 0); } } @@ -1364,7 +1362,7 @@ static sal_Bool OslProfile_rewindFile(osl_TFile* pFile, sal_Bool bTruncate) #ifdef TRACE_OSL_PROFILE OSL_TRACE("Out osl_OslProfile_rewindFile [ok]\n"); #endif - return (sal_True); + return bRet; } diff --git a/sal/osl/unx/socket.c b/sal/osl/unx/socket.c index 310dd57592f5..362f3b0f2644 100644 --- a/sal/osl/unx/socket.c +++ b/sal/osl/unx/socket.c @@ -48,7 +48,7 @@ #undef HAVE_POLL_H #endif -#if defined(LINUX) || defined (IRIX) || defined(NETBSD) || defined ( FREEBSD ) || defined (MACOSX) +#if defined(LINUX) || defined(NETBSD) || defined ( FREEBSD ) || defined (MACOSX) #include <sys/poll.h> #define HAVE_POLL_H #endif /* HAVE_POLL_H */ @@ -1869,10 +1869,13 @@ void SAL_CALL osl_closeSocket(oslSocket pSocket) if ( pSocket->m_bIsAccepting == sal_True ) { int nConnFD; - struct sockaddr aSockAddr; - socklen_t nSockLen = sizeof(aSockAddr); + union { + struct sockaddr aSockAddr; + struct sockaddr_in aSockAddrIn; + } s; + socklen_t nSockLen = sizeof(s.aSockAddr); - nRet = getsockname(nFD, &aSockAddr, &nSockLen); + nRet = getsockname(nFD, &s.aSockAddr, &nSockLen); #if OSL_DEBUG_LEVEL > 1 if ( nRet < 0 ) { @@ -1880,13 +1883,11 @@ void SAL_CALL osl_closeSocket(oslSocket pSocket) } #endif /* OSL_DEBUG_LEVEL */ - if ( aSockAddr.sa_family == AF_INET ) + if ( s.aSockAddr.sa_family == AF_INET ) { - struct sockaddr_in* pSockAddrIn = (struct sockaddr_in*) &aSockAddr; - - if ( pSockAddrIn->sin_addr.s_addr == htonl(INADDR_ANY) ) + if ( s.aSockAddrIn.sin_addr.s_addr == htonl(INADDR_ANY) ) { - pSockAddrIn->sin_addr.s_addr = htonl(INADDR_LOOPBACK); + s.aSockAddrIn.sin_addr.s_addr = htonl(INADDR_LOOPBACK); } nConnFD = socket(AF_INET, SOCK_STREAM, 0); @@ -1897,7 +1898,7 @@ void SAL_CALL osl_closeSocket(oslSocket pSocket) } #endif /* OSL_DEBUG_LEVEL */ - nRet = connect(nConnFD, &aSockAddr, sizeof(aSockAddr)); + nRet = connect(nConnFD, &s.aSockAddr, sizeof(s.aSockAddr)); #if OSL_DEBUG_LEVEL > 1 if ( nRet < 0 ) { diff --git a/sal/osl/unx/system.h b/sal/osl/unx/system.h index c2e01126fb58..91f3b9fb7ae0 100644 --- a/sal/osl/unx/system.h +++ b/sal/osl/unx/system.h @@ -270,34 +270,6 @@ extern unsigned int nanosleep(unsigned int); # define PTHREAD_SIGACTION cma_sigaction #endif -#ifdef IRIX -# define AF_IPX -1 -# include <pthread.h> -# include <semaphore.h> -# include <sched.h> -# include <sys/socket.h> -# include <sys/un.h> -# include <sys/stropts.h> -# include <netinet/tcp.h> -# include <sys/endian.h> -# if BYTE_ORDER == LITTLE_ENDIAN -# undef _BIG_ENDIAN -# undef _PDP_ENDIAN -# elif BYTE_ORDER == BIG_ENDIAN -# undef _LITTLE_ENDIAN -# undef _PDP_ENDIAN -# elif BYTE_ORDER == PDP_ENDIAN -# undef _LITTLE_ENDIAN -# undef _BIG_ENDIAN -# endif -# define SA_FAMILY_DECL \ - union { struct { short sa_family2; } sa_generic; } sa_union -# define NO_PTHREAD_PRIORITY -# include <dlfcn.h> -# define IOCHANNEL_TRANSFER_BSD -extern char *strdup(const char *); -#endif - #ifdef SOLARIS # include <shadow.h> # include <sys/un.h> @@ -364,8 +336,7 @@ int macxp_resolveAlias(char *path, int buflen); #if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \ !defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD) && !defined(SCO) && \ !defined(AIX) && !defined(HPUX) && \ - !defined(SOLARIS) && !defined(IRIX) && \ - !defined(MACOSX) + !defined(SOLARIS) && !defined(MACOSX) # error "Target platform not specified!" #endif diff --git a/sal/osl/w32/dllentry.c b/sal/osl/w32/dllentry.c index 11928a3b6458..ac47b1ac6050 100644 --- a/sal/osl/w32/dllentry.c +++ b/sal/osl/w32/dllentry.c @@ -255,7 +255,7 @@ void do_cleanup( void ) */ -#ifdef PRODUCT +#ifndef DBG_UTIL __try #endif { @@ -267,7 +267,7 @@ void do_cleanup( void ) rtl_cache_fini(); rtl_arena_fini(); } -#ifdef PRODUCT +#ifndef DBG_UTIL __except( EXCEPTION_EXECUTE_HANDLER ) { } diff --git a/sal/osl/w32/file.cxx b/sal/osl/w32/file.cxx index 34deba2293da..60c51cfb3a73 100644 --- a/sal/osl/w32/file.cxx +++ b/sal/osl/w32/file.cxx @@ -400,6 +400,7 @@ oslFileError FileHandle_Impl::readFileAt ( oslFileError result = syncFile(); if (result != osl_File_E_None) return (result); + m_bufptr = -1, m_buflen = 0; if (nBytesRequested >= m_bufsiz) { @@ -472,6 +473,7 @@ oslFileError FileHandle_Impl::writeFileAt ( oslFileError result = syncFile(); if (result != osl_File_E_None) return (result); + m_bufptr = -1, m_buflen = 0; if (nBytesToWrite >= m_bufsiz) { diff --git a/sal/qa/ByteSequence/ByteSequence.cxx b/sal/qa/ByteSequence/ByteSequence.cxx index 16283a48da92..f1105298deaf 100644 --- a/sal/qa/ByteSequence/ByteSequence.cxx +++ b/sal/qa/ByteSequence/ByteSequence.cxx @@ -36,7 +36,7 @@ #include <rtl/byteseq.hxx> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> using namespace rtl; diff --git a/sal/qa/ByteSequence/makefile.mk b/sal/qa/ByteSequence/makefile.mk index a2ecbd5ccef1..0f1b88ac6e6a 100644 --- a/sal/qa/ByteSequence/makefile.mk +++ b/sal/qa/ByteSequence/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -47,17 +47,10 @@ CXXFLAGS+= $(LFS_CFLAGS) #----------------------------------- OStringBuffer ----------------------------------- SHL1OBJS= \ - $(SLO)$/ByteSequence.obj + $(SLO)$/ByteSequence.obj SHL1TARGET= rtl_ByteSequence -SHL1STDLIBS=\ - $(SALLIB) -.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" -SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def @@ -70,9 +63,7 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map SHL2OBJS= \ $(SLO)$/rtl_old_testbyteseq.obj SHL2TARGET= rtl_old_testbyteseq -SHL2STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB= i$(SHL2TARGET) diff --git a/sal/qa/ByteSequence/rtl_old_testbyteseq.cxx b/sal/qa/ByteSequence/rtl_old_testbyteseq.cxx index 1c49a316c537..2cea6fa3a878 100644 --- a/sal/qa/ByteSequence/rtl_old_testbyteseq.cxx +++ b/sal/qa/ByteSequence/rtl_old_testbyteseq.cxx @@ -42,7 +42,7 @@ using namespace ::rtl; -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> namespace rtl_testbyteseq diff --git a/sal/qa/OStringBuffer/makefile.mk b/sal/qa/OStringBuffer/makefile.mk index be0f891cf8fc..d20c011a552e 100644 --- a/sal/qa/OStringBuffer/makefile.mk +++ b/sal/qa/OStringBuffer/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -56,16 +56,7 @@ SHL1OBJS= \ $(SLO)$/rtl_String_Utils.obj SHL1TARGET= rtl_OStringBuffer -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) - -# .IF "$(GUI)" == "WNT" -# SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -# .ENDIF -# .IF "$(GUI)" == "UNX" -# SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -# .ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/OStringBuffer/rtl_OStringBuffer.cxx b/sal/qa/OStringBuffer/rtl_OStringBuffer.cxx index df97eccf751e..2b3bbfd6caa3 100644 --- a/sal/qa/OStringBuffer/rtl_OStringBuffer.cxx +++ b/sal/qa/OStringBuffer/rtl_OStringBuffer.cxx @@ -38,7 +38,7 @@ #include <rtl/strbuf.hxx> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> using namespace rtl; diff --git a/sal/qa/osl/condition/makefile.mk b/sal/qa/osl/condition/makefile.mk index fd58c9e633a3..586908e93032 100644 --- a/sal/qa/osl/condition/makefile.mk +++ b/sal/qa/osl/condition/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -44,19 +44,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:Condition by codegen.pl +# auto generated Target:Condition by codegen.pl SHL1OBJS= \ $(SLO)$/osl_Condition.obj SHL1TARGET= osl_Condition -SHL1STDLIBS=\ - $(SALLIB) -.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" -SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) diff --git a/sal/qa/osl/condition/osl_Condition_Const.h b/sal/qa/osl/condition/osl_Condition_Const.h index c04261176ee6..608bd38e3a64 100644 --- a/sal/qa/osl/condition/osl_Condition_Const.h +++ b/sal/qa/osl/condition/osl_Condition_Const.h @@ -59,7 +59,7 @@ #include <unistd.h> #endif -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #define OSLTEST_DECLARE_USTRING( str_name, str_value ) \ ::rtl::OUString a##str_name = rtl::OUString::createFromAscii( str_value ) diff --git a/sal/qa/osl/file/makefile.mk b/sal/qa/osl/file/makefile.mk index 7c6d1232c1a0..0d83a06b7124 100644 --- a/sal/qa/osl/file/makefile.mk +++ b/sal/qa/osl/file/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -47,15 +47,7 @@ CXXFLAGS+= $(LFS_CFLAGS) SHL1OBJS= \ $(SLO)$/osl_File.obj SHL1TARGET= osl_File -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) -# .IF "$(GUI)" == "WNT" -# SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -# .ENDIF -# .IF "$(GUI)" == "UNX" -# SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -# .ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) @@ -66,13 +58,7 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map SHL2OBJS=$(SLO)$/test_cpy_wrt_file.obj SHL2TARGET=tcwf -SHL2STDLIBS=$(SALLIB) -.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" -SHL2STDLIBS+=$(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL2STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB=i$(SHL2TARGET) SHL2DEF=$(MISC)$/$(SHL2TARGET).def SHL2VERSIONMAP = $(PRJ)$/qa$/export.map @@ -85,9 +71,7 @@ DEF2NAME =$(SHL2TARGET) SHL3OBJS= \ $(SLO)$/osl_old_test_file.obj SHL3TARGET= osl_old_test_file -SHL3STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL3STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL3IMPLIB= i$(SHL3TARGET) diff --git a/sal/qa/osl/file/osl_File.cxx b/sal/qa/osl/file/osl_File.cxx index 3a44c565d162..a1cb3fa54e9e 100644 --- a/sal/qa/osl/file/osl_File.cxx +++ b/sal/qa/osl/file/osl_File.cxx @@ -44,7 +44,7 @@ #include <osl/file.hxx> #include <osl_File_Const.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> // #ifdef WNT // # define UNICODE diff --git a/sal/qa/osl/file/osl_old_test_file.cxx b/sal/qa/osl/file/osl_old_test_file.cxx index 18be1d38e40c..64258b8e9006 100644 --- a/sal/qa/osl/file/osl_old_test_file.cxx +++ b/sal/qa/osl/file/osl_old_test_file.cxx @@ -51,7 +51,7 @@ #define TEST_VOLUME "c:/" #endif -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> namespace osl_test_file { diff --git a/sal/qa/osl/file/test_cpy_wrt_file.cxx b/sal/qa/osl/file/test_cpy_wrt_file.cxx index 6c4986f485b3..05910ea3ddd7 100755 --- a/sal/qa/osl/file/test_cpy_wrt_file.cxx +++ b/sal/qa/osl/file/test_cpy_wrt_file.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <osl/file.hxx> #include <osl/thread.h> #include <rtl/ustring.hxx> diff --git a/sal/qa/osl/module/makefile.mk b/sal/qa/osl/module/makefile.mk index d3500d267020..40f597bdbbc7 100644 --- a/sal/qa/osl/module/makefile.mk +++ b/sal/qa/osl/module/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -48,7 +48,7 @@ CXXFLAGS+= $(LFS_CFLAGS) # --- test dll ------------------------------------------------------ SHL1TARGET = Module_DLL SHL1OBJS = $(SLO)$/osl_Module_DLL.obj -SHL1STDLIBS = $(SALLIB) +SHL1STDLIBS = $(SALLIB) SHL1IMPLIB = i$(SHL1TARGET) SHL1DEF = $(MISC)$/$(SHL1TARGET).def DEF1NAME = $(SHL1TARGET) @@ -59,21 +59,16 @@ SHL1VERSIONMAP = export_dll.map SHL2OBJS= $(SLO)$/osl_Module.obj SHL2TARGET= osl_Module -SHL2STDLIBS= $(SALLIB) +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" -SHL2STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib SHL2STDLIBS+=i$(SHL2TARGET).lib .ENDIF -.IF "$(GUI)" == "OS2" -SHL2STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -.ENDIF .IF "$(GUI)" == "UNX" -SHL2STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a APP3STDLIBS+=-l$(SHL2TARGET) .ENDIF -SHL2DEPN= $(SHL1OBJS) +SHL2DEPN= $(SHL1OBJS) SHL2IMPLIB= i$(SHL2TARGET) SHL2DEF= $(MISC)$/$(SHL2TARGET).def diff --git a/sal/qa/osl/module/osl_Module_Const.h b/sal/qa/osl/module/osl_Module_Const.h index beeb4a800a11..ad954b5cb4ad 100644 --- a/sal/qa/osl/module/osl_Module_Const.h +++ b/sal/qa/osl/module/osl_Module_Const.h @@ -37,7 +37,7 @@ #include <osl/module.hxx> #include <osl/file.hxx> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #if ( defined UNX ) || ( defined OS2 ) //Unix # include <unistd.h> diff --git a/sal/qa/osl/module/osl_Module_DLL.cxx b/sal/qa/osl/module/osl_Module_DLL.cxx index ed7874eb11b5..46610f35f22c 100644 --- a/sal/qa/osl/module/osl_Module_DLL.cxx +++ b/sal/qa/osl/module/osl_Module_DLL.cxx @@ -33,7 +33,7 @@ #include <stdio.h> #include <sal/types.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> extern "C" sal_Bool SAL_CALL firstfunc( sal_Bool bRes ) { diff --git a/sal/qa/osl/mutex/makefile.mk b/sal/qa/osl/mutex/makefile.mk index 44c5b6b46f7f..7c8cfeb39037 100755 --- a/sal/qa/osl/mutex/makefile.mk +++ b/sal/qa/osl/mutex/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -44,22 +44,16 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:Socket by codegen.pl +# auto generated Target:Socket by codegen.pl SHL1OBJS= \ $(SLO)$/osl_Mutex.obj SHL1TARGET= osl_Mutex -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" SHL1STDLIBS += $(WS2_32LIB) .ENDIF -.IF "$(GUI)" == "OS2" -SHL1STDLIBS += $(SOLARLIBDIR)$/cppunit.lib -.ENDIF - .IF "$(GUI)" == "UNX" SHL1STDLIBS += -ldl -lnsl .ENDIF diff --git a/sal/qa/osl/mutex/osl_Mutex_Const.h b/sal/qa/osl/mutex/osl_Mutex_Const.h index 789b9e91c007..a13f40ab9605 100755 --- a/sal/qa/osl/mutex/osl_Mutex_Const.h +++ b/sal/qa/osl/mutex/osl_Mutex_Const.h @@ -49,7 +49,7 @@ #endif #include <osl/time.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #ifdef UNX #include <unistd.h> diff --git a/sal/qa/osl/pipe/makefile.mk b/sal/qa/osl/pipe/makefile.mk index 636bdde7de82..3d0df14bbd69 100644 --- a/sal/qa/osl/pipe/makefile.mk +++ b/sal/qa/osl/pipe/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -44,21 +44,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:Pipe by codegen.pl +# auto generated Target:Pipe by codegen.pl SHL1OBJS= \ $(SLO)$/osl_Pipe.obj SHL1TARGET= osl_Pipe -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) - -#.IF "$(GUI)" == "WNT" -#SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -#.ENDIF -#.IF "$(GUI)" == "UNX" -#SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -#.ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/osl/pipe/osl_Pipe.cxx b/sal/qa/osl/pipe/osl_Pipe.cxx index 4f0da4ea686e..c2b2ae740527 100644 --- a/sal/qa/osl/pipe/osl_Pipe.cxx +++ b/sal/qa/osl/pipe/osl_Pipe.cxx @@ -35,7 +35,7 @@ // include files //------------------------------------------------------------------------ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <sal/types.h> #include <rtl/ustring.hxx> diff --git a/sal/qa/osl/process/makefile.mk b/sal/qa/osl/process/makefile.mk index 17f6ab46bd5a..32e97f3c162d 100644 --- a/sal/qa/osl/process/makefile.mk +++ b/sal/qa/osl/process/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,7 +45,7 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:testjob by codegen.pl +# auto generated Target:testjob by codegen.pl .IF "$(GUI)" == "WNT" CFLAGS+=/Ob1 @@ -55,17 +55,7 @@ SHL1OBJS= \ $(SLO)$/osl_Thread.obj SHL1TARGET= osl_Thread -SHL1STDLIBS=\ - $(SALLIB) -.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" -SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -# .IF "$(OS)" == "SOLARIS" -# SHL1STDLIBS += -lrt -laio -# .ENDIF -.ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) @@ -82,14 +72,7 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map SHL2OBJS=$(SLO)$/osl_process.obj SHL2TARGET=osl_process -SHL2STDLIBS=$(SALLIB) - -.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" -SHL2STDLIBS+=$(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL2STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB=i$(SHL2TARGET) SHL2DEF=$(MISC)$/$(SHL2TARGET).def @@ -98,7 +81,7 @@ DEF2EXPORTFILE=export.exp # END ------------------------------------------------------------------ -OBJ3FILES=$(OBJ)$/osl_process_child.obj +OBJ3FILES=$(OBJ)$/osl_process_child.obj APP3TARGET=osl_process_child APP3OBJS=$(OBJ3FILES) diff --git a/sal/qa/osl/process/osl_Thread.cxx b/sal/qa/osl/process/osl_Thread.cxx index 9f666acc9659..88f796b6728c 100644 --- a/sal/qa/osl/process/osl_Thread.cxx +++ b/sal/qa/osl/process/osl_Thread.cxx @@ -52,7 +52,7 @@ #endif #include <osl/time.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> using namespace osl; using namespace rtl; diff --git a/sal/qa/osl/process/osl_process.cxx b/sal/qa/osl/process/osl_process.cxx index 7fb794925ed2..a0fe5182daa1 100644 --- a/sal/qa/osl/process/osl_process.cxx +++ b/sal/qa/osl/process/osl_process.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <osl/process.h> #include <osl/file.hxx> #include <osl/thread.h> diff --git a/sal/qa/osl/profile/makefile.mk b/sal/qa/osl/profile/makefile.mk index d685655feb86..482bc69276a2 100644 --- a/sal/qa/osl/profile/makefile.mk +++ b/sal/qa/osl/profile/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -48,9 +48,7 @@ SHL1OBJS= \ $(SLO)$/osl_old_testprofile.obj SHL1TARGET= osl_old_testprofile -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) @@ -61,7 +59,7 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map #------------------------------- All object files ------------------------------- # do this here, so we get right dependencies SLOFILES=\ - $(SHL1OBJS) + $(SHL1OBJS) # --- Targets ------------------------------------------------------ diff --git a/sal/qa/osl/profile/osl_old_testprofile.cxx b/sal/qa/osl/profile/osl_old_testprofile.cxx index d5a6b3d92468..27e4cbe6b35b 100644 --- a/sal/qa/osl/profile/osl_old_testprofile.cxx +++ b/sal/qa/osl/profile/osl_old_testprofile.cxx @@ -40,7 +40,7 @@ #include <stdio.h> #include <osl/profile.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> //================================================================================================== // ----------------------------------------------------------------------------- diff --git a/sal/qa/osl/security/makefile.mk b/sal/qa/osl/security/makefile.mk index 5896f1b6108d..6bcc6fc9f6d3 100755 --- a/sal/qa/osl/security/makefile.mk +++ b/sal/qa/osl/security/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -44,23 +44,15 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:Security by codegen.pl +# auto generated Target:Security by codegen.pl SHL1OBJS= \ $(SLO)$/osl_Security.obj SHL1TARGET= osl_Security -SHL1STDLIBS=\ - $(SALLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" -SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib SHL1STDLIBS+= $(ADVAPI32LIB) .ENDIF -.IF "$(GUI)" == "OS2" -SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF SHL1IMPLIB= i$(SHL1TARGET) SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/osl/security/osl_Security_Const.h b/sal/qa/osl/security/osl_Security_Const.h index 428d6bb30fc6..ca08e3025b38 100755 --- a/sal/qa/osl/security/osl_Security_Const.h +++ b/sal/qa/osl/security/osl_Security_Const.h @@ -57,7 +57,7 @@ #include <pwd.h> #endif -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> // LLA: #include <testshl2/cmdlinebits.hxx> diff --git a/sal/qa/osl/semaphore/makefile.mk b/sal/qa/osl/semaphore/makefile.mk index d5ad5e532626..a8918dcfb12b 100644 --- a/sal/qa/osl/semaphore/makefile.mk +++ b/sal/qa/osl/semaphore/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -44,19 +44,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:Semaphore by codegen.pl +# auto generated Target:Semaphore by codegen.pl SHL1OBJS= \ $(SLO)$/osl_Semaphore.obj SHL1TARGET= osl_Semaphore -SHL1STDLIBS=\ - $(SALLIB) -.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" -SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) diff --git a/sal/qa/osl/semaphore/osl_Semaphore_Const.h b/sal/qa/osl/semaphore/osl_Semaphore_Const.h index f1aafa3a6244..c9f1149674f4 100644 --- a/sal/qa/osl/semaphore/osl_Semaphore_Const.h +++ b/sal/qa/osl/semaphore/osl_Semaphore_Const.h @@ -51,7 +51,7 @@ #endif #include <osl/time.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #ifdef UNX #include <unistd.h> diff --git a/sal/qa/osl/socket/makefile.mk b/sal/qa/osl/socket/makefile.mk index 5bcb252d187a..134bcadb55aa 100755 --- a/sal/qa/osl/socket/makefile.mk +++ b/sal/qa/osl/socket/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -44,22 +44,18 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:Socket by codegen.pl +# auto generated Target:Socket by codegen.pl SHL1OBJS= \ $(SLO)$/osl_Socket.obj SHL1TARGET=osl_SocketOld -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" -#SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib SHL1STDLIBS+= $(WS2_32LIB) .ENDIF .IF "$(GUI)" == "UNX" -#SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a SHL1STDLIBS+= -ldl -lnsl .ENDIF @@ -75,9 +71,7 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map SHL2OBJS= \ $(SLO)$/osl_Socket_tests.obj SHL2TARGET= osl_Socket_tests -SHL2STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL2STDLIBS= $(SALLIB) $CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB= i$(SHL2TARGET) DEF2NAME= $(SHL2TARGET) @@ -86,15 +80,13 @@ SHL2VERSIONMAP = $(PRJ)$/qa$/export.map # END -------------------------------------------------------------- # BEGIN ---------------------------------------------------------------- -# auto generated Target:Socket by codegen.pl +# auto generated Target:Socket by codegen.pl SHL3OBJS= \ $(SLO)$/sockethelper.obj \ $(SLO)$/osl_StreamSocket.obj SHL3TARGET= osl_StreamSocket -SHL3STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL3STDLIBS= $(SALLIB) $CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" SHL3STDLIBS += $(WS2_32LIB) @@ -111,15 +103,13 @@ SHL3VERSIONMAP = $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ # BEGIN ---------------------------------------------------------------- -# auto generated Target:Socket by codegen.pl +# auto generated Target:Socket by codegen.pl SHL4OBJS= \ $(SLO)$/sockethelper.obj \ $(SLO)$/osl_DatagramSocket.obj SHL4TARGET= osl_DatagramSocket -SHL4STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL4STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" SHL4STDLIBS += $(WS2_32LIB) @@ -136,15 +126,13 @@ SHL4VERSIONMAP = $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ # BEGIN ---------------------------------------------------------------- -# auto generated Target:Socket by codegen.pl +# auto generated Target:Socket by codegen.pl SHL5OBJS= \ $(SLO)$/sockethelper.obj \ $(SLO)$/osl_SocketAddr.obj SHL5TARGET= osl_SocketAddr -SHL5STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL5STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" SHL5STDLIBS += $(WS2_32LIB) @@ -161,15 +149,13 @@ SHL5VERSIONMAP = $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ # BEGIN ---------------------------------------------------------------- -# auto generated Target:Socket by codegen.pl +# auto generated Target:Socket by codegen.pl SHL6OBJS= \ $(SLO)$/sockethelper.obj \ $(SLO)$/osl_Socket2.obj SHL6TARGET= osl_Socket2 -SHL6STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL6STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" SHL6STDLIBS += $(WS2_32LIB) @@ -186,15 +172,13 @@ SHL6VERSIONMAP = $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ # BEGIN ---------------------------------------------------------------- -# auto generated Target:Socket by codegen.pl +# auto generated Target:Socket by codegen.pl SHL7OBJS= \ $(SLO)$/sockethelper.obj \ $(SLO)$/osl_ConnectorSocket.obj SHL7TARGET= osl_ConnectorSocket -SHL7STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL7STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" SHL7STDLIBS += $(WS2_32LIB) @@ -211,15 +195,13 @@ SHL7VERSIONMAP = $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ # BEGIN ---------------------------------------------------------------- -# auto generated Target:Socket by codegen.pl +# auto generated Target:Socket by codegen.pl SHL8OBJS= \ $(SLO)$/sockethelper.obj \ $(SLO)$/osl_AcceptorSocket.obj SHL8TARGET= osl_AcceptorSocket -SHL8STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL8STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) .IF "$(GUI)" == "WNT" SHL8STDLIBS += $(WS2_32LIB) diff --git a/sal/qa/osl/socket/osl_AcceptorSocket.cxx b/sal/qa/osl/socket/osl_AcceptorSocket.cxx index 002e27efbd0e..6325385b62ee 100644 --- a/sal/qa/osl/socket/osl_AcceptorSocket.cxx +++ b/sal/qa/osl/socket/osl_AcceptorSocket.cxx @@ -61,7 +61,7 @@ // include files //------------------------------------------------------------------------ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include "osl_Socket_Const.h" #include "sockethelper.hxx" diff --git a/sal/qa/osl/socket/osl_ConnectorSocket.cxx b/sal/qa/osl/socket/osl_ConnectorSocket.cxx index e3f4ad3e5bea..52c1b12b687e 100644 --- a/sal/qa/osl/socket/osl_ConnectorSocket.cxx +++ b/sal/qa/osl/socket/osl_ConnectorSocket.cxx @@ -61,7 +61,7 @@ // include files //------------------------------------------------------------------------ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include "osl_Socket_Const.h" #include "sockethelper.hxx" diff --git a/sal/qa/osl/socket/osl_DatagramSocket.cxx b/sal/qa/osl/socket/osl_DatagramSocket.cxx index 4e714d0b655b..4cf27a90ad90 100644 --- a/sal/qa/osl/socket/osl_DatagramSocket.cxx +++ b/sal/qa/osl/socket/osl_DatagramSocket.cxx @@ -61,7 +61,7 @@ // include files //------------------------------------------------------------------------ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> //#include "osl_Socket_Const.h" #include "sockethelper.hxx" diff --git a/sal/qa/osl/socket/osl_Socket.cxx b/sal/qa/osl/socket/osl_Socket.cxx index 20f2a80d04da..ccc87ee23a1d 100755 --- a/sal/qa/osl/socket/osl_Socket.cxx +++ b/sal/qa/osl/socket/osl_Socket.cxx @@ -66,7 +66,7 @@ #include <osl_Socket_Const_orig.h> #endif -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> using namespace osl; using namespace rtl; diff --git a/sal/qa/osl/socket/osl_Socket2.cxx b/sal/qa/osl/socket/osl_Socket2.cxx index 29a7924c5503..a7b0ecfa1ef7 100644 --- a/sal/qa/osl/socket/osl_Socket2.cxx +++ b/sal/qa/osl/socket/osl_Socket2.cxx @@ -61,7 +61,7 @@ // include files //------------------------------------------------------------------------ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> //#include "osl_Socket_Const.h" #include "sockethelper.hxx" diff --git a/sal/qa/osl/socket/osl_SocketAddr.cxx b/sal/qa/osl/socket/osl_SocketAddr.cxx index e9db614bade8..63ca58f67936 100644 --- a/sal/qa/osl/socket/osl_SocketAddr.cxx +++ b/sal/qa/osl/socket/osl_SocketAddr.cxx @@ -61,7 +61,7 @@ // include files //------------------------------------------------------------------------ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> //#include "osl_Socket_Const.h" #include "sockethelper.hxx" diff --git a/sal/qa/osl/socket/osl_Socket_tests.cxx b/sal/qa/osl/socket/osl_Socket_tests.cxx index 3122b27b1f1a..7f0fb5bbe87e 100644 --- a/sal/qa/osl/socket/osl_Socket_tests.cxx +++ b/sal/qa/osl/socket/osl_Socket_tests.cxx @@ -36,7 +36,7 @@ //------------------------------------------------------------------------ #include <osl_Socket_Const.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <osl/socket.hxx> //------------------------------------------------------------------------ // helper functions diff --git a/sal/qa/osl/socket/osl_StreamSocket.cxx b/sal/qa/osl/socket/osl_StreamSocket.cxx index 0d5a1e54739f..9769d13adb0f 100644 --- a/sal/qa/osl/socket/osl_StreamSocket.cxx +++ b/sal/qa/osl/socket/osl_StreamSocket.cxx @@ -61,7 +61,7 @@ // include files //------------------------------------------------------------------------ -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> //#include "osl_Socket_Const.h" #include "sockethelper.hxx" diff --git a/sal/qa/osl/socket/sockethelper.cxx b/sal/qa/osl/socket/sockethelper.cxx index c10ebcb2c8ca..681858f15dc1 100644 --- a/sal/qa/osl/socket/sockethelper.cxx +++ b/sal/qa/osl/socket/sockethelper.cxx @@ -32,7 +32,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" #include "sockethelper.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> //------------------------------------------------------------------------ // Ip version definition diff --git a/sal/qa/osl/thread/makefile.mk b/sal/qa/osl/thread/makefile.mk index e74400ba6aff..86551fc6771b 100644 --- a/sal/qa/osl/thread/makefile.mk +++ b/sal/qa/osl/thread/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -41,7 +41,7 @@ DLLPRE = # no leading "lib" on .so files SHL1TARGET = $(TARGET) SHL1OBJS = $(SLO)$/test_thread.obj -SHL1STDLIBS = $(CPPUNITLIB) $(SALLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1VERSIONMAP = version.map SHL1IMPLIB = i$(SHL1TARGET) DEF1NAME = $(SHL1TARGET) diff --git a/sal/qa/osl/thread/test_thread.cxx b/sal/qa/osl/thread/test_thread.cxx index 59c857c82b2f..21fd2e297fe0 100644 --- a/sal/qa/osl/thread/test_thread.cxx +++ b/sal/qa/osl/thread/test_thread.cxx @@ -33,7 +33,7 @@ #include "sal/config.h" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "osl/conditn.hxx" #include "osl/thread.hxx" #include "osl/time.h" diff --git a/sal/qa/rtl/alloc/makefile.mk b/sal/qa/rtl/alloc/makefile.mk index 4fad638942fb..ce88442a5574 100755 --- a/sal/qa/rtl/alloc/makefile.mk +++ b/sal/qa/rtl/alloc/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,20 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:jobfile by codegen.pl +# auto generated Target:jobfile by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_alloc.obj SHL1TARGET= rtl_Alloc -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) -# .IF "$(GUI)" == "WNT" -# SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -# .ENDIF -# .IF "$(GUI)" == "UNX" -# SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -# .ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/rtl/alloc/rtl_alloc.cxx b/sal/qa/rtl/alloc/rtl_alloc.cxx index 75173f3aaf86..ae9a1e9e9587 100755 --- a/sal/qa/rtl/alloc/rtl_alloc.cxx +++ b/sal/qa/rtl/alloc/rtl_alloc.cxx @@ -34,7 +34,7 @@ // autogenerated file with codegen.pl #include <rtl/alloc.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> namespace rtl_alloc { diff --git a/sal/qa/rtl/bootstrap/makefile.mk b/sal/qa/rtl/bootstrap/makefile.mk index ff47fa6c78d2..a492af8dd3c5 100644 --- a/sal/qa/rtl/bootstrap/makefile.mk +++ b/sal/qa/rtl/bootstrap/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -55,14 +55,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_Bootstrap.obj SHL1TARGET= rtl_Bootstrap -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def @@ -72,7 +70,7 @@ DEF1NAME =$(SHL1TARGET) SHL1VERSIONMAP= $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ -OBJ2FILES=$(OBJ)$/bootstrap_process.obj +OBJ2FILES=$(OBJ)$/bootstrap_process.obj APP2TARGET=bootstrap_process APP2OBJS=$(OBJ2FILES) diff --git a/sal/qa/rtl/bootstrap/rtl_Bootstrap.cxx b/sal/qa/rtl/bootstrap/rtl_Bootstrap.cxx index 85efcfa55b34..520c1298030f 100644 --- a/sal/qa/rtl/bootstrap/rtl_Bootstrap.cxx +++ b/sal/qa/rtl/bootstrap/rtl_Bootstrap.cxx @@ -39,9 +39,9 @@ #include <stdlib.h> #include <algorithm> // STL -#include "cppunit/stringhelper.hxx" +#include "testshl/stringhelper.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> //#include "stringhelper.hxx" //#include "valueequal.hxx" #include <rtl/bootstrap.hxx> diff --git a/sal/qa/rtl/cipher/makefile.mk b/sal/qa/rtl/cipher/makefile.mk index c8d508f8b9ef..fc7a975651f5 100644 --- a/sal/qa/rtl/cipher/makefile.mk +++ b/sal/qa/rtl/cipher/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,14 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_cipher.obj SHL1TARGET= rtl_cipher -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/rtl/cipher/rtl_cipher.cxx b/sal/qa/rtl/cipher/rtl_cipher.cxx index c51344cdc83e..a55f4a20d6fe 100644 --- a/sal/qa/rtl/cipher/rtl_cipher.cxx +++ b/sal/qa/rtl/cipher/rtl_cipher.cxx @@ -32,7 +32,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <rtl/strbuf.hxx> #include <rtl/cipher.h> diff --git a/sal/qa/rtl/crc32/makefile.mk b/sal/qa/rtl/crc32/makefile.mk index aa24d698ea30..8b1ee4a6f350 100755 --- a/sal/qa/rtl/crc32/makefile.mk +++ b/sal/qa/rtl/crc32/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,19 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:jobfile by codegen.pl +# auto generated Target:jobfile by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_crc32.obj SHL1TARGET= rtl_crc32 -SHL1STDLIBS=\ - $(SALLIB) -.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" -SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/rtl/crc32/rtl_crc32.cxx b/sal/qa/rtl/crc32/rtl_crc32.cxx index fa5870c9c8dd..09f492376ba2 100755 --- a/sal/qa/rtl/crc32/rtl_crc32.cxx +++ b/sal/qa/rtl/crc32/rtl_crc32.cxx @@ -33,7 +33,7 @@ #include "precompiled_sal.hxx" // autogenerated file with codegen.pl -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <rtl/crc.h> namespace rtl_CRC32 diff --git a/sal/qa/rtl/digest/makefile.mk b/sal/qa/rtl/digest/makefile.mk index a80835047d8b..7786522901ee 100644 --- a/sal/qa/rtl/digest/makefile.mk +++ b/sal/qa/rtl/digest/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -48,12 +48,10 @@ CXXFLAGS+= $(LFS_CFLAGS) #----------------------------------- OStringBuffer ----------------------------------- SHL1OBJS= \ - $(SLO)$/rtl_digest.obj + $(SLO)$/rtl_digest.obj SHL1TARGET= rtl_digest -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME= $(SHL1TARGET) diff --git a/sal/qa/rtl/digest/rtl_digest.cxx b/sal/qa/rtl/digest/rtl_digest.cxx index 151b01f8994c..9f8dd3f24542 100644 --- a/sal/qa/rtl/digest/rtl_digest.cxx +++ b/sal/qa/rtl/digest/rtl_digest.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <rtl/digest.h> #include <rtl/ustring.hxx> diff --git a/sal/qa/rtl/doublelock/makefile.mk b/sal/qa/rtl/doublelock/makefile.mk index 7ee93688eff2..b46518fb2e68 100644 --- a/sal/qa/rtl/doublelock/makefile.mk +++ b/sal/qa/rtl/doublelock/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,7 +45,7 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:testjob by codegen.pl +# auto generated Target:testjob by codegen.pl .IF "$(GUI)" == "WNT" CFLAGS+=/Ob1 @@ -55,9 +55,7 @@ SHL1OBJS= \ $(SLO)$/rtl_doublelocking.obj SHL1TARGET= rtl_doublelocking -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) diff --git a/sal/qa/rtl/doublelock/rtl_doublelocking.cxx b/sal/qa/rtl/doublelock/rtl_doublelocking.cxx index 2f3f004dbabc..cbcc334d3134 100644 --- a/sal/qa/rtl/doublelock/rtl_doublelocking.cxx +++ b/sal/qa/rtl/doublelock/rtl_doublelocking.cxx @@ -46,7 +46,7 @@ #include <rtl/instance.hxx> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> // ----------------------------------------------------------------------------- #define CONST_TEST_STRING "gregorian" diff --git a/sal/qa/rtl/locale/makefile.mk b/sal/qa/rtl/locale/makefile.mk index 6ad4991bcfd9..8e4710c5ac6b 100644 --- a/sal/qa/rtl/locale/makefile.mk +++ b/sal/qa/rtl/locale/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,14 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:locale by codegen.pl +# auto generated Target:locale by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_locale.obj SHL1TARGET= rtl_locale -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/rtl/locale/rtl_locale.cxx b/sal/qa/rtl/locale/rtl_locale.cxx index 91fb285db98a..c677259038f3 100644 --- a/sal/qa/rtl/locale/rtl_locale.cxx +++ b/sal/qa/rtl/locale/rtl_locale.cxx @@ -33,7 +33,7 @@ #include "precompiled_sal.hxx" // autogenerated file with codegen.pl -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <rtl/locale.hxx> #include <osl/thread.h> diff --git a/sal/qa/rtl/logfile/makefile.mk b/sal/qa/rtl/logfile/makefile.mk index 23a5979237d9..da70d7533fa0 100644 --- a/sal/qa/rtl/logfile/makefile.mk +++ b/sal/qa/rtl/logfile/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -47,9 +47,7 @@ CXXFLAGS+= $(LFS_CFLAGS) SHL1OBJS= \ $(SLO)$/rtl_logfile.obj SHL1TARGET= rtl_logfile -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) diff --git a/sal/qa/rtl/logfile/rtl_logfile.cxx b/sal/qa/rtl/logfile/rtl_logfile.cxx index 9ed83adf9c09..d589cfb2bf04 100644 --- a/sal/qa/rtl/logfile/rtl_logfile.cxx +++ b/sal/qa/rtl/logfile/rtl_logfile.cxx @@ -46,7 +46,7 @@ #endif #include <rtl/logfile.hxx> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> // #ifndef _OSL_MODULE_HXX_ // #include <osl/module.hxx> diff --git a/sal/qa/rtl/math/makefile.mk b/sal/qa/rtl/math/makefile.mk index 14e8cec2ec9c..5db3ffdd2028 100644 --- a/sal/qa/rtl/math/makefile.mk +++ b/sal/qa/rtl/math/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -48,17 +48,10 @@ CXXFLAGS+= $(LFS_CFLAGS) #----------------------------------- OStringBuffer ----------------------------------- SHL1OBJS= \ - $(SLO)$/test_rtl_math.obj + $(SLO)$/test_rtl_math.obj SHL1TARGET= rtl_math -SHL1STDLIBS=\ - $(SALLIB) -.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" -SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -.ENDIF -.IF "$(GUI)" == "UNX" -SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def @@ -71,9 +64,7 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map SHL2OBJS= \ $(SLO)$/rtl_math.obj SHL2TARGET= rtl_math2 -SHL2STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB= i$(SHL2TARGET) DEF2NAME= $(SHL2TARGET) @@ -90,14 +81,12 @@ SHL2VERSIONMAP = $(PRJ)$/qa$/export.map # SHL3OBJS= \ # $(SLO)$/rtl_old_testint64.obj # SHL3TARGET= rtl_old_testint64 -# SHL3STDLIBS=\ -# $(SALLIB) \ -# $(CPPUNITLIB) -# +# SHL3STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) +# # SHL3IMPLIB= i$(SHL3TARGET) # DEF3NAME= $(SHL3TARGET) # SHL3VERSIONMAP = $(PRJ)$/qa$/export.map -# +# #------------------------------- All object files ------------------------------- # do this here, so we get right dependencies diff --git a/sal/qa/rtl/math/rtl_math.cxx b/sal/qa/rtl/math/rtl_math.cxx index 34d851b4f2e7..a9c16541e524 100644 --- a/sal/qa/rtl/math/rtl_math.cxx +++ b/sal/qa/rtl/math/rtl_math.cxx @@ -37,7 +37,7 @@ #endif #include <math.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <rtl/math.h> #include <rtl/string.hxx> diff --git a/sal/qa/rtl/math/rtl_old_testint64.cxx b/sal/qa/rtl/math/rtl_old_testint64.cxx index e0059b200db6..923c464186f3 100644 --- a/sal/qa/rtl/math/rtl_old_testint64.cxx +++ b/sal/qa/rtl/math/rtl_old_testint64.cxx @@ -49,7 +49,7 @@ // #define TEST_ENSURE(c, m) OSL_VERIFY(c) // #endif -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> // ----------------------------------------------------------------------------- namespace rtl_math diff --git a/sal/qa/rtl/ostring/makefile.mk b/sal/qa/rtl/ostring/makefile.mk index 279697313cf1..d2c6049afcbc 100644 --- a/sal/qa/rtl/ostring/makefile.mk +++ b/sal/qa/rtl/ostring/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,14 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_OString2.obj SHL1TARGET= rtl_OString2 -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def @@ -68,9 +66,7 @@ SHL2OBJS= \ $(SLO)$/rtl_str.obj SHL2TARGET= rtl_str -SHL2STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB= i$(SHL2TARGET) DEF2NAME =$(SHL2TARGET) @@ -82,9 +78,7 @@ SHL3OBJS= \ $(SLO)$/rtl_string.obj SHL3TARGET= rtl_string -SHL3STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL3STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL3IMPLIB= i$(SHL3TARGET) DEF3NAME =$(SHL3TARGET) diff --git a/sal/qa/rtl/ostring/rtl_OString2.cxx b/sal/qa/rtl/ostring/rtl_OString2.cxx index 8421346f84a7..2ff2ca6b434b 100644 --- a/sal/qa/rtl/ostring/rtl_OString2.cxx +++ b/sal/qa/rtl/ostring/rtl_OString2.cxx @@ -34,7 +34,7 @@ // autogenerated file with codegen.pl // There exist some more test code in sal/qa/rtl_strings/rtl_OString.cxx -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include "valueequal.hxx" namespace rtl_OString diff --git a/sal/qa/rtl/ostring/rtl_str.cxx b/sal/qa/rtl/ostring/rtl_str.cxx index 5e34b034bffb..6ce43ae0bb9b 100644 --- a/sal/qa/rtl/ostring/rtl_str.cxx +++ b/sal/qa/rtl/ostring/rtl_str.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> namespace rtl_str { diff --git a/sal/qa/rtl/ostring/rtl_string.cxx b/sal/qa/rtl/ostring/rtl_string.cxx index 549555d0e10a..a1fc88037f51 100644 --- a/sal/qa/rtl/ostring/rtl_string.cxx +++ b/sal/qa/rtl/ostring/rtl_string.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> namespace rtl_string { diff --git a/sal/qa/rtl/oustring/makefile.mk b/sal/qa/rtl/oustring/makefile.mk index dedaa650107d..40e4ba4a0b58 100644 --- a/sal/qa/rtl/oustring/makefile.mk +++ b/sal/qa/rtl/oustring/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,14 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_OUString2.obj SHL1TARGET= rtl_OUString2 -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def @@ -68,9 +66,7 @@ SHL2OBJS= \ $(SLO)$/rtl_ustr.obj SHL2TARGET= rtl_ustr -SHL2STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB= i$(SHL2TARGET) DEF2NAME =$(SHL2TARGET) diff --git a/sal/qa/rtl/oustring/rtl_OUString2.cxx b/sal/qa/rtl/oustring/rtl_OUString2.cxx index 9606ae0859c3..8632a159ab85 100644 --- a/sal/qa/rtl/oustring/rtl_OUString2.cxx +++ b/sal/qa/rtl/oustring/rtl_OUString2.cxx @@ -38,7 +38,7 @@ #include <algorithm> // STL -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include "stringhelper.hxx" #include "valueequal.hxx" diff --git a/sal/qa/rtl/oustring/rtl_ustr.cxx b/sal/qa/rtl/oustring/rtl_ustr.cxx index 5cc28ea1f389..43610d0461f4 100644 --- a/sal/qa/rtl/oustring/rtl_ustr.cxx +++ b/sal/qa/rtl/oustring/rtl_ustr.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> /** print a UNI_CODE file name. */ diff --git a/sal/qa/rtl/oustringbuffer/makefile.mk b/sal/qa/rtl/oustringbuffer/makefile.mk index 9737d998a768..a910d7222773 100644 --- a/sal/qa/rtl/oustringbuffer/makefile.mk +++ b/sal/qa/rtl/oustringbuffer/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,14 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_OUStringBuffer2.obj SHL1TARGET= rtl_OUStringBuffer2 -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/rtl/oustringbuffer/rtl_OUStringBuffer2.cxx b/sal/qa/rtl/oustringbuffer/rtl_OUStringBuffer2.cxx index d259e63174f8..febaa2a9d552 100644 --- a/sal/qa/rtl/oustringbuffer/rtl_OUStringBuffer2.cxx +++ b/sal/qa/rtl/oustringbuffer/rtl_OUStringBuffer2.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include "stringhelper.hxx" #include <rtl/ustrbuf.hxx> #include <rtl/uri.hxx> diff --git a/sal/qa/rtl/process/makefile.mk b/sal/qa/rtl/process/makefile.mk index c1f5d9cad7eb..ac8d66e24b7d 100644 --- a/sal/qa/rtl/process/makefile.mk +++ b/sal/qa/rtl/process/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,14 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_Process.obj SHL1TARGET= rtl_Process -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def @@ -62,7 +60,7 @@ DEF1NAME =$(SHL1TARGET) SHL1VERSIONMAP= $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ -OBJ3FILES=$(OBJ)$/child_process.obj +OBJ3FILES=$(OBJ)$/child_process.obj APP3TARGET=child_process APP3OBJS=$(OBJ3FILES) @@ -74,7 +72,7 @@ APP3OBJS=$(OBJ3FILES) #.ENDIF APP3STDLIBS=$(SALLIB) -OBJ4FILES=$(OBJ)$/child_process_id.obj +OBJ4FILES=$(OBJ)$/child_process_id.obj APP4TARGET=child_process_id APP4OBJS=$(OBJ4FILES) diff --git a/sal/qa/rtl/process/rtl_Process.cxx b/sal/qa/rtl/process/rtl_Process.cxx index 78360186fea7..e14d52905c32 100644 --- a/sal/qa/rtl/process/rtl_Process.cxx +++ b/sal/qa/rtl/process/rtl_Process.cxx @@ -36,7 +36,7 @@ #include <string.h> #include <sal/types.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <rtl/ustring.hxx> #include <rtl/string.hxx> #include <rtl/process.h> diff --git a/sal/qa/rtl/random/makefile.mk b/sal/qa/rtl/random/makefile.mk index 61cd9b676351..0fc2e5e5a7f8 100644 --- a/sal/qa/rtl/random/makefile.mk +++ b/sal/qa/rtl/random/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,14 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:job by codegen.pl +# auto generated Target:job by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_random.obj SHL1TARGET= rtl_Random -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) diff --git a/sal/qa/rtl/random/rtl_random.cxx b/sal/qa/rtl/random/rtl_random.cxx index 7e3c56115b33..ae3845bd16b9 100644 --- a/sal/qa/rtl/random/rtl_random.cxx +++ b/sal/qa/rtl/random/rtl_random.cxx @@ -35,7 +35,7 @@ #include <algorithm> // STL -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <rtl/random.h> namespace rtl_random diff --git a/sal/qa/rtl/strings/makefile.mk b/sal/qa/rtl/strings/makefile.mk index 16abc6b7e118..8b2a62b82d13 100644 --- a/sal/qa/rtl/strings/makefile.mk +++ b/sal/qa/rtl/strings/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -49,7 +49,7 @@ SHL1OBJS := \ $(SLO)$/test_oustring_endswith.obj \ $(SLO)$/test_oustring_noadditional.obj SHL1IMPLIB := i$(SHL1TARGET) -SHL1STDLIBS := $(CPPUNITLIB) $(SALLIB) +SHL1STDLIBS := $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1VERSIONMAP := $(PRJ)$/qa$/export.map DEF1NAME := $(SHL1TARGET) diff --git a/sal/qa/rtl/strings/test_oustring_compare.cxx b/sal/qa/rtl/strings/test_oustring_compare.cxx index a19c3360145c..582dd6a21b7a 100644 --- a/sal/qa/rtl/strings/test_oustring_compare.cxx +++ b/sal/qa/rtl/strings/test_oustring_compare.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/string.h" #include "rtl/ustring.hxx" diff --git a/sal/qa/rtl/strings/test_oustring_convert.cxx b/sal/qa/rtl/strings/test_oustring_convert.cxx index b579da99ee27..e1219c3024d6 100644 --- a/sal/qa/rtl/strings/test_oustring_convert.cxx +++ b/sal/qa/rtl/strings/test_oustring_convert.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/strbuf.hxx" #include "rtl/string.hxx" #include "rtl/ustring.hxx" diff --git a/sal/qa/rtl/strings/test_oustring_endswith.cxx b/sal/qa/rtl/strings/test_oustring_endswith.cxx index 83714ff6fe71..467878697fd2 100644 --- a/sal/qa/rtl/strings/test_oustring_endswith.cxx +++ b/sal/qa/rtl/strings/test_oustring_endswith.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/strbuf.hxx" #include "rtl/string.h" #include "rtl/string.hxx" diff --git a/sal/qa/rtl/strings/test_oustring_noadditional.cxx b/sal/qa/rtl/strings/test_oustring_noadditional.cxx index 26db4917f096..dd30871b7622 100644 --- a/sal/qa/rtl/strings/test_oustring_noadditional.cxx +++ b/sal/qa/rtl/strings/test_oustring_noadditional.cxx @@ -31,6 +31,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" NOADDITIONAL; diff --git a/sal/qa/rtl/strings/test_oustringbuffer_utf32.cxx b/sal/qa/rtl/strings/test_oustringbuffer_utf32.cxx index ca05cbf514b7..71fb6def0b31 100644 --- a/sal/qa/rtl/strings/test_oustringbuffer_utf32.cxx +++ b/sal/qa/rtl/strings/test_oustringbuffer_utf32.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/ustrbuf.hxx" #include "rtl/ustring.h" #include "rtl/ustring.hxx" diff --git a/sal/qa/rtl/textenc/makefile.mk b/sal/qa/rtl/textenc/makefile.mk index c2b9a836ab3b..31f700b7b96a 100644 --- a/sal/qa/rtl/textenc/makefile.mk +++ b/sal/qa/rtl/textenc/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -47,9 +47,7 @@ CXXFLAGS+= $(LFS_CFLAGS) SHL1OBJS= \ $(SLO)$/rtl_textcvt.obj SHL1TARGET= rtl_textcvt -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) @@ -65,9 +63,7 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map SHL2OBJS= \ $(SLO)$/rtl_tencinfo.obj SHL2TARGET= rtl_tencinfo -SHL2STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB= i$(SHL2TARGET) DEF2NAME =$(SHL2TARGET) diff --git a/sal/qa/rtl/textenc/rtl_tencinfo.cxx b/sal/qa/rtl/textenc/rtl_tencinfo.cxx index 8f5fa28defda..2bc3f930af42 100644 --- a/sal/qa/rtl/textenc/rtl_tencinfo.cxx +++ b/sal/qa/rtl/textenc/rtl_tencinfo.cxx @@ -36,7 +36,7 @@ #include <osl/thread.h> #include <rtl/tencinfo.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> // ----------------------------------------------------------------------------- diff --git a/sal/qa/rtl/textenc/rtl_textcvt.cxx b/sal/qa/rtl/textenc/rtl_textcvt.cxx index 0e4a1a306949..2129815a6779 100644 --- a/sal/qa/rtl/textenc/rtl_textcvt.cxx +++ b/sal/qa/rtl/textenc/rtl_textcvt.cxx @@ -36,7 +36,7 @@ #include <cstddef> #include <cstring> -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "rtl/string.hxx" #include "rtl/tencinfo.h" #include "rtl/textcvt.h" diff --git a/sal/qa/rtl/uri/makefile.mk b/sal/qa/rtl/uri/makefile.mk index 95ba01debd1e..2c536da484d7 100644 --- a/sal/qa/rtl/uri/makefile.mk +++ b/sal/qa/rtl/uri/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -47,9 +47,7 @@ CXXFLAGS+= $(LFS_CFLAGS) SHL1OBJS= \ $(SLO)$/rtl_Uri.obj SHL1TARGET= rtl_uri_simple -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) @@ -61,9 +59,7 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map SHL2OBJS= \ $(SLO)$/rtl_testuri.obj SHL2TARGET= rtl_Uri -SHL2STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB= i$(SHL2TARGET) DEF2NAME =$(SHL2TARGET) diff --git a/sal/qa/rtl/uri/rtl_Uri.cxx b/sal/qa/rtl/uri/rtl_Uri.cxx index 794074e18d0f..cc27f956b573 100644 --- a/sal/qa/rtl/uri/rtl_Uri.cxx +++ b/sal/qa/rtl/uri/rtl_Uri.cxx @@ -38,7 +38,7 @@ #include <osl/thread.h> #include <osl/file.hxx> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> // ----------------------------------------------------------------------------- diff --git a/sal/qa/rtl/uri/rtl_testuri.cxx b/sal/qa/rtl/uri/rtl_testuri.cxx index 956c5ccbaacb..4d1d80830dd3 100644 --- a/sal/qa/rtl/uri/rtl_testuri.cxx +++ b/sal/qa/rtl/uri/rtl_testuri.cxx @@ -39,7 +39,7 @@ #include "rtl/ustring.h" #include "rtl/ustring.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include <cstddef> #include <stdio.h> diff --git a/sal/qa/rtl/uuid/makefile.mk b/sal/qa/rtl/uuid/makefile.mk index ed780dd82ec1..554c2034d0cd 100644 --- a/sal/qa/rtl/uuid/makefile.mk +++ b/sal/qa/rtl/uuid/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -45,14 +45,12 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_Uuid.obj SHL1TARGET= rtl_Uuid -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/rtl/uuid/rtl_Uuid.cxx b/sal/qa/rtl/uuid/rtl_Uuid.cxx index 508a1127b60e..a77c4e8d90de 100644 --- a/sal/qa/rtl/uuid/rtl_Uuid.cxx +++ b/sal/qa/rtl/uuid/rtl_Uuid.cxx @@ -34,7 +34,7 @@ #include <math.h> #include <stdio.h> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <rtl/uuid.h> #include <rtl/ustring.h> #include <rtl/ustring.hxx> diff --git a/sal/qa/rtl_strings/makefile.mk b/sal/qa/rtl_strings/makefile.mk index 4cd99ba3aec9..166ef568debc 100644 --- a/sal/qa/rtl_strings/makefile.mk +++ b/sal/qa/rtl_strings/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -44,15 +44,13 @@ CFLAGS+= $(LFS_CFLAGS) CXXFLAGS+= $(LFS_CFLAGS) # BEGIN ---------------------------------------------------------------- -# auto generated Target:FileBase by codegen.pl +# auto generated Target:FileBase by codegen.pl SHL1OBJS= \ $(SLO)$/rtl_String_Utils.obj \ $(SLO)$/rtl_OString.obj SHL1TARGET= rtl_OString -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def @@ -65,15 +63,13 @@ SHL1VERSIONMAP = $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ # BEGIN ---------------------------------------------------------------- -# auto generated Target:FileBase by codegen.pl +# auto generated Target:FileBase by codegen.pl SHL2OBJS= \ $(SLO)$/rtl_String_Utils.obj \ $(SLO)$/rtl_OUString.obj SHL2TARGET= rtl_OUString -SHL2STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL2IMPLIB= i$(SHL2TARGET) # SHL2DEF= $(MISC)$/$(SHL2TARGET).def @@ -86,22 +82,13 @@ SHL2VERSIONMAP = $(PRJ)$/qa$/export.map # END ------------------------------------------------------------------ # BEGIN ---------------------------------------------------------------- -# auto generated Target:FileBase by codegen.pl +# auto generated Target:FileBase by codegen.pl SHL3OBJS= \ $(SLO)$/rtl_String_Utils.obj \ $(SLO)$/rtl_OUStringBuffer.obj SHL3TARGET= rtl_OUStringBuffer -SHL3STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) - -# .IF "$(GUI)" == "WNT" -# SHL3STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib -# .ENDIF -# .IF "$(GUI)" == "UNX" -# SHL3STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -# .ENDIF +SHL3STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL3IMPLIB= i$(SHL3TARGET) # SHL3DEF= $(MISC)$/$(SHL3TARGET).def @@ -115,12 +102,10 @@ SHL3VERSIONMAP = $(PRJ)$/qa$/export.map # BEGIN ---------------------------------------------------------------- SHL4OBJS= \ - $(SLO)$/rtl_old_teststrbuf.obj + $(SLO)$/rtl_old_teststrbuf.obj SHL4TARGET= rtl_old_teststrbuf -SHL4STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL4STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL4IMPLIB= i$(SHL4TARGET) DEF4NAME =$(SHL4TARGET) @@ -130,12 +115,10 @@ SHL4VERSIONMAP = $(PRJ)$/qa$/export.map # BEGIN ---------------------------------------------------------------- SHL5OBJS= \ - $(SLO)$/rtl_old_testowstring.obj + $(SLO)$/rtl_old_testowstring.obj SHL5TARGET= rtl_old_testowstring -SHL5STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL5STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL5IMPLIB= i$(SHL5TARGET) DEF5NAME =$(SHL5TARGET) @@ -145,12 +128,10 @@ SHL5VERSIONMAP = $(PRJ)$/qa$/export.map # BEGIN ---------------------------------------------------------------- SHL6OBJS= \ - $(SLO)$/rtl_old_testostring.obj + $(SLO)$/rtl_old_testostring.obj SHL6TARGET= rtl_old_testostring -SHL6STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL6STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL6IMPLIB= i$(SHL6TARGET) DEF6NAME =$(SHL6TARGET) diff --git a/sal/qa/rtl_strings/rtl_old_testostring.cxx b/sal/qa/rtl_strings/rtl_old_testostring.cxx index 6c481914127d..329eb71c7dc5 100644 --- a/sal/qa/rtl_strings/rtl_old_testostring.cxx +++ b/sal/qa/rtl_strings/rtl_old_testostring.cxx @@ -48,7 +48,7 @@ #include <rtl/string.hxx> #endif -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #define TEST_ENSURE(c, m) CPPUNIT_ASSERT_MESSAGE((m), (c)) diff --git a/sal/qa/rtl_strings/rtl_old_testowstring.cxx b/sal/qa/rtl_strings/rtl_old_testowstring.cxx index 6741deb06e84..938ec01f5fff 100644 --- a/sal/qa/rtl_strings/rtl_old_testowstring.cxx +++ b/sal/qa/rtl_strings/rtl_old_testowstring.cxx @@ -61,7 +61,7 @@ #include <rtl/locale.hxx> -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #define TEST_ENSURE(c, m) CPPUNIT_ASSERT_MESSAGE((m), (c)) // #if OSL_DEBUG_LEVEL > 0 diff --git a/sal/qa/rtl_strings/rtl_old_teststrbuf.cxx b/sal/qa/rtl_strings/rtl_old_teststrbuf.cxx index 7f6a54478697..c277517d57b2 100644 --- a/sal/qa/rtl_strings/rtl_old_teststrbuf.cxx +++ b/sal/qa/rtl_strings/rtl_old_teststrbuf.cxx @@ -53,7 +53,7 @@ #include <rtl/ustrbuf.hxx> #endif -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> using namespace rtl; diff --git a/sal/qa/sal/makefile.mk b/sal/qa/sal/makefile.mk index ebf7aa314ab7..61f279e226eb 100644 --- a/sal/qa/sal/makefile.mk +++ b/sal/qa/sal/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -39,7 +39,7 @@ ENABLE_EXCEPTIONS := TRUE SHL1TARGET = $(TARGET)_types SHL1OBJS = $(SLO)$/test_types.obj -SHL1STDLIBS = $(CPPUNITLIB) $(SALLIB) +SHL1STDLIBS = $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1VERSIONMAP = version.map SHL1IMPLIB = i$(SHL1TARGET) DEF1NAME = $(SHL1TARGET) diff --git a/sal/qa/sal/test_types.cxx b/sal/qa/sal/test_types.cxx index fff05cb08106..5d72175bb8db 100644 --- a/sal/qa/sal/test_types.cxx +++ b/sal/qa/sal/test_types.cxx @@ -35,7 +35,7 @@ #include <stdio.h> // C99 snprintf not necessarily in <cstdio> #include <string.h> // wntmsci10 does not know <cstring> std::strcmp -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "sal/types.h" namespace { diff --git a/sal/qa/systools/makefile.mk b/sal/qa/systools/makefile.mk index cde5b71c215c..035bef25c34a 100644 --- a/sal/qa/systools/makefile.mk +++ b/sal/qa/systools/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -47,15 +47,12 @@ CXXFLAGS+= $(LFS_CFLAGS) CFLAGS+=/Ob0 # BEGIN ---------------------------------------------------------------- -# auto generated Target:joblist by codegen.pl +# auto generated Target:joblist by codegen.pl SHL1OBJS= \ $(SLO)$/test_comtools.obj SHL1TARGET= test_comtools -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB)\ - uuid.lib +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) uuid.lib SHL1IMPLIB= i$(SHL1TARGET) # SHL1DEF= $(MISC)$/$(SHL1TARGET).def diff --git a/sal/qa/systools/test_comtools.cxx b/sal/qa/systools/test_comtools.cxx index 1957d62d54f2..c61ff435d235 100644 --- a/sal/qa/systools/test_comtools.cxx +++ b/sal/qa/systools/test_comtools.cxx @@ -33,7 +33,7 @@ #include "precompiled_sal.hxx" // autogenerated file with codegen.pl -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include <systools/win32/comtools.hxx> class COMObject : public IUnknown diff --git a/sal/qa/testHelperFunctions/makefile.mk b/sal/qa/testHelperFunctions/makefile.mk index 0064cabef952..33c43f259081 100644 --- a/sal/qa/testHelperFunctions/makefile.mk +++ b/sal/qa/testHelperFunctions/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -49,9 +49,7 @@ SHL1OBJS= \ $(SLO)$/testHelperFunctions2.obj SHL1TARGET= testHelperFunctions -SHL1STDLIBS=\ - $(SALLIB) \ - $(CPPUNITLIB) +SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB) SHL1IMPLIB= i$(SHL1TARGET) DEF1NAME =$(SHL1TARGET) diff --git a/sal/qa/testHelperFunctions/testHelperFunctions.cxx b/sal/qa/testHelperFunctions/testHelperFunctions.cxx index 9272433d2e1f..9d96d91939ec 100644 --- a/sal/qa/testHelperFunctions/testHelperFunctions.cxx +++ b/sal/qa/testHelperFunctions/testHelperFunctions.cxx @@ -38,7 +38,7 @@ #include "stringhelper.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> // void isJaBloed() // { diff --git a/sal/qa/testHelperFunctions/testHelperFunctions2.cxx b/sal/qa/testHelperFunctions/testHelperFunctions2.cxx index 9ddc1031d7fa..1adae36ade2a 100644 --- a/sal/qa/testHelperFunctions/testHelperFunctions2.cxx +++ b/sal/qa/testHelperFunctions/testHelperFunctions2.cxx @@ -31,7 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sal.hxx" -#include <cppunit/simpleheader.hxx> +#include <testshl/simpleheader.hxx> #include "stringhelper.hxx" namespace testOfHelperFunctions diff --git a/sal/rtl/source/alloc.c b/sal/rtl/source/alloc.c index 98a4c061e42b..123406717275 100644 --- a/sal/rtl/source/alloc.c +++ b/sal/rtl/source/alloc.c @@ -78,7 +78,7 @@ static sal_Size __rtl_memory_vmpagesize (void) /* xBSD */ return (sal_Size)(getpagesize()); } -#elif defined(IRIX) || defined(LINUX) || defined(SOLARIS) +#elif defined(LINUX) || defined(SOLARIS) static sal_Size __rtl_memory_vmpagesize (void) { /* POSIX */ @@ -90,7 +90,7 @@ static sal_Size __rtl_memory_vmpagesize (void) /* other */ return (sal_Size)(0x2000); } -#endif /* FREEBSD || NETBSD || MACOSX || IRIX || LINUX || SOLARIS */ +#endif /* FREEBSD || NETBSD || MACOSX || LINUX || SOLARIS */ #ifndef PROT_HEAP #define PROT_HEAP (PROT_READ | PROT_WRITE | PROT_EXEC) diff --git a/sal/rtl/source/bootstrap.cxx b/sal/rtl/source/bootstrap.cxx index 23dab839d558..769251a6c4ec 100644 --- a/sal/rtl/source/bootstrap.cxx +++ b/sal/rtl/source/bootstrap.cxx @@ -820,8 +820,8 @@ void SAL_CALL rtl_bootstrap_set ( rtl_uString * pValue ) SAL_THROW_EXTERN_C() { - OUString const & name = *reinterpret_cast< OUString const * >( &pName ); - OUString const & value = *reinterpret_cast< OUString const * >( &pValue ); + const OUString name( pName ); + const OUString value( pValue ); osl::MutexGuard guard( osl::Mutex::getGlobalMutex() ); diff --git a/sal/rtl/source/macro.hxx b/sal/rtl/source/macro.hxx index a007d9e1cdab..ba274844952e 100644 --- a/sal/rtl/source/macro.hxx +++ b/sal/rtl/source/macro.hxx @@ -49,8 +49,6 @@ #define THIS_OS "NetBSD" #elif defined FREEBSD #define THIS_OS "FreeBSD" -#elif defined IRIX -#define THIS_OS "Irix" #endif #if ! defined THIS_OS @@ -76,8 +74,6 @@ this is inserted for the case that the preprocessor ignores error #else # define THIS_ARCH "SPARC" #endif -#elif defined IRIX -# define THIS_ARCH "MIPS" #elif defined MIPS # ifdef OSL_BIGENDIAN # define THIS_ARCH "MIPS_EB" @@ -94,6 +90,8 @@ this is inserted for the case that the preprocessor ignores error # define THIS_ARCH "IA64" #elif defined M68K # define THIS_ARCH "M68K" +#elif defined HPPA +# define THIS_ARCH "HPPA" #endif #if ! defined THIS_ARCH diff --git a/sal/rtl/source/math.cxx b/sal/rtl/source/math.cxx index a255ca21b13a..012046c9e5c8 100644 --- a/sal/rtl/source/math.cxx +++ b/sal/rtl/source/math.cxx @@ -879,8 +879,13 @@ inline double stringToDouble(CharT const * pBegin, CharT const * pEnd, rtl::math::setNan( &fVal ); if (bSign) { - reinterpret_cast< sal_math_Double * >(&fVal)->w32_parts.msw - |= 0x80000000; // create negative NaN + union { + double sd; + sal_math_Double md; + } m; + m.sd = fVal; + m.md.w32_parts.msw |= 0x80000000; // create negative NaN + fVal = m.sd; bSign = false; // don't negate again } // Eat any further digits: diff --git a/sal/typesconfig/typesconfig.c b/sal/typesconfig/typesconfig.c index 932d80fd979a..c9d6ede62cb7 100644 --- a/sal/typesconfig/typesconfig.c +++ b/sal/typesconfig/typesconfig.c @@ -163,7 +163,7 @@ int check( TestFunc func, Type eT, void* p ) |* Letzte Aenderung |* *************************************************************************/ -#if defined(IA64) || defined(ARM32) +#if defined(IA64) || defined(ARM32) || defined(HPPA) int forceerror() { diff --git a/sal/util/makefile.mk b/sal/util/makefile.mk index bc8026aa860f..3247be8774de 100644 --- a/sal/util/makefile.mk +++ b/sal/util/makefile.mk @@ -127,9 +127,6 @@ SHL1STDLIBS= -Bdynamic -ldl -lpthread -lposix4 -lsocket -lnsl SHL1STDLIBS+= -z allextract -staticlib=Crun -z defaultextract .ENDIF # C50 .ENDIF # SOLARIS -.IF "$(OS)"=="IRIX" -SHL1STDLIBS= -lexc -.ENDIF .ENDIF # UNX .IF "$(GUI)"=="OS2" @@ -163,6 +160,12 @@ SHL1STDLIBS+=-lcrypt .ENDIF .ENDIF +# #i105898# required for LD_PRELOAD libsalalloc_malloc.so +# if sal is linked with -Bsymbolic-functions +.IF "$(HAVE_LD_BSYMBOLIC_FUNCTIONS)" == "TRUE" +SHL1LINKFLAGS+=-Wl,--dynamic-list=salalloc.list +.ENDIF # .IF "$(HAVE_LD_BSYMBOLIC_FUNCTIONS)" == "TRUE" + SHL1LIBS+=$(SLB)$/$(TARGET).lib .IF "$(linkinc)" != "" diff --git a/sal/util/salalloc.list b/sal/util/salalloc.list new file mode 100644 index 000000000000..303d225dda7f --- /dev/null +++ b/sal/util/salalloc.list @@ -0,0 +1,7 @@ +{ + rtl_allocateMemory; + rtl_reallocateMemory; + rtl_freeMemory; + rtl_allocateZeroMemory; + rtl_freeZeroMemory; +}; diff --git a/salhelper/qa/makefile.mk b/salhelper/qa/makefile.mk index 9987b3a276cd..4589338a5316 100644 --- a/salhelper/qa/makefile.mk +++ b/salhelper/qa/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -39,7 +39,7 @@ ENABLE_EXCEPTIONS := TRUE SHL1TARGET = $(TARGET) SHL1OBJS = $(SLO)$/test_api.obj -SHL1STDLIBS = $(CPPUNITLIB) $(SALLIB) $(SALHELPERLIB) +SHL1STDLIBS = $(CPPUNITLIB) $(SALLIB) $(SALHELPERLIB) $(TESTSHL2LIB) SHL1IMPLIB = i$(SHL1TARGET) SHL1VERSIONMAP = version.map DEF1NAME = $(SHL1TARGET) @@ -51,4 +51,4 @@ SLOFILES = $(SHL1OBJS) ALLTAR: test test .PHONY: $(SHL1TARGETN) - cd $(SHL1TARGETN:d) && testshl2 $(SHL1TARGETN:f) + cd $(SHL1TARGETN:d) && $(TESTSHL2) $(SHL1TARGETN:f) diff --git a/salhelper/qa/test_api.cxx b/salhelper/qa/test_api.cxx index 9957f6a56cf1..83df7ec084c6 100644 --- a/salhelper/qa/test_api.cxx +++ b/salhelper/qa/test_api.cxx @@ -59,7 +59,7 @@ std::type_info const & getSimpleReferenceObjectTypeInfo() } -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "osl/mutex.hxx" #include "salhelper/condition.hxx" #include "salhelper/dynload.hxx" diff --git a/salhelper/source/simplereferenceobject.cxx b/salhelper/source/simplereferenceobject.cxx index 2d80f246d171..36036feb5986 100755 --- a/salhelper/source/simplereferenceobject.cxx +++ b/salhelper/source/simplereferenceobject.cxx @@ -69,7 +69,7 @@ void SimpleReferenceObject::operator delete(void * pPtr) SAL_THROW(()) void SimpleReferenceObject::operator delete(void * pPtr, std::nothrow_t const &) SAL_THROW(()) { -#if defined WNT || (defined IRIX && !defined GCC) +#if defined WNT ::operator delete(pPtr); // WNT lacks a global nothrow operator delete... #else // WNT ::operator delete(pPtr, std::nothrow); diff --git a/stoc/test/javavm/testapplet/TestApplet.java b/stoc/test/javavm/testapplet/TestApplet.java index 07467cc54c0f..55916cff784b 100644 --- a/stoc/test/javavm/testapplet/TestApplet.java +++ b/stoc/test/javavm/testapplet/TestApplet.java @@ -5,7 +5,6 @@ import java.io.IOException; import java.net.URL; import java.io.InputStream; import java.net.MalformedURLException; -import com.sun.star.lib.sandbox.*; /* * TestApplet.java * diff --git a/stoc/test/javavm/testapplet/makefile.mk b/stoc/test/javavm/testapplet/makefile.mk index 706180655f06..da5a21e4f166 100644 --- a/stoc/test/javavm/testapplet/makefile.mk +++ b/stoc/test/javavm/testapplet/makefile.mk @@ -40,7 +40,7 @@ TARGET = TestApplet #.INCLUDE : $(PRJ)$/util$/makefile.pmk .INCLUDE : settings.mk # Files -------------------------------------------------------- -JARFILES = sandbox.jar ridl.jar jurt.jar unoil.jar +JARFILES = ridl.jar jurt.jar unoil.jar JAVAFILES= $(subst,$(CLASSDIR)$/$(PACKAGE)$/, $(subst,.class,.java $(JAVACLASSFILES))) diff --git a/stoc/test/javavm/testcomponent/TestComponent.java b/stoc/test/javavm/testcomponent/TestComponent.java index a0fb1d01a858..5622ba087d7a 100644 --- a/stoc/test/javavm/testcomponent/TestComponent.java +++ b/stoc/test/javavm/testcomponent/TestComponent.java @@ -4,7 +4,7 @@ import com.sun.star.uno.*; import com.sun.star.registry.XRegistryKey; import java.io.*; import java.net.*; -import com.sun.star.lib.sandbox.*; +//import com.sun.star.lib.sandbox.*; /** This component implements XTypeProvider for use with StarBasic. @@ -74,10 +74,11 @@ public class TestComponent implements XServiceInfo, XTypeProvider }catch( IOException e) { String s= e.getMessage(); System.out.println(s); - }catch( SandboxSecurityException sse) { + }/*catch( SandboxSecurityException sse) { String s= sse.getMessage(); System.out.println("s"); } +*/ return __serviceName; } diff --git a/stoc/test/javavm/testcomponent/makefile.mk b/stoc/test/javavm/testcomponent/makefile.mk index 68f3f5bd6431..9fcd390b02a1 100644 --- a/stoc/test/javavm/testcomponent/makefile.mk +++ b/stoc/test/javavm/testcomponent/makefile.mk @@ -40,7 +40,7 @@ TARGET = JavaTestComponent #.INCLUDE : $(PRJ)$/util$/makefile.pmk .INCLUDE : settings.mk # Files -------------------------------------------------------- -JARFILES = sandbox.jar ridl.jar jurt.jar unoil.jar +JARFILES = ridl.jar jurt.jar unoil.jar CUSTOMMANIFESTFILE= manifest diff --git a/stoc/test/uriproc/makefile.mk b/stoc/test/uriproc/makefile.mk index 85e3a294f434..78b54bb2a5a2 100644 --- a/stoc/test/uriproc/makefile.mk +++ b/stoc/test/uriproc/makefile.mk @@ -1,7 +1,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite @@ -56,7 +56,7 @@ UNOTYPES = \ SHL1TARGET = $(TARGET) SHL1OBJS = $(SLO)$/test_uriproc.obj -SHL1STDLIBS = $(CPPULIB) $(CPPUHELPERLIB) $(CPPUNITLIB) $(SALLIB) +SHL1STDLIBS = $(CPPULIB) $(CPPUHELPERLIB) $(CPPUNITLIB) $(SALLIB) $(TESTSHL2LIB) SHL1VERSIONMAP = version.map SHL1IMPLIB = i$(SHL1TARGET) DEF1NAME = $(SHL1TARGET) diff --git a/stoc/test/uriproc/test_uriproc.cxx b/stoc/test/uriproc/test_uriproc.cxx index f1032276eb89..71f92e504d64 100644 --- a/stoc/test/uriproc/test_uriproc.cxx +++ b/stoc/test/uriproc/test_uriproc.cxx @@ -47,7 +47,7 @@ #include "com/sun/star/uri/XVndSunStarScriptUrlReference.hpp" #include "com/sun/star/util/XMacroExpander.hpp" #include "cppuhelper/servicefactory.hxx" -#include "cppunit/simpleheader.hxx" +#include "testshl/simpleheader.hxx" #include "osl/diagnose.h" #include "osl/thread.h" #include "rtl/string.h" diff --git a/xml2cmp/source/xcd/xmlelem.cxx b/xml2cmp/source/xcd/xmlelem.cxx index 4b642e1d30cc..aa80459ccead 100644 --- a/xml2cmp/source/xcd/xmlelem.cxx +++ b/xml2cmp/source/xcd/xmlelem.cxx @@ -36,15 +36,6 @@ #include <parse.hxx> #include <cr_html.hxx> -#if OSL_DEBUG_LEVEL == 0 -# ifndef NDEBUG -# define NDEBUG -# endif -#endif -#include <assert.h> - - - XmlElement::XmlElement( const char * i_sName ) : sName(i_sName) { @@ -160,7 +151,6 @@ ListElement::Write2Html( HtmlCreator & io_rHC ) const XmlElement * ListElement::Create_and_Add_NewElement() { - assert(fCreateNewElement != 0); XmlElement * pNew = (*fCreateNewElement)(Name()); Children().push_back( pNew ); return pNew; |