summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx81
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc/except.cxx6
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx54
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx10
-rw-r--r--bridges/source/remote/urp/urp_reader.cxx4
-rw-r--r--cpputools/source/sp2bv/makefile.mk2
-rw-r--r--jurt/com/sun/star/lib/uno/environments/java/java_environment.java192
-rwxr-xr-xjvmfwk/plugins/sunmajor/javaenvsetup/makefile.mk2
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx7
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunversion.hxx1
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/util.cxx5
-rw-r--r--offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlDateFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlEditModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlFileControlModel.idl10
-rw-r--r--offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl11
-rw-r--r--offapi/com/sun/star/form/FormController.idl105
-rw-r--r--offapi/com/sun/star/form/FormControllerDispatcher.idl170
-rw-r--r--offapi/com/sun/star/form/XFormController.idl53
-rw-r--r--offapi/com/sun/star/form/runtime/FilterEvent.idl64
-rw-r--r--offapi/com/sun/star/form/runtime/FormController.idl51
-rw-r--r--offapi/com/sun/star/form/runtime/FormOperations.idl4
-rw-r--r--offapi/com/sun/star/form/runtime/XFilterController.idl180
-rw-r--r--offapi/com/sun/star/form/runtime/XFilterControllerListener.idl84
-rw-r--r--offapi/com/sun/star/form/runtime/XFormController.idl373
-rw-r--r--offapi/com/sun/star/form/runtime/XFormControllerContext.idl57
-rw-r--r--offapi/com/sun/star/form/runtime/XFormOperations.idl6
-rw-r--r--offapi/com/sun/star/form/runtime/makefile.mk8
-rw-r--r--offapi/com/sun/star/sdb/DataSourceBrowser.idl6
-rw-r--r--offapi/com/sun/star/sdb/DatabaseContext.idl17
-rw-r--r--offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl60
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseAccess.idl49
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseAccessListener.idl35
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseEnvironment.idl27
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseRegistrations.idl158
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl70
-rw-r--r--offapi/com/sun/star/sdb/makefile.mk3
-rw-r--r--offapi/com/sun/star/ui/ItemStyle.idl5
-rw-r--r--offapi/com/sun/star/view/DuplexMode.idl69
-rw-r--r--offapi/com/sun/star/view/PrintOptions.idl7
-rw-r--r--offapi/com/sun/star/view/XFormLayerAccess.idl8
-rw-r--r--offapi/com/sun/star/view/makefile.mk3
-rw-r--r--offapi/util/makefile.mk4
-rw-r--r--sal/inc/osl/endian.h17
-rw-r--r--sal/inc/osl/thread.hxx4
-rw-r--r--sal/inc/rtl/math.hxx21
-rw-r--r--sal/inc/rtl/uuid.h2
-rw-r--r--sal/inc/sal/alloca.h2
-rw-r--r--sal/inc/sal/config.h2
-rw-r--r--sal/osl/os2/file.cxx4
-rw-r--r--sal/osl/os2/nlsupport.c21
-rw-r--r--sal/osl/os2/socket.c2
-rw-r--r--sal/osl/os2/system.h32
-rwxr-xr-xsal/osl/unx/backtrace.c48
-rw-r--r--sal/osl/unx/file_misc.cxx18
-rw-r--r--sal/osl/unx/file_volume.cxx425
-rw-r--r--sal/osl/unx/module.c26
-rw-r--r--sal/osl/unx/nlsupport.c50
-rw-r--r--sal/osl/unx/process.c108
-rw-r--r--sal/osl/unx/profile.c12
-rw-r--r--sal/osl/unx/socket.c21
-rw-r--r--sal/osl/unx/system.h31
-rw-r--r--sal/rtl/source/alloc.c4
-rw-r--r--sal/rtl/source/bootstrap.cxx4
-rw-r--r--sal/rtl/source/macro.hxx4
-rw-r--r--sal/rtl/source/math.cxx9
-rw-r--r--sal/util/makefile.mk9
-rw-r--r--sal/util/salalloc.list7
-rwxr-xr-xsalhelper/source/simplereferenceobject.cxx2
72 files changed, 1651 insertions, 1361 deletions
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/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx
index fd612d0f6391..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,8 +121,6 @@ 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;
@@ -130,7 +128,7 @@ static typelib_TypeClass cpp2uno_call(
bool bFitsRegisters =
#endif
x86_64::examine_argument( rParam.pTypeRef, false, nUsedGPR, nUsedSSE );
- if ( !rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ) ) // value
+ 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 ) ) );
@@ -155,12 +153,12 @@ 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
{
+ typelib_TypeDescription * pParamTypeDescr = 0;
+ TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
+
void *pCppStack;
if ( nr_gpr < x86_64::MAX_GPR_REGS )
{
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/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/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/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/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>&lt;column&gt; &lt;predicate&gt; &lt;literal&gt;</code> or of the form <code><em>&lt;column&gt;
+ 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/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/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/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_misc.cxx b/sal/osl/unx/file_misc.cxx
index b9b2b6a23c7d..0bde1616f6ae 100644
--- a/sal/osl/unx/file_misc.cxx
+++ b/sal/osl/unx/file_misc.cxx
@@ -1013,6 +1013,15 @@ static int oslDoCopyFile(const sal_Char* pszSourceFileName, const sal_Char* pszD
return nRet;
}
+ /* HACK: because memory mapping fails on various
+ platforms if the size of the source file is 0 byte */
+ if (0 == nSourceSize)
+ {
+ close(SourceFileFD);
+ close(DestFileFD);
+ return 0;
+ }
+
// 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
@@ -1034,15 +1043,6 @@ static int oslDoCopyFile(const sal_Char* pszSourceFileName, const sal_Char* pszD
return nRet;
}
- /* HACK: because memory mapping fails on various
- platforms if the size of the source file is 0 byte */
- if (0 == nSourceSize)
- {
- close(SourceFileFD);
- close(DestFileFD);
- return 0;
- }
-
size_t nWritten = 0;
size_t nRemains = nSourceSize;
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/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/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 2f0b723d236a..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"
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/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/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);