diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-03-26 14:59:34 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2013-03-27 09:36:54 +0100 |
commit | bb1f0c667f8b38bf27818fe1608beb4295d9c429 (patch) | |
tree | 36e98fecb1fb3fed8e28155763d858620c70fce1 | |
parent | aaaeec55c6ca86a4871a59e058f80498e898b29b (diff) |
Clean up codemaker/typemanager.hxx
Change-Id: I650efd6780070410eaf34993dd41ed1b8ada7c9a
29 files changed, 354 insertions, 788 deletions
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 <vector> @@ -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 <boost/unordered_map.hpp> @@ -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 <vector> @@ -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 <boost/unordered_map.hpp> #include <list> @@ -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 <stdio.h> +#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 <stdio.h> +#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); diff --git a/unodevtools/Executable_skeletonmaker.mk b/unodevtools/Executable_skeletonmaker.mk index 433ba38b85ff..1d00f3bcf978 100644 --- a/unodevtools/Executable_skeletonmaker.mk +++ b/unodevtools/Executable_skeletonmaker.mk @@ -54,7 +54,6 @@ $(eval $(call gb_Executable_use_static_libraries,uno-skeletonmaker,\ $(eval $(call gb_Executable_add_exception_objects,uno-skeletonmaker,\ unodevtools/source/unodevtools/options \ unodevtools/source/unodevtools/typeblob \ - unodevtools/source/unodevtools/typemanager \ unodevtools/source/skeletonmaker/skeletonmaker \ unodevtools/source/skeletonmaker/skeletoncommon \ unodevtools/source/skeletonmaker/javatypemaker \ diff --git a/unodevtools/inc/unodevtools/options.hxx b/unodevtools/inc/unodevtools/options.hxx index a321bc9db026..7c1a9c1d5236 100644 --- a/unodevtools/inc/unodevtools/options.hxx +++ b/unodevtools/inc/unodevtools/options.hxx @@ -20,11 +20,10 @@ #ifndef INCLUDED_UNODEVTOOLS_OPTIONS_HXX #define INCLUDED_UNODEVTOOLS_OPTIONS_HXX -#include <rtl/ustrbuf.hxx> +#include "sal/config.h" -namespace com { namespace sun { namespace star { namespace uno { -class RuntimeException; -} } } } +#include <com/sun/star/uno/RuntimeException.hpp> +#include <rtl/ustrbuf.hxx> namespace unodevtools { diff --git a/unodevtools/inc/unodevtools/typemanager.hxx b/unodevtools/inc/unodevtools/typemanager.hxx deleted file mode 100644 index c2807762cec2..000000000000 --- a/unodevtools/inc/unodevtools/typemanager.hxx +++ /dev/null @@ -1,83 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef INCLUDED_UNODEVTOOLS_TYPEMANAGER_HXX -#define INCLUDED_UNODEVTOOLS_TYPEMANAGER_HXX - -#include <codemaker/typemanager.hxx> -#include <com/sun/star/container/XHierarchicalNameAccess.hpp> - -#include <boost/unordered_map.hpp> -#include <vector> - -class RegistryKey; - -namespace typereg { class Reader; } - -typedef boost::unordered_map -< - ::rtl::OString, // Typename - RTTypeClass, // TypeClass - HashString, - EqualString -> T2TypeClassMap; - -namespace unodevtools { - -struct UnoTypeManagerImpl -{ - UnoTypeManagerImpl() {} - - T2TypeClassMap m_t2TypeClass; - ::com::sun::star::uno::Reference< - ::com::sun::star::container::XHierarchicalNameAccess> m_tdmgr; -}; - -class UnoTypeManager : public TypeManager -{ -public: - UnoTypeManager(); - ~UnoTypeManager(); - - UnoTypeManager( const UnoTypeManager& value ) - : TypeManager(value) - , m_pImpl( value.m_pImpl ) - {} - - sal_Bool init(const ::std::vector< ::rtl::OUString > registries); - - sal_Bool isValidType(const ::rtl::OString& name) const; - ::rtl::OString getTypeName(RegistryKey& rTypeKey) const; - typereg::Reader getTypeReader( - const ::rtl::OString& name, sal_Bool * pIsExtraType = 0 ) const; - typereg::Reader getTypeReader(RegistryKey& rTypeKey) const; - RTTypeClass getTypeClass(const ::rtl::OString& name) const; - RTTypeClass getTypeClass(RegistryKey& rTypeKey) const; - -protected: - void release(); - - UnoTypeManagerImpl* m_pImpl; -}; - -} - -#endif // _UNODEVTOOLS_TYPEMANAGER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unodevtools/source/skeletonmaker/cppcompskeleton.cxx b/unodevtools/source/skeletonmaker/cppcompskeleton.cxx index 8f42cd4d575a..5604962bce0a 100644 --- a/unodevtools/source/skeletonmaker/cppcompskeleton.cxx +++ b/unodevtools/source/skeletonmaker/cppcompskeleton.cxx @@ -499,7 +499,7 @@ void generateXDispatchProvider(std::ostream& o, void generateAddinConstructorAndHelper(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, const OString & classname, + rtl::Reference< TypeManager > const & manager, const OString & classname, const boost::unordered_set< OString, OStringHash >& interfaces) { o << classname << "::" << classname @@ -575,7 +575,7 @@ void generateAddinConstructorAndHelper(std::ostream& o, void generateMemberInitialization(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, AttributeInfo const & members) { if (!members.empty()) { @@ -602,7 +602,7 @@ void generateMemberInitialization(std::ostream& o, void generateMemberDeclaration(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, AttributeInfo const & members) { for (AttributeInfo::const_iterator i(members.begin()); @@ -617,7 +617,7 @@ void generateMemberDeclaration(std::ostream& o, OString generateClassDefinition(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, OString const & classname, boost::unordered_set< OString, OStringHash > const & interfaces, AttributeInfo const & properties, @@ -705,7 +705,7 @@ OString generateClassDefinition(std::ostream& o, codemaker::GeneratedTypeSet generated; while (it != interfaces.end()) { - typereg::Reader reader(manager.getTypeReader((*it).replace('.','/'))); + typereg::Reader reader(manager->getTypeReader((*it).replace('.','/'))); printMethods(o, options, manager, reader, generated, "", "", " ", true, propertyhelper); ++it; @@ -880,7 +880,7 @@ void generateXServiceInfoBodies(std::ostream& o, void generateMethodBodies(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, boost::unordered_set< OString, OStringHash > const & interfaces, OString const & classname, OString const & comphelpernamespace, @@ -895,7 +895,7 @@ void generateMethodBodies(std::ostream& o, generateXServiceInfoBodies(o, name, comphelpernamespace); generated.add(*iter); } else { - typereg::Reader reader(manager.getTypeReader((*iter).replace('.','/'))); + typereg::Reader reader(manager->getTypeReader((*iter).replace('.','/'))); printMethods(o, options, manager, reader, generated, "_", name, "", true, propertyhelper); } @@ -905,7 +905,7 @@ void generateMethodBodies(std::ostream& o, void generateQueryInterface(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, const boost::unordered_set< OString, OStringHash >& interfaces, OString const & parentname, OString const & classname, @@ -954,7 +954,7 @@ void generateQueryInterface(std::ostream& o, } void generateSkeleton(ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, std::vector< OString > const & types) { // special handling of calc add-ins @@ -1093,7 +1093,7 @@ void generateSkeleton(ProgramOptions const & options, } void generateCalcAddin(ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, std::vector< OString > const & types) { boost::unordered_set< OString, OStringHash > interfaces; diff --git a/unodevtools/source/skeletonmaker/cpptypemaker.cxx b/unodevtools/source/skeletonmaker/cpptypemaker.cxx index e95b5039934f..640d0545464d 100644 --- a/unodevtools/source/skeletonmaker/cpptypemaker.cxx +++ b/unodevtools/source/skeletonmaker/cpptypemaker.cxx @@ -28,7 +28,7 @@ using namespace ::codemaker::cpp; namespace skeletonmaker { namespace cpp { void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, codemaker::UnoType::Sort sort, RTTypeClass typeClass, OString const & name, sal_Int32 rank, std::vector< OString > const & arguments, short referenceType, @@ -63,7 +63,7 @@ void printType(std::ostream & o, if (defaultvalue && referenceType == 16) { if (typeClass == RT_TYPE_ENUM) { - typereg::Reader reader(manager.getTypeReader(name)); + typereg::Reader reader(manager->getTypeReader(name)); o << name.copy(name.lastIndexOf('/')) << "_" << codemaker::convertString(reader.getFieldName(0)); @@ -122,7 +122,7 @@ void printType(std::ostream & o, } void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, OString const & type, short referenceType, bool defaultvalue) { RTTypeClass typeClass; @@ -137,7 +137,7 @@ void printType(std::ostream & o, } bool printConstructorParameters(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, typereg::Reader const & outerReader, std::vector< OString > const & arguments) { @@ -145,7 +145,7 @@ bool printConstructorParameters(std::ostream & o, if (reader.getSuperTypeCount() != 0) { OString super( codemaker::convertString(reader.getSuperTypeName(0))); - typereg::Reader superReader(manager.getTypeReader(super)); + typereg::Reader superReader(manager->getTypeReader(super)); if (!superReader.isValid()) throw CannotDumpException("Bad type library entity " + super); @@ -186,7 +186,7 @@ bool printConstructorParameters(std::ostream & o, } void printConstructor(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, std::vector< OString > const & arguments) { @@ -199,7 +199,7 @@ void printConstructor(std::ostream & o, } void printMethodParameters(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, sal_uInt16 method, bool previous, bool withtype) { @@ -235,7 +235,7 @@ void printMethodParameters(std::ostream & o, } void printExceptionSpecification(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, sal_uInt16 method) { o << ((options.shortnames) ? " throw (css::uno::RuntimeException" : @@ -367,7 +367,7 @@ void generateXDispatchProvider(std::ostream& o, void printMethods(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, codemaker::GeneratedTypeSet & generated, OString const & delegate, OString const & classname, OString const & indentation, bool defaultvalue, @@ -456,7 +456,7 @@ void printMethods(std::ostream & o, if (options.all || defaultvalue) { for (sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i) { typereg::Reader super( - manager.getTypeReader( + manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(i)))); if (!super.isValid()) { @@ -642,7 +642,7 @@ void printMethods(std::ostream & o, } void printConstructionMethods(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader) { for (sal_uInt16 i = 0; i < reader.getMethodCount(); ++i) { @@ -671,7 +671,7 @@ void printConstructionMethods(std::ostream & o, } void printServiceMembers(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, OString const & type, OString const & delegate) { @@ -709,7 +709,7 @@ void printServiceMembers(std::ostream & o, } void printMapsToCppType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, codemaker::UnoType::Sort sort, RTTypeClass typeClass, OString const & name, sal_Int32 rank, std::vector< OString > const & arguments, const char * cppTypeSort) @@ -728,7 +728,7 @@ void printMapsToCppType(std::ostream & o, } void generateDocumentation(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, OString const & type, OString const & delegate) { if (type.indexOf('/') >= 0) @@ -760,7 +760,7 @@ void generateDocumentation(std::ostream & o, } else if (sort != codemaker::UnoType::SORT_COMPLEX) { o << " simple type"; } else { - typereg::Reader reader(manager.getTypeReader(name)); + typereg::Reader reader(manager->getTypeReader(name)); if (!reader.isValid()) throw CannotDumpException("Bad type library entity " + name); @@ -803,7 +803,7 @@ void generateDocumentation(std::ostream & o, break; case RT_TYPE_SINGLETON: - if ((manager.getTypeReader( + if ((manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(0))).getTypeClass()) == RT_TYPE_INTERFACE) @@ -839,7 +839,7 @@ void generateDocumentation(std::ostream & o, o << '\n'; } } else { - typereg::Reader reader(manager.getTypeReader(name)); + typereg::Reader reader(manager->getTypeReader(name)); if (!reader.isValid()) throw CannotDumpException("Bad type library entity " + name); @@ -933,7 +933,7 @@ void generateDocumentation(std::ostream & o, case RT_TYPE_SINGLETON: if (reader.getSuperTypeCount() > 0 && - ((manager.getTypeReader( + ((manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(0))). getTypeClass()) == RT_TYPE_INTERFACE) ) diff --git a/unodevtools/source/skeletonmaker/javacompskeleton.cxx b/unodevtools/source/skeletonmaker/javacompskeleton.cxx index 4ddaf595622d..6110e9c57704 100644 --- a/unodevtools/source/skeletonmaker/javacompskeleton.cxx +++ b/unodevtools/source/skeletonmaker/javacompskeleton.cxx @@ -503,7 +503,7 @@ void generateXDispatchProviderBodies(std::ostream& o, ProgramOptions const & opt void generateMethodBodies(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, const boost::unordered_set< OString, OStringHash >& interfaces, const OString& indentation, bool usepropertymixin) { @@ -559,7 +559,7 @@ void generateMethodBodies(std::ostream& o, continue; } } - typereg::Reader reader(manager.getTypeReader(type.replace('.','/'))); + typereg::Reader reader(manager->getTypeReader(type.replace('.','/'))); printMethods(o, options, manager, reader, generated, "_", indentation, true, usepropertymixin); } @@ -575,7 +575,7 @@ static const char* propcomment= void generateAddinConstructorAndHelper(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, const OString & classname, + rtl::Reference< TypeManager > const & manager, const OString & classname, const boost::unordered_set< OString, OStringHash >& services, const boost::unordered_set< OString, OStringHash >& interfaces) { @@ -720,7 +720,7 @@ void generateAddinConstructorAndHelper(std::ostream& o, void generateClassDefinition(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, const OString & classname, const boost::unordered_set< OString, OStringHash >& services, const boost::unordered_set< OString, OStringHash >& interfaces, @@ -840,7 +840,7 @@ void generateClassDefinition(std::ostream& o, } void generateSkeleton(ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, std::vector< OString > const & types) { boost::unordered_set< OString, OStringHash > interfaces; diff --git a/unodevtools/source/skeletonmaker/javatypemaker.cxx b/unodevtools/source/skeletonmaker/javatypemaker.cxx index 7e7f86c3825c..155bd0517dc2 100644 --- a/unodevtools/source/skeletonmaker/javatypemaker.cxx +++ b/unodevtools/source/skeletonmaker/javatypemaker.cxx @@ -27,12 +27,12 @@ using namespace ::rtl; namespace skeletonmaker { namespace java { void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, OString const & type, bool referenceType, bool defaultvalue); void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, codemaker::UnoType::Sort sort, RTTypeClass typeClass, OString const & name, sal_Int32 rank, std::vector< OString > const & arguments, bool referenceType, @@ -115,7 +115,7 @@ void printType(std::ostream & o, } void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, OString const & type, bool referenceType, bool defaultvalue) { RTTypeClass typeClass; @@ -130,7 +130,7 @@ void printType(std::ostream & o, } bool printConstructorParameters(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, typereg::Reader const & outerReader, std::vector< OString > const & arguments) { @@ -138,7 +138,7 @@ bool printConstructorParameters(std::ostream & o, if ( reader.getSuperTypeCount() != 0 ) { OString super( codemaker::convertString(reader.getSuperTypeName(0))); - typereg::Reader superReader(manager.getTypeReader(super)); + typereg::Reader superReader(manager->getTypeReader(super)); if ( !superReader.isValid() ) { throw CannotDumpException("Bad type library entity " + super); } @@ -180,7 +180,7 @@ bool printConstructorParameters(std::ostream & o, } void printConstructor(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, std::vector< OString > const & arguments) { @@ -191,7 +191,7 @@ void printConstructor(std::ostream & o, } void printMethodParameters(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, sal_uInt16 method, bool previous, bool withtype) { @@ -226,7 +226,7 @@ void printMethodParameters(std::ostream & o, } void printExceptionSpecification(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, sal_uInt16 method) { if ( reader.getMethodExceptionCount(method) > 0 ) { @@ -345,7 +345,7 @@ void generateXFastPropertySetBodies(std::ostream& o); void generateXPropertyAccessBodies(std::ostream& o); void printMethods(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, codemaker::GeneratedTypeSet & generated, OString const & delegate, OString const & indentation, @@ -384,7 +384,7 @@ void printMethods(std::ostream & o, if ( options.all || defaultvalue ) { for (sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i) { typereg::Reader super( - manager.getTypeReader( + manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(i)))); if ( !super.isValid() ) { @@ -544,7 +544,7 @@ void printMethods(std::ostream & o, } void printConstructionMethods(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader) { for ( sal_uInt16 i = 0; i < reader.getMethodCount(); ++i ) { @@ -569,11 +569,11 @@ void printConstructionMethods(std::ostream & o, } void generateDocumentation(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, OString const & type); void printServiceMembers(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, OString const & type, OString const & delegate) { @@ -608,7 +608,7 @@ void printServiceMembers(std::ostream & o, } void printMapsToJavaType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, codemaker::UnoType::Sort sort, RTTypeClass typeClass, OString const & name, sal_Int32 rank, std::vector< OString > const & arguments, const char * javaTypeSort) @@ -628,7 +628,7 @@ void printMapsToJavaType(std::ostream & o, } void generateDocumentation(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, OString const & type, OString const & delegate) { if ( type.indexOf('/') >= 0 ) { @@ -658,7 +658,7 @@ void generateDocumentation(std::ostream & o, } else if ( sort != codemaker::UnoType::SORT_COMPLEX ) { o << " simple type"; } else { - typereg::Reader reader(manager.getTypeReader(name)); + typereg::Reader reader(manager->getTypeReader(name)); if ( !reader.isValid() ) { throw CannotDumpException("Bad type library entity " + name); } @@ -702,7 +702,7 @@ void generateDocumentation(std::ostream & o, break; case RT_TYPE_SINGLETON: - if ( (manager.getTypeReader( + if ( (manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(0))).getTypeClass()) == RT_TYPE_INTERFACE ) @@ -736,7 +736,7 @@ void generateDocumentation(std::ostream & o, options, manager, sort, typeClass, name, rank, arguments, 0); o << '\n'; } else { - typereg::Reader reader(manager.getTypeReader(name)); + typereg::Reader reader(manager->getTypeReader(name)); if ( !reader.isValid() ) { throw CannotDumpException("Bad type library entity " + name); } @@ -820,7 +820,7 @@ void generateDocumentation(std::ostream & o, case RT_TYPE_SINGLETON: if ( reader.getSuperTypeCount() > 0 && - ((manager.getTypeReader( + ((manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(0))).getTypeClass()) == RT_TYPE_INTERFACE) ) { diff --git a/unodevtools/source/skeletonmaker/skeletoncommon.cxx b/unodevtools/source/skeletonmaker/skeletoncommon.cxx index e32fda26e030..1b63edaccdab 100644 --- a/unodevtools/source/skeletonmaker/skeletoncommon.cxx +++ b/unodevtools/source/skeletonmaker/skeletoncommon.cxx @@ -91,7 +91,7 @@ bool getOutputStream(ProgramOptions const & options, } codemaker::UnoType::Sort decomposeResolveAndCheck( - TypeManager const & manager, OString const & type, + rtl::Reference< TypeManager > const & manager, OString const & type, bool resolveTypedefs, bool allowVoid, bool allowExtraEntities, RTTypeClass * typeClass, OString * name, sal_Int32 * rank, std::vector< OString > * arguments) @@ -125,7 +125,7 @@ bool containsAttribute(AttributeInfo& attributes, OString const & attrname) } // collect attributes including inherited attributes -void checkAttributes(TypeManager const & manager, +void checkAttributes(rtl::Reference< TypeManager > const & manager, const typereg::Reader& reader, AttributeInfo& attributes, boost::unordered_set< OString, OStringHash >& propinterfaces) @@ -140,7 +140,7 @@ void checkAttributes(TypeManager const & manager, } for ( sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i ) { - typereg::Reader supertype(manager.getTypeReader( + typereg::Reader supertype(manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(i)))); if ( !supertype.isValid() ) { @@ -167,7 +167,7 @@ void checkAttributes(TypeManager const & manager, } } -void checkType(TypeManager const & manager, +void checkType(rtl::Reference< TypeManager > const & manager, OString const & type, boost::unordered_set< OString, OStringHash >& interfaceTypes, boost::unordered_set< OString, OStringHash >& serviceTypes, @@ -175,7 +175,7 @@ void checkType(TypeManager const & manager, { OString binType(type.replace('.', '/')); - typereg::Reader reader(manager.getTypeReader(binType)); + typereg::Reader reader(manager->getTypeReader(binType)); if ( !reader.isValid() ) { throw CannotDumpException("Bad type library entity " + binType); } @@ -205,7 +205,7 @@ void checkType(TypeManager const & manager, if ( interfaceTypes.find(supername) == interfaceTypes.end() ) { interfaceTypes.insert(supername); - typereg::Reader supertype(manager.getTypeReader( + typereg::Reader supertype(manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(0)))); if ( !supertype.isValid() ) { @@ -288,7 +288,7 @@ void checkDefaultInterfaces( } } -bool checkServiceProperties(TypeManager const & manager, +bool checkServiceProperties(rtl::Reference< TypeManager > const & manager, const typereg::Reader & reader) { if ( reader.getFieldCount() > 0 ) @@ -298,7 +298,7 @@ bool checkServiceProperties(TypeManager const & manager, for ( sal_uInt16 i = 0; i < reader.getReferenceCount(); ++i ) { if ( reader.getReferenceSort(i) == RT_REF_EXPORTS ) { typereg::Reader refreader( - manager.getTypeReader( + manager->getTypeReader( codemaker::convertString(reader.getReferenceTypeName(i)))); if ( checkServiceProperties(manager, refreader) ) @@ -312,7 +312,7 @@ bool checkServiceProperties(TypeManager const & manager, OString checkPropertyHelper( ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, const boost::unordered_set< OString, OStringHash >& services, const boost::unordered_set< OString, OStringHash >& interfaces, AttributeInfo& attributes, @@ -331,13 +331,13 @@ OString checkPropertyHelper( bool oldStyleWithProperties = false; while ( iter != end ) { - typereg::Reader reader(manager.getTypeReader((*iter).replace('.', '/'))); + typereg::Reader reader(manager->getTypeReader((*iter).replace('.', '/'))); if ( !services.empty() ) { if ( options.supportpropertysetmixin && reader.getSuperTypeCount() > 0 ) { typereg::Reader supertype( - manager.getTypeReader( + manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(0)))); if ( !supertype.isValid() ) { @@ -371,7 +371,7 @@ OString checkPropertyHelper( return (oldStyleWithProperties ? "_" : ""); } -bool checkXComponentSupport(TypeManager const & manager, +bool checkXComponentSupport(rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader) { static OUString s( "com/sun/star/lang/XComponent"); @@ -380,7 +380,7 @@ bool checkXComponentSupport(TypeManager const & manager, for ( sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i ) { typereg::Reader super( - manager.getTypeReader( + manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(i)))); if ( !super.isValid() ) { @@ -399,7 +399,7 @@ bool checkXComponentSupport(TypeManager const & manager, // if XComponent is directly specified, return true and remove it from the // supported interfaces list -bool checkXComponentSupport(TypeManager const & manager, +bool checkXComponentSupport(rtl::Reference< TypeManager > const & manager, boost::unordered_set< OString, OStringHash >& interfaces) { if ( interfaces.empty() ) @@ -412,7 +412,7 @@ bool checkXComponentSupport(TypeManager const & manager, interfaces.erase("com.sun.star.lang.XComponent"); return true; } - typereg::Reader reader(manager.getTypeReader((*iter).replace('.', '/'))); + typereg::Reader reader(manager->getTypeReader((*iter).replace('.', '/'))); if ( checkXComponentSupport(manager, reader) ) return true; ++iter; @@ -465,7 +465,7 @@ sal_uInt16 checkAdditionalPropertyFlags(typereg::Reader const & reader, // This function checks if the specified types for parameters and return // types are allowed add-in types, for more info see the com.sun.star.sheet.AddIn // service description -bool checkAddinType(TypeManager const & manager, +bool checkAddinType(rtl::Reference< TypeManager > const & manager, OString const & type, bool & bLastAny, bool & bHasXPropertySet, bool bIsReturn) { @@ -515,7 +515,7 @@ bool checkAddinType(TypeManager const & manager, return false; } -void checkAddInTypes(TypeManager const & manager, +void checkAddInTypes(rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader) { OString sType(codemaker::convertString(reader.getTypeName()).replace('/', '.')); @@ -568,7 +568,7 @@ void checkAddInTypes(TypeManager const & manager, void generateFunctionParamterMap(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, ::codemaker::GeneratedTypeSet & generated, bool bFirst) @@ -590,7 +590,7 @@ void generateFunctionParamterMap(std::ostream& o, for ( sal_uInt16 i = 0; i < reader.getSuperTypeCount(); ++i ) { typereg::Reader super( - manager.getTypeReader( + manager->getTypeReader( codemaker::convertString( reader.getSuperTypeName(i)))); if ( !super.isValid() ) { @@ -669,14 +669,14 @@ void generateFunctionParamterMap(std::ostream& o, void generateFunctionParameterMap(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, const boost::unordered_set< OString, OStringHash >& interfaces) { ::codemaker::GeneratedTypeSet generated; bool bFirst = true; boost::unordered_set< OString, OStringHash >::const_iterator iter = interfaces.begin(); while ( iter != interfaces.end() ) { - typereg::Reader reader(manager.getTypeReader((*iter).replace('.','/'))); + typereg::Reader reader(manager->getTypeReader((*iter).replace('.','/'))); if (!reader.isValid()) { throw CannotDumpException( "Bad type library entity " diff --git a/unodevtools/source/skeletonmaker/skeletoncommon.hxx b/unodevtools/source/skeletonmaker/skeletoncommon.hxx index 93a27c65f8e9..8fc3951c39d6 100644 --- a/unodevtools/source/skeletonmaker/skeletoncommon.hxx +++ b/unodevtools/source/skeletonmaker/skeletoncommon.hxx @@ -19,6 +19,9 @@ #ifndef INCLUDED_UNODEVTOOLS_SOURCE_SKELETONMAKER_SKELETONCOMMON_HXX #define INCLUDED_UNODEVTOOLS_SOURCE_SKELETONMAKER_SKELETONCOMMON_HXX +#include "sal/config.h" + +#include "rtl/ref.hxx" #include "rtl/string.hxx" #include "registry/reader.hxx" #include "codemaker/typemanager.hxx" @@ -95,12 +98,12 @@ bool getOutputStream(ProgramOptions const & options, rtl::OString & tmpSourceFileName); codemaker::UnoType::Sort decomposeResolveAndCheck( - 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); -void checkType(TypeManager const & manager, +void checkType(rtl::Reference< TypeManager > const & manager, rtl::OString const & type, boost::unordered_set< rtl::OString, rtl::OStringHash >& interfaceTypes, boost::unordered_set< rtl::OString, rtl::OStringHash >& serviceTypes, @@ -112,7 +115,7 @@ void checkDefaultInterfaces( const rtl::OString & propertyhelper); rtl::OString checkPropertyHelper( - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, const boost::unordered_set< rtl::OString, rtl::OStringHash >& services, const boost::unordered_set< rtl::OString, rtl::OStringHash >& interfaces, AttributeInfo& attributes, @@ -127,7 +130,7 @@ rtl::OString checkPropertyHelper( @param reader a registry type reader of an interface defining calc add-in functions */ -void checkAddInTypes(TypeManager const & manager, +void checkAddInTypes(rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader); @@ -141,7 +144,7 @@ void checkAddInTypes(TypeManager const & manager, @return true if XComponent have to be supported */ -bool checkXComponentSupport(TypeManager const & manager, +bool checkXComponentSupport(rtl::Reference< TypeManager > const & manager, boost::unordered_set< rtl::OString, rtl::OStringHash >& interfaces); @@ -151,7 +154,7 @@ sal_uInt16 checkAdditionalPropertyFlags(typereg::Reader const & reader, void generateFunctionParameterMap(std::ostream& o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, const boost::unordered_set< ::rtl::OString, ::rtl::OStringHash >& interfaces); } diff --git a/unodevtools/source/skeletonmaker/skeletoncpp.hxx b/unodevtools/source/skeletonmaker/skeletoncpp.hxx index 3d05e4339029..3ce20d13ab64 100644 --- a/unodevtools/source/skeletonmaker/skeletoncpp.hxx +++ b/unodevtools/source/skeletonmaker/skeletoncpp.hxx @@ -34,21 +34,21 @@ namespace skeletonmaker { namespace cpp { // 8 = default construction for example for return types, means "return <type>();" // 16 = default member initialization in a constructor void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, codemaker::UnoType::Sort sort, RTTypeClass typeClass, rtl::OString const & name, sal_Int32 rank, std::vector< rtl::OString > const & arguments, short referenceType, bool defaultvalue=false); void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, rtl::OString const & type, short referenceType, bool defaultvalue=false); bool printConstructorParameters(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, typereg::Reader const & outerReader, std::vector< rtl::OString > const & arguments); @@ -56,14 +56,14 @@ bool printConstructorParameters(std::ostream & o, void printConstructor(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, std::vector< rtl::OString > const & arguments); void printMethodParameters(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, sal_uInt16 method, bool previous, bool withtype); @@ -71,13 +71,13 @@ void printMethodParameters(std::ostream & o, void printExceptionSpecification(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, sal_uInt16 method); void printMethods(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, codemaker::GeneratedTypeSet & generated, rtl::OString const & delegate, @@ -89,13 +89,13 @@ void printMethods(std::ostream & o, void printConstructionMethods(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader); void printServiceMembers(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, rtl::OString const & type, rtl::OString const & delegate); @@ -103,7 +103,7 @@ void printServiceMembers(std::ostream & o, void printMapsToCppType(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, codemaker::UnoType::Sort sort, RTTypeClass typeClass, rtl::OString const & name, @@ -114,17 +114,17 @@ void printMapsToCppType(std::ostream & o, void generateDocumentation(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, rtl::OString const & type, rtl::OString const & delegate); void generateSkeleton(ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, std::vector< rtl::OString > const & types); void generateCalcAddin(ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, std::vector< rtl::OString > const & types); } } diff --git a/unodevtools/source/skeletonmaker/skeletonjava.hxx b/unodevtools/source/skeletonmaker/skeletonjava.hxx index 5bfae4b01138..41da0e06223c 100644 --- a/unodevtools/source/skeletonmaker/skeletonjava.hxx +++ b/unodevtools/source/skeletonmaker/skeletonjava.hxx @@ -27,44 +27,44 @@ namespace skeletonmaker { namespace java { void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, codemaker::UnoType::Sort sort, RTTypeClass typeClass, rtl::OString const & name, sal_Int32 rank, std::vector< rtl::OString > const & arguments, bool referenceType, bool defaultvalue=false); void printType(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, rtl::OString const & type, bool referenceType, bool defaultvalue=false); bool printConstructorParameters(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, typereg::Reader const & outerReader, std::vector< rtl::OString > const & arguments); void printConstructor(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, std::vector< rtl::OString > const & arguments); void printMethodParameters(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, sal_uInt16 method, bool previous, bool withtype); void printExceptionSpecification(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, sal_uInt16 method); void printMethods(std::ostream & o, - ProgramOptions const & options, TypeManager const & manager, + ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, codemaker::GeneratedTypeSet & generated, rtl::OString const & delegate, @@ -74,19 +74,19 @@ void printMethods(std::ostream & o, void printConstructionMethods(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader); void printServiceMembers(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, typereg::Reader const & reader, rtl::OString const & type, rtl::OString const & delegate); void printMapsToJavaType(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, codemaker::UnoType::Sort sort, RTTypeClass typeClass, rtl::OString const & name, sal_Int32 rank, @@ -95,11 +95,11 @@ void printMapsToJavaType(std::ostream & o, void generateDocumentation(std::ostream & o, ProgramOptions const & options, - TypeManager const & manager, + rtl::Reference< TypeManager > const & manager, rtl::OString const & type, rtl::OString const & delegate); -void generateSkeleton(ProgramOptions const & options, TypeManager const & manager, std::vector< rtl::OString > const & types); +void generateSkeleton(ProgramOptions const & options, rtl::Reference< TypeManager > const & manager, std::vector< rtl::OString > const & types); } } diff --git a/unodevtools/source/skeletonmaker/skeletonmaker.cxx b/unodevtools/source/skeletonmaker/skeletonmaker.cxx index 4884bd4f69ad..42eb62c81329 100644 --- a/unodevtools/source/skeletonmaker/skeletonmaker.cxx +++ b/unodevtools/source/skeletonmaker/skeletonmaker.cxx @@ -18,10 +18,10 @@ */ #include <iostream> +#include "codemaker/typemanager.hxx" #include "sal/main.h" #include "rtl/process.h" #include "rtl/ustrbuf.hxx" -#include "unodevtools/typemanager.hxx" #include "unodevtools/options.hxx" #include "skeletonjava.hxx" #include "skeletoncpp.hxx" @@ -143,7 +143,7 @@ SAL_IMPLEMENT_MAIN() } ProgramOptions options; - std::vector< OUString > registries; + std::vector< OString > registries; std::vector< OString > types; OString delegate; @@ -243,7 +243,7 @@ SAL_IMPLEMENT_MAIN() continue; } if ( readOption( &sOption, "l", &nPos, arg) ) { - registries.push_back(sOption); + registries.push_back(OUStringToOString(sOption, RTL_TEXTENCODING_UTF8)); continue; } if ( readOption( &sOption, "t", &nPos, arg) ) { @@ -274,7 +274,7 @@ SAL_IMPLEMENT_MAIN() buf.append(arg); buf.append("\"!"); throw RuntimeException(buf.makeStringAndClear(), - Reference< XInterface >()); + css::uno::Reference< XInterface >()); } if ( types.empty() && options.componenttype != 3) { @@ -284,8 +284,8 @@ SAL_IMPLEMENT_MAIN() exit(EXIT_FAILURE); } - UnoTypeManager manager; - if ( !manager.init(registries) ) { + rtl::Reference< TypeManager > manager(new TypeManager); + if ( !manager->init(registries) ) { std::cerr << ("\nError: Using the binary type libraries failed, check the -L" " options\n"); diff --git a/unodevtools/source/unodevtools/typemanager.cxx b/unodevtools/source/unodevtools/typemanager.cxx deleted file mode 100644 index c25bcac9964c..000000000000 --- a/unodevtools/source/unodevtools/typemanager.cxx +++ /dev/null @@ -1,270 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include "unodevtools/typemanager.hxx" - -#include "rtl/alloc.h" -#include "registry/reader.hxx" -#include "cppuhelper/bootstrap.hxx" - -#include "com/sun/star/container/XSet.hpp" -#include "com/sun/star/reflection/XTypeDescription.hpp" -#include "com/sun/star/registry/XSimpleRegistry.hpp" -#include "com/sun/star/uno/XComponentContext.hpp" - -using namespace ::rtl; -using namespace ::cppu; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::container; -using namespace ::com::sun::star::registry; -using namespace ::com::sun::star::reflection; - -namespace unodevtools { - -static RTTypeClass mapTypeClass(TypeClass typeclass) { - switch(typeclass) { - case TypeClass_ENUM: - return RT_TYPE_ENUM; - case TypeClass_TYPEDEF: - return RT_TYPE_TYPEDEF; - case TypeClass_STRUCT: - return RT_TYPE_STRUCT; - case TypeClass_UNION: - return RT_TYPE_UNION; - case TypeClass_EXCEPTION: - return RT_TYPE_EXCEPTION; - case TypeClass_INTERFACE: - return RT_TYPE_INTERFACE; - case TypeClass_SERVICE: - return RT_TYPE_SERVICE; - case TypeClass_MODULE: - return RT_TYPE_MODULE; - case TypeClass_CONSTANTS: - return RT_TYPE_CONSTANTS; - case TypeClass_SINGLETON: - return RT_TYPE_SINGLETON; - default: - break; - } - return RT_TYPE_INVALID; -} - - -UnoTypeManager::UnoTypeManager() -{ - m_pImpl = new UnoTypeManagerImpl(); - acquire(); -} - -UnoTypeManager::~UnoTypeManager() -{ - release(); -} - -void UnoTypeManager::release() -{ - if (0 == TypeManager::release()) - delete m_pImpl; -} - -sal_Bool UnoTypeManager::init( - const ::std::vector< ::rtl::OUString > registries) -{ - Reference< XComponentContext > xContext= - defaultBootstrap_InitialComponentContext(); - - if ( !xContext.is() ) { - OUString msg( - "internal UNO problem, can't create initial UNO component context"); - throw RuntimeException( msg, Reference< XInterface >()); - } - Any a = xContext->getValueByName( - OUString( - "/singletons/com.sun.star.reflection.theTypeDescriptionManager")); - - a >>= m_pImpl->m_tdmgr; - - if ( !m_pImpl->m_tdmgr.is() ) { - OUString msg("internal UNO problem, can't get TypeDescriptionManager"); - throw RuntimeException( msg, Reference< XInterface >()); - } - - if ( !registries.empty() ) { - - Reference< XMultiComponentFactory > xServiceManager( - xContext->getServiceManager() ); - if ( !xServiceManager.is() ) { - OUString msg("internal UNO problem, can't get ServiceManager"); - throw RuntimeException( msg, Reference< XInterface >()); - } - - Sequence<Any> seqArgs(registries.size()); - - std::vector< OUString >::const_iterator iter = registries.begin(); - int i = 0; - while ( iter != registries.end() ) - { - Reference< XSimpleRegistry > xReg( - xServiceManager->createInstanceWithContext( - OUString("com.sun.star.registry.SimpleRegistry"), - xContext), UNO_QUERY); - xReg->open(convertToFileUrl( - OUStringToOString(*iter, RTL_TEXTENCODING_UTF8)), - sal_True, sal_False); - - seqArgs[i++] = makeAny(xReg); - ++iter; - } - - Reference< XHierarchicalNameAccess > xTDProvider( - xServiceManager->createInstanceWithArgumentsAndContext( - OUString("com.sun.star.reflection.TypeDescriptionProvider"), - seqArgs, xContext), - UNO_QUERY); - if ( !xTDProvider.is() ) { - OUString msg("internal UNO problem, can't create local" - " type description provider"); - throw RuntimeException( msg, Reference< XInterface >()); - } - - a = makeAny(xTDProvider); - Reference< XSet > xSet(m_pImpl->m_tdmgr, UNO_QUERY); - xSet->insert(a); - } - - return sal_True; -} - -sal_Bool UnoTypeManager::isValidType(const ::rtl::OString& name) const -{ - return m_pImpl->m_tdmgr->hasByHierarchicalName( - OStringToOUString(name, RTL_TEXTENCODING_UTF8)); -} - -OString UnoTypeManager::getTypeName(RegistryKey& rTypeKey) const -{ - OString typeName = OUStringToOString(rTypeKey.getName(), RTL_TEXTENCODING_UTF8); - static OString sBase("/UCR"); - if (typeName.indexOf(sBase) == 0) { - typeName = typeName.copy(typeName.indexOf('/', 1) + 1); - } else { - typeName = typeName.copy(1); - } - return typeName; -} - -// extern -void* getTypeBlob(Reference< XHierarchicalNameAccess > xTDmgr, - const OString& typeName, sal_uInt32* pBlob); - -typereg::Reader UnoTypeManager::getTypeReader( - const OString& name, sal_Bool * /*pIsExtraType*/ ) const -{ - typereg::Reader reader; - - void* pBlob = NULL; - sal_uInt32 blobsize = 0; - - if ( (pBlob = getTypeBlob(m_pImpl->m_tdmgr, name, &blobsize)) != NULL ) - reader = typereg::Reader(pBlob, blobsize, sal_True, TYPEREG_VERSION_1); - - if ( pBlob ) - rtl_freeMemory(pBlob); - - return reader; -} - -typereg::Reader UnoTypeManager::getTypeReader(RegistryKey& rTypeKey) const -{ - typereg::Reader reader; - - if (rTypeKey.isValid()) { - RegValueType valueType; - sal_uInt32 valueSize; - - if (!rTypeKey.getValueInfo(OUString(), &valueType, &valueSize)) { - sal_uInt8* pBuffer = (sal_uInt8*)rtl_allocateMemory(valueSize); - if ( !rTypeKey.getValue(OUString(), pBuffer) ) { - reader = typereg::Reader( - pBuffer, valueSize, true, TYPEREG_VERSION_1); - } - rtl_freeMemory(pBuffer); - } - } - return reader; -} - - -RTTypeClass UnoTypeManager::getTypeClass(const OString& name) const -{ - if ( m_pImpl->m_t2TypeClass.count(name) > 0 ) { - return m_pImpl->m_t2TypeClass[name]; - } else { - Reference< XTypeDescription > xTD; - Any a = m_pImpl->m_tdmgr->getByHierarchicalName( - OStringToOUString(name, RTL_TEXTENCODING_UTF8)); - a >>= xTD; - - if ( xTD.is() ) { - RTTypeClass tc = mapTypeClass(xTD->getTypeClass()); - if (tc != RT_TYPE_INVALID) - m_pImpl->m_t2TypeClass[name] = tc; - return tc; - } - } - - return RT_TYPE_INVALID; -} - -RTTypeClass UnoTypeManager::getTypeClass(RegistryKey& rTypeKey) const -{ - OString name = getTypeName(rTypeKey); - - if ( m_pImpl->m_t2TypeClass.count(name) > 0 ) { - return m_pImpl->m_t2TypeClass[name]; - } else { - if ( rTypeKey.isValid() ) { - RegValueType valueType; - sal_uInt32 valueSize; - - if ( !rTypeKey.getValueInfo(OUString(), &valueType, &valueSize) ) { - sal_uInt8* pBuffer = (sal_uInt8*)rtl_allocateMemory(valueSize); - if ( !rTypeKey.getValue(OUString(), pBuffer) ) { - typereg::Reader reader( - pBuffer, valueSize, false, TYPEREG_VERSION_1); - - RTTypeClass ret = reader.getTypeClass(); - - rtl_freeMemory(pBuffer); - - m_pImpl->m_t2TypeClass[name] = ret; - return ret; - } - rtl_freeMemory(pBuffer); - } - } - } - - return RT_TYPE_INVALID; -} - -} // end of namespace unodevtools - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |