diff options
Diffstat (limited to 'codemaker/source/cppumaker/cpputype.cxx')
-rw-r--r-- | codemaker/source/cppumaker/cpputype.cxx | 76 |
1 files changed, 40 insertions, 36 deletions
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx index 5513d24715be..b5e52681a598 100644 --- a/codemaker/source/cppumaker/cpputype.cxx +++ b/codemaker/source/cppumaker/cpputype.cxx @@ -27,6 +27,7 @@ #include "registry/reader.hxx" #include "rtl/alloc.h" +#include "rtl/ref.hxx" #include "rtl/ustring.hxx" #include "rtl/strbuf.hxx" @@ -151,7 +152,7 @@ bool isBootstrapType(rtl::OString const & name) { //************************************************************************* CppuType::CppuType(typereg::Reader& typeReader, const OString& typeName, - const TypeManager& typeMgr) + rtl::Reference< TypeManager > const & typeMgr) : m_inheritedMemberCount(0) , m_cppuTypeLeak(false) , m_cppuTypeDynamic(true) @@ -422,7 +423,7 @@ void CppuType::addDefaultHIncludes(codemaker::cppumaker::Includes & includes) { //TODO: Only include what is really needed includes.addCppuMacrosHxx(); - if (m_typeMgr.getTypeClass(m_typeName) == RT_TYPE_INTERFACE) { + if (m_typeMgr->getTypeClass(m_typeName) == RT_TYPE_INTERFACE) { includes.addReference(); } } @@ -434,7 +435,7 @@ void CppuType::addDefaultHxxIncludes(codemaker::cppumaker::Includes & includes) includes.addRtlInstanceHxx(); includes.addOslMutexHxx(); includes.addType(); - if (m_typeMgr.getTypeClass(m_typeName) == RT_TYPE_INTERFACE) { + if (m_typeMgr->getTypeClass(m_typeName) == RT_TYPE_INTERFACE) { includes.addReference(); } } @@ -470,10 +471,10 @@ void CppuType::dumpInitializer( break; case codemaker::UnoType::SORT_COMPLEX: - switch (m_typeMgr.getTypeClass(t)) { + switch (m_typeMgr->getTypeClass(t)) { case RT_TYPE_ENUM: { - typereg::Reader reader(m_typeMgr.getTypeReader(t)); + typereg::Reader reader(m_typeMgr->getTypeReader(t)); OSL_ASSERT(reader.isValid()); out << scopedCppName(t) << "_" << rtl::OUStringToOString( @@ -879,7 +880,7 @@ sal_uInt32 CppuType::checkInheritedMemberCount(const typereg::Reader* pReader) } if (!superType.isEmpty()) { - typereg::Reader aSuperReader(m_typeMgr.getTypeReader(superType)); + typereg::Reader aSuperReader(m_typeMgr->getTypeReader(superType)); if ( aSuperReader.isValid() ) { count = checkInheritedMemberCount(&aSuperReader); @@ -923,7 +924,7 @@ OString CppuType::getTypeClass(const OString& type, sal_Bool bCStyle) if (!type.isEmpty()) { typeName = type; - rtTypeClass = m_typeMgr.getTypeClass(typeName); + rtTypeClass = m_typeMgr->getTypeClass(typeName); } else { typeName = m_typeName; @@ -1004,7 +1005,7 @@ void CppuType::dumpType(FileStream& o, const OString& type, codemaker::UnoType::decompose( checkRealBaseType(type, true), &seqNum, &args)); - RTTypeClass typeClass = m_typeMgr.getTypeClass(relType); + RTTypeClass typeClass = m_typeMgr->getTypeClass(relType); if (bConst) o << "const "; @@ -1074,7 +1075,7 @@ void CppuType::dumpCppuGetType(FileStream& o, const OString& type, sal_Bool bDec if (eDeclFlag == CPPUTYPEDECL_ONLYINTERFACES) { - if (m_typeMgr.getTypeClass(relType) == RT_TYPE_INTERFACE) + if (m_typeMgr->getTypeClass(relType) == RT_TYPE_INTERFACE) { o << indent() << "::cppu::UnoType< "; dumpType(o, type, false, false, false, true); @@ -1092,7 +1093,7 @@ void CppuType::dumpCppuGetType(FileStream& o, const OString& type, sal_Bool bDec } else { if (eDeclFlag == CPPUTYPEDECL_NOINTERFACES && - m_typeMgr.getTypeClass(relType) == RT_TYPE_INTERFACE) + m_typeMgr->getTypeClass(relType) == RT_TYPE_INTERFACE) return; o << indent() << "::cppu::UnoType< "; @@ -1146,7 +1147,7 @@ bool CppuType::passByReference(rtl::OString const & unoType) { return true; case codemaker::UnoType::SORT_COMPLEX: - return m_typeMgr.getTypeClass(type) != RT_TYPE_ENUM; + return m_typeMgr->getTypeClass(type) != RT_TYPE_ENUM; } } @@ -1156,12 +1157,12 @@ OString CppuType::resolveTypedefs(const OString& type) const RegistryKey key; RTTypeClass typeClass; - sal_Bool isTypeDef = (m_typeMgr.getTypeClass(baseType) == RT_TYPE_TYPEDEF); + sal_Bool isTypeDef = (m_typeMgr->getTypeClass(baseType) == RT_TYPE_TYPEDEF); typereg::Reader reader; while (isTypeDef) { - reader = m_typeMgr.getTypeReader(baseType); + reader = m_typeMgr->getTypeReader(baseType); if (reader.isValid()) { @@ -1188,12 +1189,12 @@ OString CppuType::checkRealBaseType(const OString& type, sal_Bool bResolveTypeOn RegistryKey key; RTTypeClass typeClass; - sal_Bool mustBeChecked = (m_typeMgr.getTypeClass(baseType) == RT_TYPE_TYPEDEF); + sal_Bool mustBeChecked = (m_typeMgr->getTypeClass(baseType) == RT_TYPE_TYPEDEF); typereg::Reader reader; while (mustBeChecked) { - reader = m_typeMgr.getTypeReader(baseType); + reader = m_typeMgr->getTypeReader(baseType); if (reader.isValid()) { @@ -1359,7 +1360,7 @@ void dumpDeprecation(FileStream & o, bool deprecated) { InterfaceType::InterfaceType(typereg::Reader& typeReader, const OString& typeName, - const TypeManager& typeMgr) + rtl::Reference< TypeManager > const & typeMgr) : CppuType(typeReader, typeName, typeMgr) { m_inheritedMemberCount = 0; @@ -1865,7 +1866,9 @@ namespace { class BaseOffset { public: - BaseOffset(TypeManager const & theManager, typereg::Reader const & reader); + BaseOffset( + rtl::Reference< TypeManager > const & theManager, + typereg::Reader const & reader); sal_Int32 get() const { return offset; } @@ -1874,13 +1877,14 @@ private: void calculate(typereg::Reader const & reader); - TypeManager const & manager; + rtl::Reference< TypeManager > manager; std::set< rtl::OString > set; sal_Int32 offset; }; BaseOffset::BaseOffset( - TypeManager const & theManager, typereg::Reader const & reader): + rtl::Reference< TypeManager > const & theManager, + typereg::Reader const & reader): manager(theManager) { offset = 0; @@ -1890,7 +1894,7 @@ BaseOffset::BaseOffset( void BaseOffset::calculateBases(typereg::Reader const & reader) { for (sal_Int16 i = 0; i < reader.getSuperTypeCount(); ++i) { typereg::Reader super( - manager.getTypeReader( + manager->getTypeReader( rtl::OUStringToOString( reader.getSuperTypeName(i), RTL_TEXTENCODING_UTF8))); if (super.isValid()) { @@ -2323,7 +2327,7 @@ sal_Int32 InterfaceType::dumpAttributeExceptionTypeNames( //************************************************************************* ConstantsType::ConstantsType(typereg::Reader& typeReader, const OString& typeName, - const TypeManager& typeMgr) + rtl::Reference< TypeManager > const & typeMgr) : CppuType(typeReader, typeName, typeMgr) { } @@ -2441,7 +2445,7 @@ sal_Bool ConstantsType::dumpHxxFile( //************************************************************************* ModuleType::ModuleType(typereg::Reader& typeReader, const OString& typeName, - const TypeManager& typeMgr) + rtl::Reference< TypeManager > const & typeMgr) : ConstantsType(typeReader, typeName, typeMgr) { } @@ -2481,7 +2485,7 @@ void dumpTypeParameterName(FileStream & out, rtl::OString const & name) { StructureType::StructureType(typereg::Reader& typeReader, const OString& typeName, - const TypeManager& typeMgr) + rtl::Reference< TypeManager > const & typeMgr) : CppuType(typeReader, typeName, typeMgr) { } @@ -3086,7 +3090,7 @@ sal_Bool StructureType::dumpSuperMember(FileStream& o, const OString& superType, if (!superType.isEmpty()) { - typereg::Reader aSuperReader(m_typeMgr.getTypeReader(superType)); + typereg::Reader aSuperReader(m_typeMgr->getTypeReader(superType)); if (aSuperReader.isValid()) { @@ -3230,7 +3234,7 @@ void StructureType::dumpTemplateParameters(FileStream & out) const { //************************************************************************* ExceptionType::ExceptionType(typereg::Reader& typeReader, const OString& typeName, - const TypeManager& typeMgr) + rtl::Reference< TypeManager > const & typeMgr) : CppuType(typeReader, typeName, typeMgr) { } @@ -3527,7 +3531,7 @@ sal_Bool ExceptionType::dumpSuperMember(FileStream& o, const OString& superType, if (!superType.isEmpty()) { - typereg::Reader aSuperReader(m_typeMgr.getTypeReader(superType)); + typereg::Reader aSuperReader(m_typeMgr->getTypeReader(superType)); if (aSuperReader.isValid()) { @@ -3580,7 +3584,7 @@ sal_Bool ExceptionType::dumpSuperMember(FileStream& o, const OString& superType, //************************************************************************* EnumType::EnumType(typereg::Reader& typeReader, const OString& typeName, - const TypeManager& typeMgr) + rtl::Reference< TypeManager > const & typeMgr) : CppuType(typeReader, typeName, typeMgr) { } @@ -3767,7 +3771,7 @@ void EnumType::dumpComprehensiveGetCppuType(FileStream& o) //************************************************************************* TypeDefType::TypeDefType(typereg::Reader& typeReader, const OString& typeName, - const TypeManager& typeMgr) + rtl::Reference< TypeManager > const & typeMgr) : CppuType(typeReader, typeName, typeMgr) { } @@ -4208,7 +4212,7 @@ void ServiceType::dumpCatchClauses( //************************************************************************* bool SingletonType::isInterfaceBased() { - return (m_typeMgr.getTypeClass( + return (m_typeMgr->getTypeClass( rtl::OUStringToOString( m_reader.getSuperTypeName(0), RTL_TEXTENCODING_UTF8))) == RT_TYPE_INTERFACE; @@ -4285,19 +4289,19 @@ sal_Bool SingletonType::dumpHxxFile( // produceType //************************************************************************* bool produceType(const OString& typeName, - TypeManager const & typeMgr, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, CppuOptions* pOptions) throw( CannotDumpException ) { - if (typeName == "/" || typeName == typeMgr.getBase() || + if (typeName == "/" || typeName == typeMgr->getBase() || TypeManager::isBaseType(typeName) || generated.contains(typeName)) { return true; } sal_Bool bIsExtraType = sal_False; - typereg::Reader reader(typeMgr.getTypeReader(typeName, &bIsExtraType)); + typereg::Reader reader(typeMgr->getTypeReader(typeName, &bIsExtraType)); if (bIsExtraType) { generated.add(typeName); return true; @@ -4419,14 +4423,14 @@ bool produceType(const OString& typeName, } bool produceType(RegistryKey& rTypeKey, bool bIsExtraType, - TypeManager const & typeMgr, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, CppuOptions* pOptions) throw( CannotDumpException ) { - OString typeName = typeMgr.getTypeName(rTypeKey); + OString typeName = typeMgr->getTypeName(rTypeKey); - if (typeName == "/" ||typeName == typeMgr.getBase() || + if (typeName == "/" ||typeName == typeMgr->getBase() || TypeManager::isBaseType(typeName) || generated.contains(typeName)) { return true; @@ -4437,7 +4441,7 @@ bool produceType(RegistryKey& rTypeKey, bool bIsExtraType, return true; } - typereg::Reader reader(typeMgr.getTypeReader(rTypeKey)); + typereg::Reader reader(typeMgr->getTypeReader(rTypeKey)); if (!reader.isValid()) { return false; } |