From bb1f0c667f8b38bf27818fe1608beb4295d9c429 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Tue, 26 Mar 2013 14:59:34 +0100 Subject: Clean up codemaker/typemanager.hxx Change-Id: I650efd6780070410eaf34993dd41ed1b8ada7c9a --- codemaker/inc/codemaker/codemaker.hxx | 3 +- codemaker/inc/codemaker/dependencies.hxx | 7 +- codemaker/inc/codemaker/exceptiontree.hxx | 5 +- codemaker/inc/codemaker/typemanager.hxx | 104 +++------------------ codemaker/source/codemaker/codemaker.cxx | 4 +- codemaker/source/codemaker/dependencies.cxx | 4 +- codemaker/source/codemaker/exceptiontree.cxx | 5 +- codemaker/source/codemaker/typemanager.cxx | 127 +++++++++----------------- codemaker/source/cppumaker/cppumaker.cxx | 25 ++--- codemaker/source/cppumaker/cpputype.cxx | 76 +++++++-------- codemaker/source/cppumaker/cpputype.hxx | 29 +++--- codemaker/source/cppumaker/includes.cxx | 7 +- codemaker/source/cppumaker/includes.hxx | 5 +- codemaker/source/javamaker/javamaker.cxx | 17 ++-- codemaker/source/javamaker/javatype.cxx | 132 +++++++++++++++------------ codemaker/source/javamaker/javatype.hxx | 8 +- 16 files changed, 238 insertions(+), 320 deletions(-) (limited to 'codemaker') diff --git a/codemaker/inc/codemaker/codemaker.hxx b/codemaker/inc/codemaker/codemaker.hxx index c7aebf8f23bc..a1c3a14eea6c 100644 --- a/codemaker/inc/codemaker/codemaker.hxx +++ b/codemaker/inc/codemaker/codemaker.hxx @@ -23,6 +23,7 @@ #include "sal/config.h" #include "codemaker/unotype.hxx" #include "registry/types.h" +#include "rtl/ref.hxx" #include "sal/types.h" #include @@ -38,7 +39,7 @@ namespace codemaker { rtl::OString convertString(rtl::OUString const & string); codemaker::UnoType::Sort decomposeAndResolve( - TypeManager const & manager, rtl::OString const & type, + rtl::Reference< TypeManager > const & manager, rtl::OString const & type, bool resolveTypedefs, bool allowVoid, bool allowExtraEntities, RTTypeClass * typeClass, rtl::OString * name, sal_Int32 * rank, std::vector< rtl::OString > * arguments); diff --git a/codemaker/inc/codemaker/dependencies.hxx b/codemaker/inc/codemaker/dependencies.hxx index b46e7f35d1c3..157939208e5b 100644 --- a/codemaker/inc/codemaker/dependencies.hxx +++ b/codemaker/inc/codemaker/dependencies.hxx @@ -20,6 +20,9 @@ #ifndef INCLUDED_CODEMAKER_DEPENDENCIES_HXX #define INCLUDED_CODEMAKER_DEPENDENCIES_HXX +#include "sal/config.h" + +#include "rtl/ref.hxx" #include "rtl/string.hxx" #include @@ -58,7 +61,9 @@ public: type, polymorphic struct type template, exception type, interface type, typedef, module, constant group, service, or singleton */ - Dependencies(TypeManager const & manager, rtl::OString const & type); + Dependencies( + rtl::Reference< TypeManager > const & manager, + rtl::OString const & type); ~Dependencies(); diff --git a/codemaker/inc/codemaker/exceptiontree.hxx b/codemaker/inc/codemaker/exceptiontree.hxx index e6fded6af3c8..fed0e5b9e4d7 100644 --- a/codemaker/inc/codemaker/exceptiontree.hxx +++ b/codemaker/inc/codemaker/exceptiontree.hxx @@ -21,6 +21,7 @@ #define INCLUDED_CODEMAKER_EXCEPTIONTREE_HXX #include "codemaker/global.hxx" +#include "rtl/ref.hxx" #include "rtl/string.hxx" #include @@ -92,7 +93,9 @@ public: if different calls to this member function use different, incompatible type managers */ - void add(rtl::OString const & name, TypeManager const & manager) + void add( + rtl::OString const & name, + rtl::Reference< TypeManager > const & manager) throw( CannotDumpException ); /** diff --git a/codemaker/inc/codemaker/typemanager.hxx b/codemaker/inc/codemaker/typemanager.hxx index 2024f8c42ddb..1b16115b85da 100644 --- a/codemaker/inc/codemaker/typemanager.hxx +++ b/codemaker/inc/codemaker/typemanager.hxx @@ -23,6 +23,7 @@ #include "codemaker/global.hxx" #include "registry/registry.hxx" #include "registry/types.h" +#include "salhelper/simplereferenceobject.hxx" #include #include @@ -42,91 +43,10 @@ typedef ::boost::unordered_map EqualString > T2TypeClassMap; -struct TypeManagerImpl -{ - TypeManagerImpl() - : m_refCount(0) - {} - - sal_Int32 m_refCount; -}; - -class TypeManager +class TypeManager : public salhelper::SimpleReferenceObject { public: TypeManager(); - virtual ~TypeManager(); - - TypeManager( const TypeManager& value ) - : m_pImpl( value.m_pImpl ) - { - acquire(); - } - - TypeManager& operator = ( const TypeManager& value ) - { - release(); - m_pImpl = value.m_pImpl; - acquire(); - return *this; - } - - virtual sal_Bool isValidType(const ::rtl::OString&) const - { return sal_False; } - - virtual ::rtl::OString getTypeName(RegistryKey&) const - { return ::rtl::OString(); } - - virtual RegistryKey getTypeKey(const ::rtl::OString&, sal_Bool * = 0 ) const - { return RegistryKey(); } - virtual RegistryKeyList getTypeKeys(const ::rtl::OString&) const - { return RegistryKeyList(); } - virtual typereg::Reader getTypeReader( - const ::rtl::OString& name, sal_Bool * pIsExtraType = 0 ) const = 0; - virtual typereg::Reader getTypeReader(RegistryKey& rTypeKey) const = 0; - virtual RTTypeClass getTypeClass(const ::rtl::OString&) const - { return RT_TYPE_INVALID; } - virtual RTTypeClass getTypeClass(RegistryKey&) const - { return RT_TYPE_INVALID; } - - virtual void setBase(const ::rtl::OString&) {} - virtual ::rtl::OString getBase() const { return ::rtl::OString(); } - - virtual sal_Int32 getSize() const { return 0; } - - static sal_Bool isBaseType(const ::rtl::OString& name); -protected: - sal_Int32 acquire(); - sal_Int32 release(); - -protected: - TypeManagerImpl* m_pImpl; -}; - -struct RegistryTypeManagerImpl -{ - RegistryTypeManagerImpl() - : m_base("/") - {} - - T2TypeClassMap m_t2TypeClass; - RegistryList m_registries; - RegistryList m_extra_registries; - ::rtl::OString m_base; -}; - -class RegistryTypeManager : public TypeManager -{ -public: - RegistryTypeManager(); - virtual ~RegistryTypeManager(); - - RegistryTypeManager( const RegistryTypeManager& value ) - : TypeManager(value) - , m_pImpl( value.m_pImpl ) - { - acquire(); - } sal_Bool init(const StringVector& regFiles, const StringVector& extraFiles = StringVector() ); @@ -145,19 +65,23 @@ public: RTTypeClass getTypeClass(RegistryKey& rTypeKey) const; void setBase(const ::rtl::OString& base); - ::rtl::OString getBase() const { return m_pImpl->m_base; } + ::rtl::OString getBase() const { return m_base; } + + sal_Int32 getSize() const { return m_t2TypeClass.size(); } + + static sal_Bool isBaseType(const ::rtl::OString& name); + +private: + virtual ~TypeManager(); - sal_Int32 getSize() const { return m_pImpl->m_t2TypeClass.size(); } -protected: RegistryKey searchTypeKey( const ::rtl::OString& name, sal_Bool * pIsExtraType = 0 ) const; void freeRegistries(); - void acquire(); - void release(); - -protected: - RegistryTypeManagerImpl* m_pImpl; + mutable T2TypeClassMap m_t2TypeClass; + RegistryList m_registries; + RegistryList m_extra_registries; + ::rtl::OString m_base; }; #endif // INCLUDED_CODEMAKER_TYPEMANAGER_HXX diff --git a/codemaker/source/codemaker/codemaker.cxx b/codemaker/source/codemaker/codemaker.cxx index bf5b618076d2..b797a2c47358 100644 --- a/codemaker/source/codemaker/codemaker.cxx +++ b/codemaker/source/codemaker/codemaker.cxx @@ -63,7 +63,7 @@ rtl::OString convertString(rtl::OUString const & string) { } codemaker::UnoType::Sort decomposeAndResolve( - TypeManager const & manager, rtl::OString const & type, + rtl::Reference< TypeManager > const & manager, rtl::OString const & type, bool resolveTypedefs, bool allowVoid, bool allowExtraEntities, RTTypeClass * typeClass, rtl::OString * name, sal_Int32 * rank, std::vector< rtl::OString > * arguments) @@ -95,7 +95,7 @@ codemaker::UnoType::Sort decomposeAndResolve( return sort; case codemaker::UnoType::SORT_COMPLEX: - typereg::Reader reader(manager.getTypeReader(*name)); + typereg::Reader reader(manager->getTypeReader(*name)); *typeClass = reader.getTypeClass(); switch (*typeClass) { case RT_TYPE_ENUM: diff --git a/codemaker/source/codemaker/dependencies.cxx b/codemaker/source/codemaker/dependencies.cxx index f3baf1ce10b9..d920ac4e7119 100644 --- a/codemaker/source/codemaker/dependencies.cxx +++ b/codemaker/source/codemaker/dependencies.cxx @@ -42,7 +42,7 @@ struct Bad {}; } Dependencies::Dependencies( - TypeManager const & manager, rtl::OString const & type): + rtl::Reference< TypeManager > const & manager, rtl::OString const & type): m_voidDependency(false), m_booleanDependency(false), m_byteDependency(false), m_shortDependency(false), m_unsignedShortDependency(false), m_longDependency(false), @@ -52,7 +52,7 @@ Dependencies::Dependencies( m_stringDependency(false), m_typeDependency(false), m_anyDependency(false), m_sequenceDependency(false) { - typereg::Reader reader(manager.getTypeReader(type)); + typereg::Reader reader(manager->getTypeReader(type)); m_valid = reader.isValid(); if (m_valid) { // Not everything is checked for consistency, just things that are cheap diff --git a/codemaker/source/codemaker/exceptiontree.cxx b/codemaker/source/codemaker/exceptiontree.cxx index 8ec6f1f2e727..52f968493274 100644 --- a/codemaker/source/codemaker/exceptiontree.cxx +++ b/codemaker/source/codemaker/exceptiontree.cxx @@ -47,7 +47,8 @@ void ExceptionTreeNode::clearChildren() { children.clear(); } -void ExceptionTree::add(rtl::OString const & name, TypeManager const & manager) +void ExceptionTree::add( + rtl::OString const & name, rtl::Reference< TypeManager > const & manager) throw( CannotDumpException ) { typedef std::vector< rtl::OString > OStringList; @@ -59,7 +60,7 @@ void ExceptionTree::add(rtl::OString const & name, TypeManager const & manager) break; } stringlist.push_back(n); - typereg::Reader reader(manager.getTypeReader(n)); + typereg::Reader reader(manager->getTypeReader(n)); if (!reader.isValid()) throw CannotDumpException( ::rtl::OString("Unknown type '" + n.replace('/', '.') diff --git a/codemaker/source/codemaker/typemanager.cxx b/codemaker/source/codemaker/typemanager.cxx index 4e53e5fe5af3..116684dbfb66 100644 --- a/codemaker/source/codemaker/typemanager.cxx +++ b/codemaker/source/codemaker/typemanager.cxx @@ -28,32 +28,6 @@ using ::rtl::OString; using ::rtl::OStringToOUString; using ::rtl::OUStringToOString; -TypeManager::TypeManager() -{ - m_pImpl = new TypeManagerImpl(); - acquire(); -} - -TypeManager::~TypeManager() -{ - release(); -} - -sal_Int32 TypeManager::acquire() -{ - return osl_atomic_increment(&m_pImpl->m_refCount); -} - -sal_Int32 TypeManager::release() -{ - sal_Int32 refCount = 0; - if (0 == (refCount = osl_atomic_decrement(&m_pImpl->m_refCount)) ) - { - delete m_pImpl; - } - return refCount; -} - sal_Bool TypeManager::isBaseType(const ::rtl::OString& name) { if ( name == "short" ) @@ -90,33 +64,14 @@ sal_Bool TypeManager::isBaseType(const ::rtl::OString& name) return sal_False; } -RegistryTypeManager::RegistryTypeManager() -{ - m_pImpl = new RegistryTypeManagerImpl(); - acquire(); -} +TypeManager::TypeManager() {} -RegistryTypeManager::~RegistryTypeManager() -{ - release(); -} - -void RegistryTypeManager::acquire() -{ - TypeManager::acquire(); -} - -void RegistryTypeManager::release() +TypeManager::~TypeManager() { - if (0 == TypeManager::release()) - { - freeRegistries(); - - delete m_pImpl; - } + freeRegistries(); } -sal_Bool RegistryTypeManager::init( +sal_Bool TypeManager::init( const StringVector& regFiles, StringVector const & extraFiles ) { @@ -129,7 +84,7 @@ sal_Bool RegistryTypeManager::init( while (iter != regFiles.end()) { if (!tmpReg.open( convertToFileUrl(*iter), REG_READONLY)) - m_pImpl->m_registries.push_back(new Registry(tmpReg)); + m_registries.push_back(new Registry(tmpReg)); else { freeRegistries(); @@ -141,7 +96,7 @@ sal_Bool RegistryTypeManager::init( while (iter != extraFiles.end()) { if (!tmpReg.open( convertToFileUrl(*iter), REG_READONLY)) - m_pImpl->m_extra_registries.push_back(new Registry(tmpReg)); + m_extra_registries.push_back(new Registry(tmpReg)); else { freeRegistries(); @@ -153,11 +108,11 @@ sal_Bool RegistryTypeManager::init( return sal_True; } -::rtl::OString RegistryTypeManager::getTypeName(RegistryKey& rTypeKey) const +::rtl::OString TypeManager::getTypeName(RegistryKey& rTypeKey) const { OString typeName = OUStringToOString(rTypeKey.getName(), RTL_TEXTENCODING_UTF8); - if (m_pImpl->m_base.getLength() > 1) + if (m_base.getLength() > 1) typeName = typeName.copy(typeName.indexOf('/', 1) + 1); else typeName = typeName.copy(1); @@ -165,7 +120,7 @@ sal_Bool RegistryTypeManager::init( return typeName; } -typereg::Reader RegistryTypeManager::getTypeReader( +typereg::Reader TypeManager::getTypeReader( const OString& name, sal_Bool * pIsExtraType ) const { typereg::Reader reader; @@ -190,7 +145,7 @@ typereg::Reader RegistryTypeManager::getTypeReader( return reader; } -typereg::Reader RegistryTypeManager::getTypeReader(RegistryKey& rTypeKey) const +typereg::Reader TypeManager::getTypeReader(RegistryKey& rTypeKey) const { typereg::Reader reader; @@ -214,11 +169,11 @@ typereg::Reader RegistryTypeManager::getTypeReader(RegistryKey& rTypeKey) const } -RTTypeClass RegistryTypeManager::getTypeClass(const OString& name) const +RTTypeClass TypeManager::getTypeClass(const OString& name) const { - if (m_pImpl->m_t2TypeClass.count(name) > 0) + if (m_t2TypeClass.count(name) > 0) { - return m_pImpl->m_t2TypeClass[name]; + return m_t2TypeClass[name]; } else { RegistryKey key(searchTypeKey(name)); @@ -240,7 +195,7 @@ RTTypeClass RegistryTypeManager::getTypeClass(const OString& name) const rtl_freeMemory(pBuffer); - m_pImpl->m_t2TypeClass[name] = ret; + m_t2TypeClass[name] = ret; return ret; } rtl_freeMemory(pBuffer); @@ -251,13 +206,13 @@ RTTypeClass RegistryTypeManager::getTypeClass(const OString& name) const return RT_TYPE_INVALID; } -RTTypeClass RegistryTypeManager::getTypeClass(RegistryKey& rTypeKey) const +RTTypeClass TypeManager::getTypeClass(RegistryKey& rTypeKey) const { OString name = getTypeName(rTypeKey); - if (m_pImpl->m_t2TypeClass.count(name) > 0) + if (m_t2TypeClass.count(name) > 0) { - return m_pImpl->m_t2TypeClass[name]; + return m_t2TypeClass[name]; } else { if (rTypeKey.isValid()) @@ -277,7 +232,7 @@ RTTypeClass RegistryTypeManager::getTypeClass(RegistryKey& rTypeKey) const rtl_freeMemory(pBuffer); - m_pImpl->m_t2TypeClass[name] = ret; + m_t2TypeClass[name] = ret; return ret; } rtl_freeMemory(pBuffer); @@ -288,39 +243,39 @@ RTTypeClass RegistryTypeManager::getTypeClass(RegistryKey& rTypeKey) const return RT_TYPE_INVALID; } -void RegistryTypeManager::setBase(const OString& base) +void TypeManager::setBase(const OString& base) { if (base.lastIndexOf('/') == (base.getLength() - 1)) - m_pImpl->m_base += base.copy(0, base.lastIndexOf('/') - 1); + m_base += base.copy(0, base.lastIndexOf('/') - 1); else - m_pImpl->m_base += base; + m_base += base; } -void RegistryTypeManager::freeRegistries() +void TypeManager::freeRegistries() { - RegistryList::const_iterator iter = m_pImpl->m_registries.begin(); - while (iter != m_pImpl->m_registries.end()) + RegistryList::const_iterator iter = m_registries.begin(); + while (iter != m_registries.end()) { delete *iter; ++iter; } - iter = m_pImpl->m_extra_registries.begin(); - while (iter != m_pImpl->m_extra_registries.end()) + iter = m_extra_registries.begin(); + while (iter != m_extra_registries.end()) { delete *iter; ++iter; } } -RegistryKey RegistryTypeManager::searchTypeKey(const OString& name_, sal_Bool * pIsExtraType ) +RegistryKey TypeManager::searchTypeKey(const OString& name_, sal_Bool * pIsExtraType ) const { - OUString name( OStringToOUString(m_pImpl->m_base + "/" + name_, RTL_TEXTENCODING_UTF8) ); + OUString name( OStringToOUString(m_base + "/" + name_, RTL_TEXTENCODING_UTF8) ); RegistryKey key, rootKey; - RegistryList::const_iterator iter = m_pImpl->m_registries.begin(); - while (iter != m_pImpl->m_registries.end()) + RegistryList::const_iterator iter = m_registries.begin(); + while (iter != m_registries.end()) { if (!(*iter)->openRootKey(rootKey)) { @@ -333,8 +288,8 @@ RegistryKey RegistryTypeManager::searchTypeKey(const OString& name_, sal_Bool * } ++iter; } - iter = m_pImpl->m_extra_registries.begin(); - while (iter != m_pImpl->m_extra_registries.end()) + iter = m_extra_registries.begin(); + while (iter != m_extra_registries.end()) { if (!(*iter)->openRootKey(rootKey)) { @@ -351,24 +306,24 @@ RegistryKey RegistryTypeManager::searchTypeKey(const OString& name_, sal_Bool * return key; } -RegistryKeyList RegistryTypeManager::getTypeKeys(const ::rtl::OString& name_) const +RegistryKeyList TypeManager::getTypeKeys(const ::rtl::OString& name_) const { RegistryKeyList keyList= RegistryKeyList(); OString tmpName; - if ( name_ == "/" || name_ == m_pImpl->m_base ) { - tmpName = m_pImpl->m_base; + if ( name_ == "/" || name_ == m_base ) { + tmpName = m_base; } else { - if ( m_pImpl->m_base == "/" ) + if ( m_base == "/" ) tmpName = name_; else - tmpName = m_pImpl->m_base + "/" + name_; + tmpName = m_base + "/" + name_; } OUString name( OStringToOUString(tmpName, RTL_TEXTENCODING_UTF8) ); RegistryKey key, rootKey; - RegistryList::const_iterator iter = m_pImpl->m_registries.begin(); - while (iter != m_pImpl->m_registries.end()) + RegistryList::const_iterator iter = m_registries.begin(); + while (iter != m_registries.end()) { if (!(*iter)->openRootKey(rootKey)) { @@ -379,8 +334,8 @@ RegistryKeyList RegistryTypeManager::getTypeKeys(const ::rtl::OString& name_) co } ++iter; } - iter = m_pImpl->m_extra_registries.begin(); - while (iter != m_pImpl->m_extra_registries.end()) + iter = m_extra_registries.begin(); + while (iter != m_extra_registries.end()) { if (!(*iter)->openRootKey(rootKey)) { diff --git a/codemaker/source/cppumaker/cppumaker.cxx b/codemaker/source/cppumaker/cppumaker.cxx index 38b8cce2f00d..d18a952502e1 100644 --- a/codemaker/source/cppumaker/cppumaker.cxx +++ b/codemaker/source/cppumaker/cppumaker.cxx @@ -20,6 +20,7 @@ #include +#include "rtl/ref.hxx" #include "sal/main.h" #include "codemaker/typemanager.hxx" @@ -40,17 +41,19 @@ void failed(rtl::OString const & typeName, CppuOptions * options) { } void produce( - RegistryKey& rTypeKey, bool bIsExtraType, TypeManager const & typeMgr, + RegistryKey& rTypeKey, bool bIsExtraType, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, CppuOptions * options) { if (!produceType(rTypeKey, bIsExtraType, typeMgr, generated, options)) { - OString typeName = typeMgr.getTypeName(rTypeKey); + OString typeName = typeMgr->getTypeName(rTypeKey); failed(typeName, options); } } void produce( - rtl::OString const & typeName, TypeManager const & typeMgr, + rtl::OString const & typeName, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, CppuOptions * options) { if (!produceType(typeName, typeMgr, generated, options)) { @@ -59,17 +62,17 @@ void produce( } void produceAllTypes(RegistryKey& rTypeKey, bool bIsExtraType, - TypeManager const & typeMgr, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, CppuOptions* pOptions, sal_Bool bFullScope) throw( CannotDumpException ) { - OString typeName = typeMgr.getTypeName(rTypeKey); + OString typeName = typeMgr->getTypeName(rTypeKey); produce(rTypeKey, bIsExtraType, typeMgr, generated, pOptions); - RegistryKeyList typeKeys = typeMgr.getTypeKeys(typeName); + RegistryKeyList typeKeys = typeMgr->getTypeKeys(typeName); RegistryKeyList::const_iterator iter = typeKeys.begin(); RegistryKey key, subKey; RegistryKeyArray subKeys; @@ -100,7 +103,7 @@ void produceAllTypes(RegistryKey& rTypeKey, bool bIsExtraType, } void produceAllTypes(const OString& typeName, - TypeManager const & typeMgr, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, CppuOptions* pOptions, sal_Bool bFullScope) @@ -108,7 +111,7 @@ void produceAllTypes(const OString& typeName, { produce(typeName, typeMgr, generated, pOptions); - RegistryKeyList typeKeys = typeMgr.getTypeKeys(typeName); + RegistryKeyList typeKeys = typeMgr->getTypeKeys(typeName); RegistryKeyList::const_iterator iter = typeKeys.begin(); RegistryKey key, subKey; RegistryKeyArray subKeys; @@ -156,9 +159,9 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) exit(99); } - RegistryTypeManager typeMgr; + rtl::Reference< TypeManager > typeMgr(new TypeManager); - if (!typeMgr.init(options.getInputFiles(), options.getExtraInputFiles())) + if (!typeMgr->init(options.getInputFiles(), options.getExtraInputFiles())) { fprintf(stderr, "%s : init registries failed, check your registry files.\n", options.getProgramName().getStr()); exit(99); @@ -166,7 +169,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) if (options.isValid("-B")) { - typeMgr.setBase(options.getOption("-B")); + typeMgr->setBase(options.getOption("-B")); } codemaker::GeneratedTypeSet generated; 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; } diff --git a/codemaker/source/cppumaker/cpputype.hxx b/codemaker/source/cppumaker/cpputype.hxx index b80b3d822e60..09d0e5130ffa 100644 --- a/codemaker/source/cppumaker/cpputype.hxx +++ b/codemaker/source/cppumaker/cpputype.hxx @@ -26,6 +26,7 @@ #include "codemaker/commoncpp.hxx" #include "registry/reader.hxx" #include "registry/types.h" +#include "rtl/ref.hxx" #include "rtl/string.hxx" namespace rtl { class OUString; } @@ -50,7 +51,7 @@ class CppuType public: CppuType(typereg::Reader& typeReader, const ::rtl::OString& typeName, - const TypeManager& typeMgr); + rtl::Reference< TypeManager > const & typeMgr); virtual ~CppuType(); @@ -144,7 +145,7 @@ protected: ::rtl::OString m_typeName; ::rtl::OString m_name; typereg::Reader m_reader; - TypeManager const & m_typeMgr; + rtl::Reference< TypeManager > m_typeMgr; codemaker::Dependencies m_dependencies; private: @@ -157,7 +158,7 @@ class InterfaceType : public CppuType public: InterfaceType(typereg::Reader& typeReader, const ::rtl::OString& typeName, - const TypeManager& typeMgr); + rtl::Reference< TypeManager > const & typeMgr); virtual ~InterfaceType(); @@ -218,7 +219,7 @@ class ConstantsType : public CppuType public: ConstantsType(typereg::Reader& typeReader, const ::rtl::OString& typeName, - const TypeManager& typeMgr); + rtl::Reference< TypeManager > const & typeMgr); virtual ~ConstantsType(); @@ -235,7 +236,7 @@ class ModuleType : public ConstantsType public: ModuleType(typereg::Reader& typeReader, const ::rtl::OString& typeName, - const TypeManager& typeMgr); + rtl::Reference< TypeManager > const & typeMgr); virtual ~ModuleType(); @@ -248,7 +249,7 @@ class StructureType : public CppuType public: StructureType(typereg::Reader& typeReader, const ::rtl::OString& typeName, - const TypeManager& typeMgr); + rtl::Reference< TypeManager > const & typeMgr); virtual ~StructureType(); @@ -286,7 +287,7 @@ class ExceptionType : public CppuType public: ExceptionType(typereg::Reader& typeReader, const ::rtl::OString& typeName, - const TypeManager& typeMgr); + rtl::Reference< TypeManager > const & typeMgr); virtual ~ExceptionType(); @@ -302,7 +303,7 @@ class EnumType : public CppuType public: EnumType(typereg::Reader& typeReader, const ::rtl::OString& typeName, - const TypeManager& typeMgr); + rtl::Reference< TypeManager > const & typeMgr); virtual ~EnumType(); @@ -319,7 +320,7 @@ class TypeDefType : public CppuType public: TypeDefType(typereg::Reader& typeReader, const ::rtl::OString& typeName, - const TypeManager& typeMgr); + rtl::Reference< TypeManager > const & typeMgr); virtual ~TypeDefType(); @@ -332,7 +333,7 @@ class ConstructiveType: public CppuType { public: ConstructiveType( typereg::Reader & reader, rtl::OString const & name, - TypeManager const & manager): + rtl::Reference< TypeManager > const & manager): CppuType(reader, name, manager) {} virtual sal_Bool dumpHFile( @@ -347,7 +348,7 @@ class ServiceType: public ConstructiveType { public: ServiceType( typereg::Reader & reader, rtl::OString const & name, - TypeManager const & manager): + rtl::Reference< TypeManager > const & manager): ConstructiveType(reader, name, manager) {} bool isSingleInterfaceBased(); @@ -371,7 +372,7 @@ class SingletonType: public ConstructiveType { public: SingletonType( typereg::Reader & reader, rtl::OString const & name, - TypeManager const & manager): + rtl::Reference< TypeManager > const & manager): ConstructiveType(reader, name, manager) {} bool isInterfaceBased(); @@ -382,13 +383,13 @@ public: }; bool produceType(const ::rtl::OString& typeName, - TypeManager const & typeMgr, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, CppuOptions* pOptions) throw( CannotDumpException ); bool produceType(RegistryKey& typeName, bool bIsExtraType, - TypeManager const & typeMgr, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, CppuOptions* pOptions) throw( CannotDumpException ); diff --git a/codemaker/source/cppumaker/includes.cxx b/codemaker/source/cppumaker/includes.cxx index 9ee0eb54fd3b..0b0f83b869b7 100644 --- a/codemaker/source/cppumaker/includes.cxx +++ b/codemaker/source/cppumaker/includes.cxx @@ -28,6 +28,7 @@ #include "codemaker/unotype.hxx" #include "osl/diagnose.h" +#include "rtl/ref.hxx" #include "rtl/string.hxx" #include "rtl/ustring.hxx" #include "sal/types.h" @@ -37,8 +38,8 @@ using codemaker::cppumaker::Includes; Includes::Includes( - TypeManager const & manager, codemaker::Dependencies const & dependencies, - bool hpp): + rtl::Reference< TypeManager > const & manager, + codemaker::Dependencies const & dependencies, bool hpp): m_manager(manager), m_map(dependencies.getMap()), m_hpp(hpp), m_includeCassert(false), m_includeAny(dependencies.hasAnyDependency()), m_includeReference(false), @@ -275,7 +276,7 @@ void Includes::dumpInclude( } bool Includes::isInterfaceType(rtl::OString const & registryType) const { - return m_manager.getTypeClass(registryType) == RT_TYPE_INTERFACE; + return m_manager->getTypeClass(registryType) == RT_TYPE_INTERFACE; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/codemaker/source/cppumaker/includes.hxx b/codemaker/source/cppumaker/includes.hxx index dafc659211a4..8fdf44589844 100644 --- a/codemaker/source/cppumaker/includes.hxx +++ b/codemaker/source/cppumaker/includes.hxx @@ -21,6 +21,7 @@ #define INCLUDED_CODEMAKER_SOURCE_CPPUMAKER_INCLUDES_HXX #include "codemaker/dependencies.hxx" +#include "rtl/ref.hxx" #include "rtl/ustring.hxx" class FileStream; @@ -31,7 +32,7 @@ namespace codemaker { namespace cppumaker { class Includes { public: Includes( - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, codemaker::Dependencies const & dependencies, bool hpp); ~Includes(); @@ -70,7 +71,7 @@ private: bool isInterfaceType(rtl::OString const & registryType) const; - TypeManager const & m_manager; + rtl::Reference< TypeManager > m_manager; codemaker::Dependencies::Map m_map; bool m_hpp; bool m_includeCassert; diff --git a/codemaker/source/javamaker/javamaker.cxx b/codemaker/source/javamaker/javamaker.cxx index 182eb2d6c13b..549913f9177c 100644 --- a/codemaker/source/javamaker/javamaker.cxx +++ b/codemaker/source/javamaker/javamaker.cxx @@ -20,6 +20,7 @@ #include +#include "rtl/ref.hxx" #include "sal/main.h" #include "codemaker/typemanager.hxx" @@ -30,13 +31,13 @@ using ::rtl::OUString; using ::rtl::OString; sal_Bool produceAllTypes(RegistryKey& rTypeKey, sal_Bool bIsExtraType, - TypeManager const & typeMgr, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, JavaOptions* pOptions, sal_Bool bFullScope) throw( CannotDumpException ) { - OString typeName = typeMgr.getTypeName(rTypeKey); + OString typeName = typeMgr->getTypeName(rTypeKey); if (!produceType(rTypeKey, bIsExtraType, typeMgr, generated, pOptions)) { @@ -46,7 +47,7 @@ sal_Bool produceAllTypes(RegistryKey& rTypeKey, sal_Bool bIsExtraType, exit(99); } - RegistryKeyList typeKeys = typeMgr.getTypeKeys(typeName); + RegistryKeyList typeKeys = typeMgr->getTypeKeys(typeName); RegistryKeyList::const_iterator iter = typeKeys.begin(); RegistryKey key, subKey; RegistryKeyArray subKeys; @@ -82,7 +83,7 @@ sal_Bool produceAllTypes(RegistryKey& rTypeKey, sal_Bool bIsExtraType, } sal_Bool produceAllTypes(const OString& typeName, - TypeManager const & typeMgr, + rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, JavaOptions* pOptions, sal_Bool bFullScope) @@ -96,7 +97,7 @@ sal_Bool produceAllTypes(const OString& typeName, exit(99); } - RegistryKeyList typeKeys = typeMgr.getTypeKeys(typeName); + RegistryKeyList typeKeys = typeMgr->getTypeKeys(typeName); RegistryKeyList::const_iterator iter = typeKeys.begin(); RegistryKey key, subKey; RegistryKeyArray subKeys; @@ -147,9 +148,9 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) exit(99); } - RegistryTypeManager typeMgr; + rtl::Reference< TypeManager > typeMgr(new TypeManager); - if (!typeMgr.init(options.getInputFiles(), options.getExtraInputFiles())) + if (!typeMgr->init(options.getInputFiles(), options.getExtraInputFiles())) { fprintf(stderr, "%s : init registries failed, check your registry files.\n", options.getProgramName().getStr()); exit(99); @@ -157,7 +158,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) if (options.isValid("-B")) { - typeMgr.setBase(options.getOption("-B")); + typeMgr->setBase(options.getOption("-B")); } try diff --git a/codemaker/source/javamaker/javatype.cxx b/codemaker/source/javamaker/javatype.cxx index 247d5eb8647e..61366192a04f 100644 --- a/codemaker/source/javamaker/javatype.cxx +++ b/codemaker/source/javamaker/javatype.cxx @@ -35,6 +35,7 @@ #include "registry/reader.hxx" #include "registry/refltype.hxx" #include "registry/types.h" +#include "rtl/ref.hxx" #include "rtl/strbuf.hxx" #include "rtl/string.h" #include "rtl/string.hxx" @@ -58,7 +59,7 @@ namespace { // helper function for createUnoName void appendUnoName( - TypeManager const & manager, rtl::OString const & nucleus, sal_Int32 rank, + rtl::Reference< TypeManager > const & manager, rtl::OString const & nucleus, sal_Int32 rank, std::vector< rtl::OString > const & arguments, rtl::OStringBuffer * buffer) { OSL_ASSERT(rank >= 0 && buffer != 0); @@ -91,7 +92,7 @@ void appendUnoName( // type, polymorphic struct type template, or interface type, decomposed into // nucleus, rank, and arguments) into a core UNO type name: rtl::OString createUnoName( - TypeManager const & manager, rtl::OString const & nucleus, sal_Int32 rank, + rtl::Reference< TypeManager > const & manager, rtl::OString const & nucleus, sal_Int32 rank, std::vector< rtl::OString > const & arguments) { rtl::OStringBuffer buf; @@ -138,14 +139,15 @@ struct PolymorphicUnoType { }; SpecialType translateUnoTypeToDescriptor( - TypeManager const & manager, rtl::OString const & type, bool array, - bool classType, Dependencies * dependencies, + rtl::Reference< TypeManager > const & manager, rtl::OString const & type, + bool array, bool classType, Dependencies * dependencies, rtl::OStringBuffer * descriptor, rtl::OStringBuffer * signature, bool * needsSignature, PolymorphicUnoType * polymorphicUnoType); SpecialType translateUnoTypeToDescriptor( - TypeManager const & manager, codemaker::UnoType::Sort sort, - RTTypeClass typeClass, rtl::OString const & nucleus, sal_Int32 rank, + rtl::Reference< TypeManager > const & manager, + codemaker::UnoType::Sort sort, RTTypeClass typeClass, + rtl::OString const & nucleus, sal_Int32 rank, std::vector< rtl::OString > const & arguments, bool array, bool classType, Dependencies * dependencies, rtl::OStringBuffer * descriptor, rtl::OStringBuffer * signature, bool * needsSignature, @@ -258,8 +260,8 @@ SpecialType translateUnoTypeToDescriptor( } SpecialType translateUnoTypeToDescriptor( - TypeManager const & manager, rtl::OString const & type, bool array, - bool classType, Dependencies * dependencies, + rtl::Reference< TypeManager > const & manager, rtl::OString const & type, + bool array, bool classType, Dependencies * dependencies, rtl::OStringBuffer * descriptor, rtl::OStringBuffer * signature, bool * needsSignature, PolymorphicUnoType * polymorphicUnoType) { @@ -277,7 +279,7 @@ SpecialType translateUnoTypeToDescriptor( } SpecialType getFieldDescriptor( - TypeManager const & manager, Dependencies * dependencies, + rtl::Reference< TypeManager > const & manager, Dependencies * dependencies, rtl::OString const & type, rtl::OString * descriptor, rtl::OString * signature, PolymorphicUnoType * polymorphicUnoType) { @@ -302,8 +304,9 @@ SpecialType getFieldDescriptor( class MethodDescriptor { public: MethodDescriptor( - TypeManager const & manager, Dependencies * dependencies, - rtl::OString const & returnType, SpecialType * specialReturnType, + rtl::Reference< TypeManager > const & manager, + Dependencies * dependencies, rtl::OString const & returnType, + SpecialType * specialReturnType, PolymorphicUnoType * polymorphicUnoType); SpecialType addParameter( @@ -317,7 +320,7 @@ public: rtl::OString getSignature() const; private: - TypeManager const & m_manager; + rtl::Reference< TypeManager > m_manager; Dependencies * m_dependencies; rtl::OStringBuffer m_descriptorStart; rtl::OString m_descriptorEnd; @@ -327,7 +330,7 @@ private: }; MethodDescriptor::MethodDescriptor( - TypeManager const & manager, Dependencies * dependencies, + rtl::Reference< TypeManager > const & manager, Dependencies * dependencies, rtl::OString const & returnType, SpecialType * specialReturnType, PolymorphicUnoType * polymorphicUnoType): m_manager(manager), m_dependencies(dependencies), m_needsSignature(false) @@ -663,11 +666,12 @@ void addTypeInfo( } typedef void (* handleUnoTypeRegistryEntityFunction)( - TypeManager const & manager, JavaOptions /*TODO const*/ & options, - typereg::Reader const & reader, Dependencies * dependencies); + rtl::Reference< TypeManager > const & manager, + JavaOptions /*TODO const*/ & options, typereg::Reader const & reader, + Dependencies * dependencies); void handleEnumType( - SAL_UNUSED_PARAMETER TypeManager const &, + SAL_UNUSED_PARAMETER rtl::Reference< TypeManager > const &, JavaOptions /*TODO const*/ & options, typereg::Reader const & reader, SAL_UNUSED_PARAMETER Dependencies *) { @@ -838,7 +842,7 @@ void handleEnumType( } void addField( - TypeManager const & manager, Dependencies * dependencies, + rtl::Reference< TypeManager > const & manager, Dependencies * dependencies, ClassFile * classFile, std::vector< TypeInfo > * typeInfo, sal_Int32 typeParameterIndex, rtl::OString const & type, rtl::OString const & name, sal_Int32 index) @@ -864,10 +868,10 @@ void addField( } sal_uInt16 addFieldInit( - TypeManager const & manager, rtl::OString const & className, - rtl::OString const & fieldName, bool typeParameter, - rtl::OString const & fieldType, Dependencies * dependencies, - ClassFile::Code * code) + rtl::Reference< TypeManager > const & manager, + rtl::OString const & className, rtl::OString const & fieldName, + bool typeParameter, rtl::OString const & fieldType, + Dependencies * dependencies, ClassFile::Code * code) { OSL_ASSERT(dependencies != 0 && code != 0); if (typeParameter) { @@ -905,7 +909,7 @@ sal_uInt16 addFieldInit( case RT_TYPE_ENUM: { code->loadLocalReference(0); - typereg::Reader reader(manager.getTypeReader(nucleus)); + typereg::Reader reader(manager->getTypeReader(nucleus)); if (reader.getFieldCount() == 0) { throw CannotDumpException("Bad type information"); //TODO } @@ -981,8 +985,8 @@ sal_uInt16 addFieldInit( } sal_uInt16 addLoadLocal( - TypeManager const & manager, ClassFile::Code * code, sal_uInt16 * index, - bool typeParameter, rtl::OString const & type, bool any, + rtl::Reference< TypeManager > const & manager, ClassFile::Code * code, + sal_uInt16 * index, bool typeParameter, rtl::OString const & type, bool any, Dependencies * dependencies) { OSL_ASSERT( @@ -1321,13 +1325,13 @@ sal_uInt16 addLoadLocal( } void addBaseArguments( - TypeManager const & manager, Dependencies * dependencies, + rtl::Reference< TypeManager > const & manager, Dependencies * dependencies, MethodDescriptor * methodDescriptor, ClassFile::Code * code, RTTypeClass typeClass, rtl::OString const & type, sal_uInt16 * index) { OSL_ASSERT( dependencies != 0 && methodDescriptor != 0 && code != 0 && index != 0); - typereg::Reader reader(manager.getTypeReader(type)); + typereg::Reader reader(manager->getTypeReader(type)); if (!reader.isValid() || reader.getTypeClass() != typeClass || codemaker::convertString(reader.getTypeName()) != type || reader.getMethodCount() != 0 || reader.getReferenceCount() != 0) @@ -1373,7 +1377,7 @@ void addBaseArguments( } sal_uInt16 addDirectArgument( - TypeManager const & manager, Dependencies * dependencies, + rtl::Reference< TypeManager > const & manager, Dependencies * dependencies, MethodDescriptor * methodDescriptor, ClassFile::Code * code, sal_uInt16 * index, rtl::OString const & className, rtl::OString const & fieldName, bool typeParameter, @@ -1397,8 +1401,9 @@ sal_uInt16 addDirectArgument( } void handleAggregatingType( - TypeManager const & manager, JavaOptions /*TODO const*/ & options, - typereg::Reader const & reader, Dependencies * dependencies) + rtl::Reference< TypeManager > const & manager, + JavaOptions /*TODO const*/ & options, typereg::Reader const & reader, + Dependencies * dependencies) { OSL_ASSERT(dependencies != 0); if (reader.getMethodCount() != 0) @@ -1615,9 +1620,10 @@ void handleAggregatingType( } void createExceptionsAttribute( - TypeManager const & manager, typereg::Reader const & reader, - sal_uInt16 methodIndex, Dependencies * dependencies, - std::vector< rtl::OString > * exceptions, codemaker::ExceptionTree * tree) + rtl::Reference< TypeManager > const & manager, + typereg::Reader const & reader, sal_uInt16 methodIndex, + Dependencies * dependencies, std::vector< rtl::OString > * exceptions, + codemaker::ExceptionTree * tree) { OSL_ASSERT(dependencies != 0 && exceptions != 0); sal_uInt16 n = reader.getMethodExceptionCount(methodIndex); @@ -1634,8 +1640,9 @@ void createExceptionsAttribute( } void handleInterfaceType( - TypeManager const & manager, JavaOptions /*TODO const*/ & options, - typereg::Reader const & reader, Dependencies * dependencies) + rtl::Reference< TypeManager > const & manager, + JavaOptions /*TODO const*/ & options, typereg::Reader const & reader, + Dependencies * dependencies) { OSL_ASSERT(dependencies != 0); @@ -1855,7 +1862,7 @@ void handleInterfaceType( } void handleTypedef( - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, SAL_UNUSED_PARAMETER JavaOptions /*TODO const*/ &, typereg::Reader const & reader, Dependencies * dependencies) { @@ -1895,9 +1902,9 @@ void handleTypedef( } void addConstant( - TypeManager const & manager, typereg::Reader const & reader, - bool publishable, sal_uInt16 index, Dependencies * dependencies, - ClassFile * classFile) + rtl::Reference< TypeManager > const & manager, + typereg::Reader const & reader, bool publishable, sal_uInt16 index, + Dependencies * dependencies, ClassFile * classFile) { OSL_ASSERT(dependencies != 0 && classFile != 0); RTFieldAccess flags = reader.getFieldFlags(index); @@ -2010,8 +2017,9 @@ void addConstant( } void handleConstantGroup( - TypeManager const & manager, JavaOptions /*TODO const*/ & options, - typereg::Reader const & reader, Dependencies * dependencies) + rtl::Reference< TypeManager > const & manager, + JavaOptions /*TODO const*/ & options, typereg::Reader const & reader, + Dependencies * dependencies) { OSL_ASSERT(dependencies != 0); if (reader.getSuperTypeCount() != 0 || reader.getMethodCount() != 0 @@ -2037,8 +2045,9 @@ void handleConstantGroup( } void handleModule( - TypeManager const & manager, JavaOptions /*TODO const*/ & options, - typereg::Reader const & reader, Dependencies * dependencies) + rtl::Reference< TypeManager > const & manager, + JavaOptions /*TODO const*/ & options, typereg::Reader const & reader, + Dependencies * dependencies) { OSL_ASSERT(dependencies != 0); if (reader.getSuperTypeCount() != 0 || reader.getMethodCount() != 0 @@ -2084,11 +2093,12 @@ void addExceptionHandlers( } void addConstructor( - TypeManager const & manager, rtl::OString const & realJavaBaseName, - rtl::OString const & unoName, rtl::OString const & className, - typereg::Reader const & reader, sal_uInt16 methodIndex, - rtl::OString const & methodName, rtl::OString const & returnType, - bool defaultConstructor, Dependencies * dependencies, ClassFile * classFile) + rtl::Reference< TypeManager > const & manager, + rtl::OString const & realJavaBaseName, rtl::OString const & unoName, + rtl::OString const & className, typereg::Reader const & reader, + sal_uInt16 methodIndex, rtl::OString const & methodName, + rtl::OString const & returnType, bool defaultConstructor, + Dependencies * dependencies, ClassFile * classFile) { OSL_ASSERT(dependencies != 0 && classFile != 0); MethodDescriptor desc(manager, dependencies, returnType, 0, 0); @@ -2230,8 +2240,9 @@ void addConstructor( } void handleService( - TypeManager const & manager, JavaOptions /*TODO const*/ & options, - typereg::Reader const & reader, Dependencies * dependencies) + rtl::Reference< TypeManager > const & manager, + JavaOptions /*TODO const*/ & options, typereg::Reader const & reader, + Dependencies * dependencies) { OSL_ASSERT(dependencies != 0); sal_uInt16 superTypes = reader.getSuperTypeCount(); @@ -2347,8 +2358,9 @@ void handleService( } void handleSingleton( - TypeManager const & manager, JavaOptions /*TODO const*/ & options, - typereg::Reader const & reader, Dependencies * dependencies) + rtl::Reference< TypeManager > const & manager, + JavaOptions /*TODO const*/ & options, typereg::Reader const & reader, + Dependencies * dependencies) { OSL_ASSERT(dependencies != 0); if (reader.getSuperTypeCount() != 1 || reader.getFieldCount() != 0 @@ -2359,7 +2371,7 @@ void handleSingleton( } rtl::OString base(codemaker::convertString(reader.getSuperTypeName(0))); rtl::OString realJavaBaseName(base.replace('/', '.')); - switch (manager.getTypeReader(base).getTypeClass()) { + switch (manager->getTypeReader(base).getTypeClass()) { case RT_TYPE_INTERFACE: break; @@ -2470,16 +2482,16 @@ void handleSingleton( } bool produceType( - rtl::OString const & type, TypeManager const & manager, + rtl::OString const & type, rtl::Reference< TypeManager > const & manager, codemaker::GeneratedTypeSet & generated, JavaOptions * options) { OSL_ASSERT(options != 0); - if (type == "/" || type == manager.getBase() || generated.contains(type)) + if (type == "/" || type == manager->getBase() || generated.contains(type)) { return true; } sal_Bool extra = sal_False; - typereg::Reader reader(manager.getTypeReader(type, &extra)); + typereg::Reader reader(manager->getTypeReader(type, &extra)); if (extra) { generated.add(type); return true; @@ -2540,17 +2552,19 @@ bool produceType( } bool produceType( - RegistryKey & rTypeKey, bool bIsExtraType, TypeManager const & manager, + RegistryKey & rTypeKey, bool bIsExtraType, + rtl::Reference< TypeManager > const & manager, codemaker::GeneratedTypeSet & generated, JavaOptions * options) { - ::rtl::OString typeName = manager.getTypeName(rTypeKey); + ::rtl::OString typeName = manager->getTypeName(rTypeKey); OSL_ASSERT(options != 0); - if (typeName == "/" || typeName == manager.getBase() || generated.contains(typeName)) + if (typeName == "/" || typeName == manager->getBase() + || generated.contains(typeName)) { return true; } - typereg::Reader reader(manager.getTypeReader(rTypeKey)); + typereg::Reader reader(manager->getTypeReader(rTypeKey)); if (bIsExtraType) { generated.add(typeName); return true; diff --git a/codemaker/source/javamaker/javatype.hxx b/codemaker/source/javamaker/javatype.hxx index c1da979b359f..5161628d8b82 100644 --- a/codemaker/source/javamaker/javatype.hxx +++ b/codemaker/source/javamaker/javatype.hxx @@ -20,6 +20,10 @@ #ifndef INCLUDED_CODEMAKER_SOURCE_JAVAMAKER_JAVATYPE_HXX #define INCLUDED_CODEMAKER_SOURCE_JAVAMAKER_JAVATYPE_HXX +#include "sal/config.h" + +#include "rtl/ref.hxx" + namespace codemaker { class GeneratedTypeSet; } namespace rtl { class OString; } class JavaOptions; @@ -27,10 +31,10 @@ class TypeManager; class RegistryKey; bool produceType( - rtl::OString const & type, TypeManager const & manager, + rtl::OString const & type, rtl::Reference< TypeManager > const & manager, codemaker::GeneratedTypeSet & generated, JavaOptions * pOptions); -bool produceType(RegistryKey& typeName, bool bIsExtraType, TypeManager const & typeMgr, +bool produceType(RegistryKey& typeName, bool bIsExtraType, rtl::Reference< TypeManager > const & typeMgr, codemaker::GeneratedTypeSet & generated, JavaOptions* pOptions); -- cgit