summaryrefslogtreecommitdiff
path: root/registry/source
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2004-02-03 10:51:53 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2004-02-03 10:51:53 +0000
commit840bfe5e7208dc0db0bb1d6cdfff1d01dfc1ae72 (patch)
treeab13abf2c8a666d6eb36137818b82dd6a92e37fb /registry/source
parent1b6be304d45e0214a223b674a285a875348a44b6 (diff)
INTEGRATION: CWS sb10 (1.7.36); FILE MERGED
2003/12/10 09:26:24 sb 1.7.36.1: #114000# Adapted to multiple-inheritance interface types.
Diffstat (limited to 'registry/source')
-rw-r--r--registry/source/reflwrit.cxx80
1 files changed, 52 insertions, 28 deletions
diff --git a/registry/source/reflwrit.cxx b/registry/source/reflwrit.cxx
index 7d18ccdb1180..ded98ead4731 100644
--- a/registry/source/reflwrit.cxx
+++ b/registry/source/reflwrit.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: reflwrit.cxx,v $
*
- * $Revision: 1.7 $
+ * $Revision: 1.8 $
*
- * last change: $Author: hr $ $Date: 2003-03-26 15:37:46 $
+ * last change: $Author: hr $ $Date: 2004-02-03 11:51:53 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -769,20 +769,22 @@ public:
TypeWriter(RTTypeSource RTTypeSource,
RTTypeClass RTTypeClass,
const OString& typeName,
- const OString& superTypeName,
+ sal_uInt16 superTypeCount,
sal_uInt16 FieldCount,
sal_uInt16 methodCount,
sal_uInt16 referenceCount);
~TypeWriter();
+ void setSuperType(sal_uInt16 index, OString const & name);
+
void createBlop();
};
TypeWriter::TypeWriter(RTTypeSource RTTypeSource,
RTTypeClass RTTypeClass,
const OString& typeName,
- const OString& superTypeName,
+ sal_uInt16 superTypeCount,
sal_uInt16 fieldCount,
sal_uInt16 methodCount,
sal_uInt16 referenceCount)
@@ -790,7 +792,7 @@ TypeWriter::TypeWriter(RTTypeSource RTTypeSource,
, m_typeSource(RTTypeSource)
, m_typeClass(RTTypeClass)
, m_typeName(typeName)
- , m_nSuperTypes(superTypeName.getLength() > 0 ? 1 : 0)
+ , m_nSuperTypes(superTypeCount)
, m_fieldCount(fieldCount)
, m_methodCount(methodCount)
, m_referenceCount(referenceCount)
@@ -801,7 +803,6 @@ TypeWriter::TypeWriter(RTTypeSource RTTypeSource,
if (m_nSuperTypes > 0)
{
m_superTypeNames = new OString[m_nSuperTypes];
- m_superTypeNames[0] = superTypeName;
} else
{
m_superTypeNames = NULL;
@@ -838,6 +839,11 @@ TypeWriter::~TypeWriter()
delete m_pUik;
}
+void TypeWriter::setSuperType(sal_uInt16 index, OString const & name)
+{
+ m_superTypeNames[index] = name;
+}
+
void TypeWriter::createBlop()
{
sal_uInt8* pBlopFields = NULL;
@@ -1243,27 +1249,6 @@ void TypeWriter::createBlop()
**************************************************************************/
-static TypeWriterImpl TYPEREG_CALLTYPE createEntry(RTTypeClass RTTypeClass,
- rtl_uString* typeName,
- rtl_uString* superTypeName,
- sal_uInt16 FieldCount,
- sal_uInt16 methodCount,
- sal_uInt16 referenceCount)
-{
- OString rTypeName, rSuperTypeName;
-
- rtl_uString2String( &rTypeName.pData, typeName->buffer, typeName->length, RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
- rtl_uString2String( &rSuperTypeName.pData, superTypeName->buffer, superTypeName->length, RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
-
- return new TypeWriter(RT_UNO_IDL,
- RTTypeClass,
- rTypeName,
- rSuperTypeName,
- FieldCount,
- methodCount,
- referenceCount);
-}
-
static void TYPEREG_CALLTYPE acquire(TypeWriterImpl hEntry)
{
TypeWriter* pEntry = (TypeWriter*) hEntry;
@@ -1477,10 +1462,47 @@ static void TYPEREG_CALLTYPE setReferenceData(TypeWriterImpl hEntry,
}
}
+static TypeWriterImpl TYPEREG_CALLTYPE createMIEntry(
+ RTTypeClass typeClass, rtl_uString * typeName, sal_uInt16 superTypeCount,
+ sal_uInt16 fieldCount, sal_uInt16 methodCount, sal_uInt16 referenceCount)
+{
+ OString rTypeName;
+ rtl_uString2String(
+ &rTypeName.pData, typeName->buffer, typeName->length,
+ RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
+ return new TypeWriter(
+ RT_UNO_IDL, typeClass, rTypeName, superTypeCount, fieldCount,
+ methodCount, referenceCount);
+}
+
+static void TYPEREG_CALLTYPE setMISuperTypeData(
+ TypeWriterImpl hEntry, sal_uInt16 index, rtl_uString * name)
+{
+ OString rName;
+ rtl_uString2String(
+ &rName.pData, name->buffer, name->length, RTL_TEXTENCODING_UTF8,
+ OUSTRING_TO_OSTRING_CVTFLAGS);
+ static_cast< TypeWriter * >(hEntry)->setSuperType(index, rName);
+}
+
+static TypeWriterImpl TYPEREG_CALLTYPE createEntry(
+ RTTypeClass typeClass, rtl_uString * typeName, rtl_uString * superTypeName,
+ sal_uInt16 fieldCount, sal_uInt16 methodCount, sal_uInt16 referenceCount)
+{
+ sal_uInt16 superTypeCount = rtl_uString_getLength(superTypeName) == 0
+ ? 0 : 1;
+ TypeWriterImpl t = createMIEntry(
+ typeClass, typeName, superTypeCount, fieldCount, methodCount,
+ referenceCount);
+ if (superTypeCount > 0) {
+ setMISuperTypeData(t, 0, superTypeName);
+ }
+ return t;
+}
extern "C" RegistryTypeWriter_Api* TYPEREG_CALLTYPE initRegistryTypeWriter_Api(void)
{
- static RegistryTypeWriter_Api aApi= {0,0,0,0,0,0,0,0,0,0,0,0,0};
+ static RegistryTypeWriter_Api aApi= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
if (!aApi.acquire)
{
aApi.createEntry = &createEntry;
@@ -1496,6 +1518,8 @@ extern "C" RegistryTypeWriter_Api* TYPEREG_CALLTYPE initRegistryTypeWriter_Api(v
aApi.getBlop = &getBlop;
aApi.getBlopSize = &getBlopSize;
aApi.setReferenceData = &setReferenceData;
+ aApi.createMIEntry = &createMIEntry;
+ aApi.setMISuperTypeData = &setMISuperTypeData;
return (&aApi);
}