From 8949bcad4095008dc147c6fd6e633c177144dfa8 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Fri, 23 May 2014 13:43:40 +0200 Subject: Remove circular references between unoidl::Manager and its providers Change-Id: Ic6ad3e2c7f69dd123077a913f35f1971f1e8ca13 --- unoidl/source/legacyprovider.cxx | 7 +++---- unoidl/source/legacyprovider.hxx | 5 ++--- unoidl/source/sourcetreeprovider.cxx | 5 ++--- unoidl/source/sourcetreeprovider.hxx | 5 ++--- unoidl/source/unoidl.cxx | 4 ++-- 5 files changed, 11 insertions(+), 15 deletions(-) (limited to 'unoidl') diff --git a/unoidl/source/legacyprovider.cxx b/unoidl/source/legacyprovider.cxx index ac8ec6909966..9db84959bc70 100644 --- a/unoidl/source/legacyprovider.cxx +++ b/unoidl/source/legacyprovider.cxx @@ -778,8 +778,7 @@ rtl::Reference< Entity > readEntity( } -LegacyProvider::LegacyProvider( - rtl::Reference< Manager > const & manager, OUString const & uri): +LegacyProvider::LegacyProvider(Manager & manager, OUString const & uri): manager_(manager) { Registry reg; @@ -811,14 +810,14 @@ LegacyProvider::LegacyProvider( } rtl::Reference< MapCursor > LegacyProvider::createRootCursor() const { - return new Cursor(manager_, ucr_, ucr_); + return new Cursor(&manager_, ucr_, ucr_); } rtl::Reference< Entity > LegacyProvider::findEntity(OUString const & name) const { return ucr_.isValid() - ? readEntity(manager_, ucr_, ucr_, name.replace('.', '/'), true) + ? readEntity(&manager_, ucr_, ucr_, name.replace('.', '/'), true) : rtl::Reference< Entity >(); } diff --git a/unoidl/source/legacyprovider.hxx b/unoidl/source/legacyprovider.hxx index bcb300d4b2e8..c3ba6ef7a252 100644 --- a/unoidl/source/legacyprovider.hxx +++ b/unoidl/source/legacyprovider.hxx @@ -21,8 +21,7 @@ namespace unoidl { namespace detail { class LegacyProvider: public Provider { public: // throws FileFormatException, NoSuchFileException: - LegacyProvider( - rtl::Reference< Manager > const & manager, OUString const & uri); + LegacyProvider(Manager & manager, OUString const & uri); // throws FileFormatException: virtual rtl::Reference< MapCursor > createRootCursor() const SAL_OVERRIDE; @@ -34,7 +33,7 @@ public: private: virtual ~LegacyProvider() throw (); - rtl::Reference< Manager > manager_; + Manager & manager_; mutable RegistryKey ucr_; }; diff --git a/unoidl/source/sourcetreeprovider.cxx b/unoidl/source/sourcetreeprovider.cxx index 5c203e450075..246f6f01be41 100644 --- a/unoidl/source/sourcetreeprovider.cxx +++ b/unoidl/source/sourcetreeprovider.cxx @@ -120,8 +120,7 @@ private: } -SourceTreeProvider::SourceTreeProvider( - rtl::Reference const & manager, OUString const & uri): +SourceTreeProvider::SourceTreeProvider(Manager & manager, OUString const & uri): manager_(manager), uri_(uri.endsWith("/") ? uri : uri + "/") {} @@ -189,7 +188,7 @@ rtl::Reference SourceTreeProvider::findEntity(OUString const & name) ent = new SourceModuleEntity; } else { uri += ".idl"; - SourceProviderScannerData data(manager_); + SourceProviderScannerData data(&manager_); if (parse(uri, &data)) { std::map::const_iterator j( data.entities.find(name)); diff --git a/unoidl/source/sourcetreeprovider.hxx b/unoidl/source/sourcetreeprovider.hxx index 57ae3d5823f3..0c1d993f5453 100644 --- a/unoidl/source/sourcetreeprovider.hxx +++ b/unoidl/source/sourcetreeprovider.hxx @@ -22,8 +22,7 @@ namespace unoidl { namespace detail { class SourceTreeProvider: public Provider { public: // throws FileFormatException, NoSuchFileException: - SourceTreeProvider( - rtl::Reference const & manager, OUString const & uri); + SourceTreeProvider(Manager & manager, OUString const & uri); // throws FileFormatException: virtual rtl::Reference createRootCursor() const SAL_OVERRIDE; @@ -34,7 +33,7 @@ public: private: virtual ~SourceTreeProvider() throw (); - rtl::Reference manager_; + Manager & manager_; OUString uri_; mutable std::map< OUString, rtl::Reference > cache_; //TODO: at manager }; diff --git a/unoidl/source/unoidl.cxx b/unoidl/source/unoidl.cxx index 454638312928..e5573f0b124b 100644 --- a/unoidl/source/unoidl.cxx +++ b/unoidl/source/unoidl.cxx @@ -206,7 +206,7 @@ rtl::Reference< Provider > Manager::loadProvider(OUString const & uri) { if (item.getFileStatus(status) == osl::FileBase::E_None && status.getFileType() == osl::FileStatus::Directory) { - return new detail::SourceTreeProvider(this, uri); + return new detail::SourceTreeProvider(*this, uri); } } if (uri.endsWith(".idl")) { @@ -219,7 +219,7 @@ rtl::Reference< Provider > Manager::loadProvider(OUString const & uri) { "unoidl", "FileFormatException \"" << e.getDetail() << "\", retrying <" << uri << "> as legacy format"); - return new detail::LegacyProvider(this, uri); + return new detail::LegacyProvider(*this, uri); } } -- cgit