diff options
author | Oliver Bolte <obo@openoffice.org> | 2008-02-27 09:02:17 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2008-02-27 09:02:17 +0000 |
commit | 156092bda60c1ce7b68fa2b278c9506c96a64773 (patch) | |
tree | 09142caf2e5225ba4fef513e48a42c7f1d578bd9 /bridges | |
parent | 75f8c42dafaae1f8d376a5cd11f4d33e8a05fe2b (diff) |
INTEGRATION: CWS ia64port01_DEV300 (1.6.82); FILE MERGED
2008/02/18 11:05:04 cmc 1.6.82.1: #i84999# follow sb's suggested pattern, stage 1, gcc3_solaris_*
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_solaris_intel/cpp2uno.cxx | 36 | ||||
-rw-r--r-- | bridges/source/cpp_uno/gcc3_solaris_sparc/cpp2uno.cxx | 36 |
2 files changed, 44 insertions, 28 deletions
diff --git a/bridges/source/cpp_uno/gcc3_solaris_intel/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_solaris_intel/cpp2uno.cxx index 24f38ab78d9b..70a65b94318b 100644 --- a/bridges/source/cpp_uno/gcc3_solaris_intel/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_solaris_intel/cpp2uno.cxx @@ -4,9 +4,9 @@ * * $RCSfile: cpp2uno.cxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: obo $ $Date: 2006-09-16 15:53:13 $ + * last change: $Author: obo $ $Date: 2008-02-27 10:02:02 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -452,29 +452,37 @@ unsigned char * codeSnippet( } -void ** bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) +struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; + +bridges::cpp_uno::shared::VtableFactory::Slot * +bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) { - return static_cast< 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; - slots[-1] = 0; - 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; + slots[-1].fn = 0; + 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 functionCount, sal_Int32 vtableOffset) { + (*slots) -= functionCount; + Slot * s = *slots; for (sal_Int32 i = 0; i < type->nMembers; ++i) { typelib_TypeDescription * member = 0; TYPELIB_DANGER_GET(&member, type->ppMembers[i]); @@ -482,7 +490,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( @@ -494,13 +502,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( diff --git a/bridges/source/cpp_uno/gcc3_solaris_sparc/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_solaris_sparc/cpp2uno.cxx index 836371b0c51d..883160626985 100644 --- a/bridges/source/cpp_uno/gcc3_solaris_sparc/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_solaris_sparc/cpp2uno.cxx @@ -4,9 +4,9 @@ * * $RCSfile: cpp2uno.cxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: obo $ $Date: 2006-09-16 15:53:57 $ + * last change: $Author: obo $ $Date: 2008-02-27 10:02:17 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -491,29 +491,37 @@ unsigned char * codeSnippet( } //end of namespace -void ** bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) +struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; + +bridges::cpp_uno::shared::VtableFactory::Slot * +bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) { - return static_cast< 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 functionCount, sal_Int32 vTableOffset) { + (*slots) -= functionCount; + Slot * s = *slots; for (sal_Int32 i = 0; i < type->nMembers; ++i) { typelib_TypeDescription * member = 0; TYPELIB_DANGER_GET(&member, type->ppMembers[i]); @@ -521,7 +529,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( @@ -533,13 +541,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( |