summaryrefslogtreecommitdiff
path: root/unoidl
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2014-05-23 13:43:40 +0200
committerStephan Bergmann <sbergman@redhat.com>2014-05-23 13:44:03 +0200
commit8949bcad4095008dc147c6fd6e633c177144dfa8 (patch)
tree46f71100c7c8100d525ca8657e1f8466e5057485 /unoidl
parentd0322208bcbb35b9149b508ac2bffa667c38696f (diff)
Remove circular references between unoidl::Manager and its providers
Change-Id: Ic6ad3e2c7f69dd123077a913f35f1971f1e8ca13
Diffstat (limited to 'unoidl')
-rw-r--r--unoidl/source/legacyprovider.cxx7
-rw-r--r--unoidl/source/legacyprovider.hxx5
-rw-r--r--unoidl/source/sourcetreeprovider.cxx5
-rw-r--r--unoidl/source/sourcetreeprovider.hxx5
-rw-r--r--unoidl/source/unoidl.cxx4
5 files changed, 11 insertions, 15 deletions
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<Manager> 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<Entity> SourceTreeProvider::findEntity(OUString const & name)
ent = new SourceModuleEntity;
} else {
uri += ".idl";
- SourceProviderScannerData data(manager_);
+ SourceProviderScannerData data(&manager_);
if (parse(uri, &data)) {
std::map<OUString, SourceProviderEntity>::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<Manager> const & manager, OUString const & uri);
+ SourceTreeProvider(Manager & manager, OUString const & uri);
// throws FileFormatException:
virtual rtl::Reference<MapCursor> createRootCursor() const SAL_OVERRIDE;
@@ -34,7 +33,7 @@ public:
private:
virtual ~SourceTreeProvider() throw ();
- rtl::Reference<Manager> manager_;
+ Manager & manager_;
OUString uri_;
mutable std::map< OUString, rtl::Reference<Entity> > 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);
}
}