summaryrefslogtreecommitdiff
path: root/bridges/source
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2008-02-27 08:54:38 +0000
committerOliver Bolte <obo@openoffice.org>2008-02-27 08:54:38 +0000
commit6254095dccfdb725324b1f33b6d4497dcd7d84ff (patch)
treec87158118e14d58a7ecbeebddcb5a1ad9792e5e2 /bridges/source
parent23f730a64fb173b91c8d11d1e345aa3a456e27a5 (diff)
INTEGRATION: CWS ia64port01_DEV300 (1.3.8); FILE MERGED
2008/02/18 10:40:37 cmc 1.3.8.1: #i84999# follow sb's suggested pattern, stage 1, gcc3_linux_*
Diffstat (limited to 'bridges/source')
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_mips/cpp2uno.cxx43
1 files changed, 22 insertions, 21 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_mips/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_mips/cpp2uno.cxx
index 6085358f5c75..0ba4b8af4e25 100644
--- a/bridges/source/cpp_uno/gcc3_linux_mips/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_mips/cpp2uno.cxx
@@ -4,11 +4,11 @@
*
* $RCSfile: cpp2uno.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
* Wrote by Fuxin Zhang. fxzhang@ict.ac.cn.
*
- * last change: $Author: ihi $ $Date: 2007-11-22 16:47:04 $
+ * last change: $Author: obo $ $Date: 2008-02-27 09:54:38 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -726,37 +726,38 @@ void bridges::cpp_uno::shared::VtableFactory::flushCode(unsigned char const * /*
sysmips(FLUSH_CACHE,0,0,0);
}
+struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
-
-void ** bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
+bridges::cpp_uno::shared::VtableFactory::Slot *
+bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
{
- return reinterpret_cast< void ** >(block) + 2;
+ return static_cast< Slot * >(block) + 2;
}
sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize(
sal_Int32 slotCount)
{
- return (slotCount + 2) * sizeof (void *) + slotCount * codeSnippetSize;
+ return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
}
-void ** bridges::cpp_uno::shared::VtableFactory::initializeBlock(void * block) {
- void ** slots = mapBlockToVtable(block);
- slots[-2] = 0; //null
- slots[-1] = 0; //destructor
- return slots;
+bridges::cpp_uno::shared::VtableFactory::Slot *
+bridges::cpp_uno::shared::VtableFactory::initializeBlock(
+ void * block, sal_Int32 slotCount)
+{
+ Slot * slots = mapBlockToVtable(block);
+ slots[-2].fn = 0; //null
+ slots[-1].fn = 0; //destructor
+ return slots + slotCount;
}
unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
- void ** slots, unsigned char * code,
+ Slot ** slots, unsigned char * code,
typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
- sal_Int32
-#ifdef BRDEBUG
- functionCount
-#endif
- , sal_Int32 vtableOffset)
+ sal_Int32 functionCount, sal_Int32 vtableOffset)
{
-
+ (*slots) -= functionCount;
+ Slot * s = *slots;
#ifdef BRDEBUG
fprintf(stderr, "in addLocalFunctions functionOffset is %d\n",functionOffset);
fprintf(stderr, "in addLocalFunctions vtableOffset is %d\n",vtableOffset);
@@ -771,7 +772,7 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
switch (member->eTypeClass) {
case typelib_TypeClass_INTERFACE_ATTRIBUTE:
// Getter:
- *slots++ = code;
+ (s++)->fn = code;
code = codeSnippet(
code, functionOffset++, vtableOffset,
bridges::cpp_uno::shared::isSimpleType(
@@ -784,13 +785,13 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
typelib_InterfaceAttributeTypeDescription * >(
member)->bReadOnly)
{
- *slots++ = code;
+ (s++)->fn = code;
code = codeSnippet(code, functionOffset++, vtableOffset, true);
}
break;
case typelib_TypeClass_INTERFACE_METHOD:
- *slots++ = code;
+ (s++)->fn = code;
code = codeSnippet(
code, functionOffset++, vtableOffset,
bridges::cpp_uno::shared::isSimpleType(